蓝书 第一章 例题1 勇者斗恶龙
Posted 行码棋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝书 第一章 例题1 勇者斗恶龙相关的知识,希望对你有一定的参考价值。
思路:
分别将头按直径从小到大和骑士按能力从小到大排序,设置一个指向头的直径大小的标志。
对于每个骑士来说,如果骑士的能力大于头的直径,那么这个头就会被砍掉,标志就要移到下一个头上。
最后判断标志的数与总头数的大小比较,如果cur小于等于n,说明cur指向的头没有被砍掉,所有头没有被砍完。否则就可以砍完。
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 2e4+5;
ll a[N],b[N];
int main()
{
ll n,m;
while(cin>>n>>m)
{
if(n==0&&m==0) break;
for(int i=1;i<=n;i++) cin>>a[i];
for(int j=1;j<=m;j++) cin>>b[j];
sort(a+1,a+1+n);
sort(b+1,b+1+m);
ll cur=1,s=0;
for(int i=1;i<=m;i++)
{
if(b[i]>=a[cur])
{
s += b[i];//记录需要的金币
if(++cur==n+1)break;//头砍完退出循环
}
}
if(cur<=n)cout<<"Loowater is doomed!\\n";
else cout<<s<<'\\n';
}
return 0;
}
以上是关于蓝书 第一章 例题1 勇者斗恶龙的主要内容,如果未能解决你的问题,请参考以下文章