题意:
给定龙的脑袋数,给定勇士的能力值,求最小的花费。
思路:
直接贪心就好,每次尽量选能够打败当前龙的花费最小的那个勇士。
常见的错误:
1.不排序直接上
讲道理,这题需要先排序,然后才能够开始贪心。不然题目的数据,可能是乱序的。
2.不进行初始化
每次都需要初始化一下。将全局变量重新置零,重新初始化。
可以每次多输入几次数据检测一下。
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=30000;
int n,m;
int t[N],po[N];
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0)
break;
for(int i=0;i<n;i++)
{
scanf("%d",&t[i]);
}
for(int i=0;i<m;i++)
{
scanf("%d",&po[i]);
}
sort(t,t+n);
sort(po,po+m);
int j=0;
int ans=0;
int ff=0;
for(int i=0;i<n;i++)
{
ff=0;
for(;j<m;j++)
{
if(po[j]>=t[i])
{
ff=1;
ans+=po[j];
j++;
break;
}
}
if(ff==0)
break;
}
if(ff==0)
{
puts("Loowater is doomed!");
}
else
printf("%d\n",ans);
}
return 0;
}