[CF994B] Knights of a Polygonal Table - 贪心,堆
有 n 个骑士想决战。每个骑士都有能力值(互不相同),且身上带有一些金币。如果骑士 A 的能力值大于骑士 B ,那么骑士 A 就可以杀死骑士 B ,并获得骑士 B 身上的所有金币。但就算是骑士也不会残忍过度,他们最多只会杀死 k 个骑士。对于每一位骑士,请你求出在杀掉所有他能杀的人(只有他能杀人别人不动)后他身上金币的最大值。
Solution
注意到“互不相同”这个弱化条件,考虑对能力值从小到大排序,那么每个骑士能且只能杀他前面的人。所以动态维护前 \(k\) 大和就好了
(题意有点神仙)
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 100005;
struct knight {
int p,c,ans,id;
bool operator < (const knight &x) const {
return c > x.c;
}
} a[N];
int n,k,ans[N];
bool cmp(const knight &x, const knight &y) {
return x.p < y.p;
}
signed main() {
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=1;i<=n;i++) a[i].id=i;
for(int i=1;i<=n;i++) cin>>a[i].p;
for(int i=1;i<=n;i++) cin>>a[i].c;
sort(a+1,a+n+1,cmp);
priority_queue <knight> q;
int sum=0;
for(int i=1;i<=n;i++) {
a[i].ans = sum;
sum += a[i].c;
q.push(a[i]);
if(q.size()>k) {
sum -= q.top().c;
q.pop();
}
}
for(int i=1;i<=n;i++) ans[a[i].id]=a[i].ans+a[i].c;
for(int i=1;i<=n;i++) cout<<ans[i]<<" ";
}
[CF994B] Knights of a Polygonal Table - 贪心,堆的更多相关文章
- CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
Knights of a Polygonal Table time limit per test 1 second memory limit per test 256 megabytes input ...
- [C++]Knights of a Polygonal Table(骑士的多角桌)
[程序结果:用例未完全通过,本博文仅为暂存代码之目的] /* B. Knights of a Polygonal Table url:http://codeforces.com/problemset/ ...
- Knights of a Polygonal Table CodeForces - 994B (贪心)
大意:n个骑士, 每个骑士有战力p, 钱c, 每个骑士可以抢战力比他低的钱, 每个骑士最多抢k次, 对每个骑士求出最大钱数 按战力排序后, 堆维护动态前k大即可 #include <iostre ...
- CodeForces 994B Knights of a Polygonal Table(STL、贪心)
http://codeforces.com/problemset/problem/994/B 题意: 给出n和m,有n个骑士,每个骑士的战力为ai,这个骑士有bi的钱,如果一个骑士的战力比另一个骑士的 ...
- Codeforces 994B. Knights of a Polygonal Table
解题思路 将骑士按力量从小到大排序,到第i个骑士的时候,前面的i-1个骑士他都可以击败,找出金币最多的k个. 用multiset存金币最多的k个骑士的金币数,如果多余k个,则删除金币数最小的,直到只有 ...
- POJ2942 Knights of the Round Table[点双连通分量|二分图染色|补图]
Knights of the Round Table Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 12439 Acce ...
- POJ 2942 Knights of the Round Table
Knights of the Round Table Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 10911 Acce ...
- poj 2942 Knights of the Round Table 圆桌骑士(双连通分量模板题)
Knights of the Round Table Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 9169 Accep ...
- 【LA3523】 Knights of the Round Table (点双连通分量+染色问题?)
Being a knight is a very attractive career: searching for the Holy Grail, saving damsels in distress ...
随机推荐
- clr via c# clr寄宿和AppDomain (一)
1 clr寄宿-----.net framework在windows平台的顶部允许.者意味着.net framework必须用windows能理解的技术来构建.所有托管模块和程序集文件必须使用wind ...
- RxHttp 让你眼前一亮的Http请求框架
1.前言 RxHttp在今年4月份一经推出,就受到了广大Android 开发者的喜爱,截止本文发表在github上已有1100+star,为此,我自己也建个RxHttp&RxLife 的群(群 ...
- 127.0.0.1 拒绝了我们的连接请求--访问本地IP时显示拒绝访问
问题描述 今天在访问http://127.0.0.1时,浏览器显示"127.0.0.1 拒绝了我们的连接请求",需要设置浏览器设置 解决方法 1.打开控制面板,搜索"程序 ...
- PMP--2. 项目启动前准备工作
####################################################### 概述:在第一章节的1.1-1.7中基本都是介绍的<PMBOK>的理论概念以及 ...
- vue搭建手顺
1.环境准备:node.js vue-cli: $ npm install vue-cli -g 2.建立项目目录:vuedemo,并cd到该目录下 3.$ vue init webpack vu ...
- SpringCloud之eureka注册中心入门
eureka注册中心 一.基本概念 SpringCloud封装 了Netflix公司的eureka作为自己微服务的注册中心.这个注册中心和dubbo中的zookeeper很相似,简单来说,只要你可以将 ...
- Java基础之一、入门知识
资料来源于<明解 Java>日本作者 写的很详细 1:命令---java 类名 该命令不是去执行类名.class文件(文件名和类名有可能不一致),切记是表示执行具体的类: 2:“字符”+数 ...
- MySQL 的一条语句是怎么执行的
该文为< MySQL 实战 45 讲>的学习笔记,感谢查看,如有错误,欢迎指正 一.MySQL 的基础架构 以下就是 MySQL 的基础架构图. 在 Linux 中安装 MySQL 时,最 ...
- 硬件知识整理part1--电阻E系列行业规范
仁者,人心也,义者,人路也. --孟子 “ E ”表示“指数间距”(Exponential Spacing) 在上个20世纪的电子管时代,电子元器件厂商为了便于元件规格的管理和选用.大规模生产的电 ...
- element-ui 和ivew-ui的table导出export纯前端(可用)
一.element-ui 1.安装依赖Element组件库中的el-table表格导出需要的主要是两个依赖:(xlsx 和 file-saver) npm install --save xlsx fi ...