1078: 傻圆儿要去哪 [积分]
时间限制: 1 Sec 内存限制: 128 MB提交: 15 解决: 6 状态
题目描述
终于放假了,-.-,经过一学期的学习傻圆儿终于可以歇歇了。
去哪里玩呢?
傻圆儿有几个想要去的地方,每个地方在每天所玩的高兴程度是不一样的。
假如放假第0天的高兴程度都为0,现在给出几个景点所玩时的高兴程度随着时间的增加率,请你帮助傻圆儿计算出第n天去哪里玩最好。
(如果高兴程度一样,她会选择景点号小的。)
输入
第一行是一个数 T T( 1≤T≤100 1≤T≤100),代表了有 T T组数据。
每组数据的开始是两个数 N N( 1≤N≤1000 1≤N≤1000), M M( 1≤M≤100000 1≤M≤100000), N N代表有 N N个地方( 1∼N 1∼N), M M代表有 M M次询问。
随后有 N N行,每行三个非负整数 ai ai, bi bi, ci ci( 0≤ai,bi,ci≤1000 0≤ai,bi,ci≤1000)表示第 i i个地方的高兴程度随时间 x x的增加率为 aix2+bix+ci aix2+bix+ci。
随后有 M M行,每行一个数 n n( 1≤n≤100 1≤n≤100),请问第 n n天傻圆儿应该去哪里。
输出
对于每组数据的 M M次询问,每次输出一个整数,表示傻圆儿应该去的地方(每个数字占一行)。
样例输入
1
2 3
3 4 6
6 2 1
1
2
3
样例输出
1
1
2
提示
注意区分增加和增加率。
#include<stdio.h>
int a[1010],b[1010],c[1010];
int hp[110];
int main(){
int T;
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
for(int i=1; i<=100;i++){
double max=0;
int s;
for(int j=1;j<=n;j++){
double t=a[j]/3.0*i*i*i+b[j]/2.0*i*i+c[j]/1.0*i;
if(t>max){
max=t;
s=j;
}
}
hp[i]=s;
}
while(m--){
int k;
scanf("%d",&k);
printf("%d\n",hp[k]);
}
}
return 0;
}