B. Knights of a Polygonal Table
1.题意
给定n个骑士,每人都有自己的武力值和若干金币,如果第一个骑士的武力值大于第二个骑士,那么第一个骑士就能获取第二个骑士的所有金币,每个骑士最多只能击败k个骑士。对于每个骑士,求出
决斗后他的金币的最大值。
2.题解
结构体存骑士的信息,显然k最小,就以武力值排序,找到比他武力值小的所有骑士,然后用优先队列动态维护这些骑士金钱前k大的即可。
3.代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include<bits/stdc++.h> using namespace std; #define ll long long const int maxn = 1e5 + 5; int n, m, a[maxn]; ll ans[maxn]; struct knight { int pow , coin, index; knight() { index = pow = coin = 0; } }k[maxn]; struct node { priority_queue< int >q; ll sum; }ss; bool cmp(knight a, knight b) { return a. pow < b. pow ; } int main() { scanf ( "%d%d" , &n, &m); for ( int i = 1; i <= n; i++) { scanf ( "%d" , &k[i]. pow ); a[i] = k[i]. pow ; } for ( int i = 1; i <= n; i++) { scanf ( "%d" , &k[i].coin); k[i].index = i; } if (m == 0) { for ( int i = 1; i <= n; i++) { printf ( "%d " , k[i].coin); } return 0; } if (n == 1) { printf ( "%d " , k[1].coin); return 0; } sort(k + 1, k + n + 1, cmp); for ( int i = 1; i <= m + 1; i++) { for ( int j = 1; j <= i; j++) { ans[k[i].index] += (ll)k[j].coin; } } for ( int i = 1; i <= m; i++) { ss.q.push(-k[i].coin); ss.sum += k[i].coin; } if (k[m + 1].coin > -ss.q.top()) { ss.sum -= -ss.q.top(); ss.q.pop(); ss.q.push(-k[m + 1].coin); ss.sum += k[m + 1].coin; } for ( int i = m + 2; i <= n; i++) { ans[k[i].index] += k[i].coin; ans[k[i].index] += ss.sum; if (k[i].coin > -ss.q.top()) { ss.sum -= -ss.q.top(); ss.q.pop(); ss.q.push(-k[i].coin); ss.sum += k[i].coin; } } for ( int i = 1; i <= n ; i++) { printf ( "%lld " , ans[i]); } return 0; } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞