UVA - 11292 Dragon of Loowater

    xiaoxiao2025-06-19  6

    题目大意:n 条龙和 m 个骑士,每个骑士只能砍一条龙,且当骑士的身高大于等于龙头的直径才能杀死。然后根据每个骑士的身高,国王要付出相应的金币。问是否能将龙都杀死,若可以输出金币。

    解题思路:龙和骑士分别排序,用两个指针 p q 指向两个数组,能砍死p q 同时 ++,并且金币数加上相应的身高,不能就 q++,最后若 p == n 则成功。

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int head[100000]; int knig[100000]; int cnt; int cmp(int a, int b) { return a < b; } int main() { int n, m; while (scanf("%d%d", &n, &m) != EOF && n+m) { cnt = 0; for (int i = 0; i < n; i++) scanf("%d", &head[i]); for (int i = 0; i < m; i++) scanf("%d", &knig[i]); sort(head, head+n, cmp); sort(knig, knig+m, cmp); /* for (int i = 0; i < n; i++) cout<<head[i]<<endl; */ int p = 0, q = 0; while (p != n && q != m) { if (head[p] <= knig[q]) { cnt += knig[q]; p++; } q++; } if (p == n) printf("%d\n", cnt); else printf("Loowater is doomed!\n"); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1300117.html
    最新回复(0)