【题解】极品飞车

news/2024/11/22 21:55:30/

题目描述

Bessie想参加赛车比赛,他的赛车质量是M(1≤M≤1000),马力是F(1≤F≤1000000)。为了提升赛车性能,他可以到加工店添加一些零件。加工店有N(1≤N≤20)种零件,编号1至N,每种零件只有一件。

零件P_i能增加的马力是F_i(1≤F_i≤1000000),它的质量是M_i(1≤M_i≤1000)。根据牛顿第二定理F=MA,( F是力,M是质量,A是加速度)。Bessie想让他的车的加速度最大(如果有多种方案,让赛车的质量最小),他应该配置哪些零件呢?

例如:开始赛车的F=1500,M=100。有4种零件:

i  F_i  M_i

1 250 25

2 150 9

3 120 5

4 200 8

假如只配置零件2,那么加速度将会是:(1500+150)/(100+9)=1650/109=15.13761。

下面的表格用4位二进制数表示配置或不配置零件,得到各种各样的加速度:

状态    F    M    F/M

0000 1500 100 15.0000

0001 1700 108 15.7407

0010 1620 105 15.4286

0011 1820 113 16.1062

0100 1650 109 15.1376

0101 1850 117 15.8120

0110 1770 114 15.5263

0111 1970 122 16.1475 <-- highest F/M

1000 1750 125 14.0000

1001 1950 133 14.6617

1010 1870 130 14.3846

1011 2070 138 15.0000

1100 1900 134 14.1791

1101 2100 142 14.7887

1110 2020 139 14.5324

1111 2220 147 15.1020

因此,应该配置零件2,3,4。

输入输出格式

输入格式:

第一行,三个整数:F,M,N;

第二至N+1行,第i行有两个整数:F_i、M_i。

输出格式:

第一至第P行,P是你要配置的零件的个数。如果不需要配置,则输出NONE。否则从小到大输出你配置的零件的下标。答案是唯一的。

输入输出样例

输入样例:
1500 100 4
250 25
150 9
120 5
200 8
输出样例:
2
3
4
我们可以用二进制枚举求出它的全排列,再一个个判断
具体程序如下:
#include<iostream>
using namespace std;
int f,m,n,array[25],memory,ans[25];
typedef struct
{int force;int weight;float speed;
}node;
node con[25];
void add(int r,int n,int st)
{while(array[r]>n){--array[r];++array[r-1];--r;--n;}for(register int i=r+1;i<=st;++i) array[i]=array[i-1]+1;
}
float maxx;
int main()
{cin>>f>>m>>n;for(register int i=1;i<=n;++i){cin>>con[i].force>>con[i].weight;con[i].speed=float(con[i].force+f)/(con[i].weight+m);}for(register int i=1;i<n;++i){float maxf=f;float maxm=m;for(register int j=0;j<=i;++j){array[j]=j;maxf+=con[array[j]].force;maxm+=con[array[j]].weight;}if(float(maxf/maxm)>maxx){maxx=float(maxf/maxm);for(register int j=1;j<=i;++j) ans[j]=array[j];memory=i;}maxf=f;maxm=m;while(array[0]==0){maxf=f;maxm=m;++array[i];add(i,n,i);if(array[0]!=0) break;for(register int j=1;j<=i;++j){maxf+=con[array[j]].force;maxm+=con[array[j]].weight;}if(float(maxf/maxm)>float(maxx)){maxx=float(maxf/maxm);for(register int j=1;j<=i;++j) ans[j]=array[j];memory=i;}}} if(f/m>maxx){cout<<"NONE";return 0;}for(register int i=1;i<=memory;++i) cout<<ans[i]<<endl;
}

 

 

转载于:https://www.cnblogs.com/2021-yanghaoran/p/10676580.html


http://www.ppmy.cn/news/354351.html

相关文章

极品飞车无限狂飚连不上服务器,极品飞车无限狂飙连接不上 | 手游网游页游攻略大全...

发布时间&#xff1a;2015-12-01 由于游戏过程中必须是处于联网状态,所以玩家经常会碰上连接不上服务器的情况,真是让人十分头疼.下面就为玩家介绍一下连接不上服务器的解决方法. 相信大家都知道 标签&#xff1a; 游戏攻略 攻略秘籍 发布时间&#xff1a;2015-12-23 极品飞车1…

win10玩不了极品飞车ol怎么办?

极品飞车是非常经典的赛车竞技游戏&#xff0c;最近有玩家想要上线体验的时候发现自己的win10玩不了极品飞车ol&#xff0c;那么这个问题该怎么解决呢&#xff1f;下面就跟着小编一起来看看如何解决吧。 方法一&#xff1a; 1、首先&#xff0c;这款游戏的配置要求还是比较高的…

极品飞车ol服务器维护,极品飞车OL进不去游戏及解决方法

极品飞车OL进不去游戏,相信很多小伙伴都想知道关于极品飞车OL进不去游戏的信息&#xff0c;近期很多玩家都反映极品飞车ol进不去游戏&#xff0c;下面小编带给大家有关极品飞车OL进不去游戏相关信息&#xff0c;一起来看看吧~ 极品飞车OL进不去游戏及解决方法&#xff1a;精彩内…

极品飞车ol 与服务器连接不稳定,极品飞车ONLINE燃擎封测常见问题FAQ

【关于服务器】 Q&#xff1a;封测版本开放了哪些服务器? A&#xff1a;封测版本开放两个服务器&#xff0c;分别是燃擎一区和燃擎二区 Q&#xff1a;两个服务器有什么区别? A&#xff1a;在用户体验部分&#xff0c;两个服务器没有任何区别。 Q&#xff1a;需要怎样配置的机…

极品飞车ol 与服务器连接不稳定,极品飞车OL进不去游戏及解决方法 玩不了怎么办?...

by 互联网 Jul.4,2017 极品飞车 ol 今日已支持下载供玩家体验了&#xff0c;但是近期很多玩家都反映极品飞车 ol 进不去游戏&#xff0c;极品飞车 ol 玩不了怎么回事 ? 一起来看看哪里出了问题吧 ! 极品飞车 OL 进不去游戏及解决方法&#xff1a; 官方配置要求如下。《…

极品飞车服务器维修好久,极品飞车无限狂飙被封锁多久能解 | 手游网游页游攻略大全...

发布时间&#xff1a;2016-01-07 极品飞车19新手初期玩法详解,新手初期注意事项一览.不少新手玩家在接触的时候不知道怎么上手,下面就为大家介绍一样快速上手的注意事项.一起来看看吧. 1 车子永远没有最好的,不要盲目跟风就上lp ... 标签&#xff1a; 游戏攻略 游戏秘籍 极品飞…

mplayer全参数

mplayer(1) 电影播放器 MPlayer(1) D0 mplayer - 影视播放器 mencoder - 影视编解码器 B8 mplayer [选项] [文件URL播放列表-] mplayer [选项] 文件1 [分选项] [文件2] [分选项] mplayer [选项…

佳能M50相机MP4视频损坏代码修复参考编码参数

佳能M50相机录了几段MP4视频后&#xff0c;由于误操作视频删除了&#xff0c;而且删除之后有录制过了其它视频内容。由于丢失的视频比较珍贵&#xff0c;想尽了各种方法来进行恢复&#xff0c;但是都未能成功&#xff0c;要么找不到视频&#xff0c;要么找出来的视频格式转变&a…