vjudge上的题目是PDF,不方便复制,这里上链接
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19048
感慨vjudge真是好东西,要不都不知道刘汝佳书上的题目要怎么刷,题目英文有点多,大意就是一只怪物n个头,m个骑士去砍头,每个头有一个值为i,能力为k的骑士每次能砍下值小于等于k的头,但同时要支付值为k的薪水,问你最省钱的方式是什么,如果砍不下所有的头,那就printf("Loowater is doomed!\n");
我们可以这样想,既然到了最后每颗头都是要被砍下来的,那每颗头就应该选一个能砍下自己的最差的骑士,如果最后发现骑士没了,就说明怪物杀不死。
# include <cstdio>
# include <algorithm>
using namespace std;
const int size = 20005;
int main()
{
int head[size],knight[size];
int n,m,i,j,cnt;
while (~scanf("%d%d",&n,&m)&&n)
{
for (i=0;i<n;i++)
scanf("%d",head+i);
for (j=0;j<m;j++)
scanf("%d",knight+j);
sort(head,head+n);
sort(knight,knight+m);
cnt = i = j = 0;
while (i<n&&j<m)
{
if (head[i]<=knight[j])
cnt += knight[j],i++,j++;
else
j++;
}
if (i>=n)
printf("%d\n",cnt);
else
printf("Loowater is doomed!\n");
}
return 0;
}