Pro.ID
传送门:百度之星
1001 Drink
Problem Description
我们有 n 种不同的饮料,每种饮料有无限多瓶,第 i 种饮料一瓶提供 x[i] 毫升的水分,包含 y[i] 卡路里。
现在我们需要选择一种饮料一直喝,直到补充了至少 m 毫升的水分,我们想使得摄入的卡路里总和最小。请求出这个最小值。
一旦打开一瓶饮料,就一定要喝完。
Input
第一行一个整数 test(1≤test≤100) 表示数据组数。
对于每组数据,第一行两个整数 n,m(1≤n≤100,1≤m≤10000)。
接下来 n 行,每行两个整数 x[i], yi。
Output
对于每组数据,一行一个整数表示答案。
Sample Input
2
1 10
3 3
2 10
3 3
2 1
Sample Output
12 5
题解
一开始以为是完全背包问题,直接求出每一种饮料最少需要多少瓶,和最少摄入的卡路里,排序,找最小值。
#include<cstdio>
#include<algorithm>
#include<string.h>
using namespace std;
int w[300],c[300],f[300010];
int t,m,n;
int main()
{
scanf("%d",&t);
while(t--)
{
memset(f,0,sizeof(f));
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
{
scanf("%d%d",&w[i],&c[i]);
int k=m/w[i];
if(m-w[i]*k)
k++;
f[i]+=k*c[i];
}
sort(f+1,f+n+1);
printf("%d\n",f[1]);
}
return 0;
}
1002 GPA
Problem Description
小沃沃一共参加了 4 门考试,每门考试满分 100 分,最低 0 分,分数是整数。
给定四门考试的总分,请问在最优情况下,四门课绩点的和最高是多少?
分数与绩点之间的对应关系如下:
95~100 4.3
90~94 4.0
85~89 3.7
80~84 3.3
75~79 3.0
70~74 2.7
67~69 2.3
65~66 2.0
62~64 1.7
60~61 1.0
0~59 0
Input
第一行一个正整数test(1≤test≤401) 表示数据组数。 接下来 test 行,每行一个正整数 x 表示