题意:有n个恶龙,有m个骑士可雇佣,每个骑士能力为x,表示可以砍掉恶龙的不超过x的头,且雇佣他需要x金币。要求砍掉恶龙所有的头且付金币最少。
类型:排序+模拟
代码:
#include #include #include using namespace std; const int maxn = 20000+5; int A[maxn]; int B[maxn]; int main(){ // freopen("in.txt", "r", stdin); int n, m; while(scanf("%d%d", &n, &m)!=EOF && (m||n)){ int i; for(i=0; i scanf("%d", &A[i]); for(i=0; i scanf("%d", &B[i]); sort(A, A+n); sort(B, B+m); int cur = 0; int cost = 0; for(i=0; i if(B[i] >= A[cur]){ cost += B[i]; if(++cur == n) break; } } if(cur < n) printf("Loowater is doomed!\n"); else printf("%d\n", cost); } return 0; }