CF1471-C. Strange Birthday Party
CF1471-C. Strange Birthday Party
题意:
你要举办一场生日派对。派对有\(n\)个人,每个人都有一个数字\(k_i\)。超市有\(m\)件礼物,购买每件礼物需要花费\(\$c_j(c_1<c_2<...<c_m)\),且每个礼物只有一件。你要给这\(n\)个人发东西,对于第\(i\)个人,你有两种选择:
1. 给第\(i\)个人发礼物,那么给这个人的礼物要求\(j<=k_i\),即礼物的编号不能超过这个人的数字\(k_i\);
2. 直接给这个人\(\$c_{k_i}\).
现在要你求出最小的花费。
思路:
按花费从小到大依次分配礼物。假设现在要分配的礼物的编号是\(cur\),利用贪心的思想,当\(cur<=k_i\)时,依次将花费最小的礼物分给\(k_i\)最大的人;当\(cur>k_i\)时,直接给这位朋友\(\$c_{k_i}\)。
原因如下:当\(cur<=k_i\)时,有\(c_{cur}<=c_{k_i}\);当\(cur>k_i\)时,有\(c_{k_i}<c_{cur}\),每次都取两者中较小的。
AC代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long ll;
const int Maxn = 300005;
int a[Maxn], b[Maxn];
void solve() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++) {
scanf("%d", a + i);
}
for (int i = 1; i <= m; i++) {
scanf("%d", b + i);
}
std::sort(a + 1, a + n + 1);
ll ans = 0;
int cur = 1;
for (int i = n; i > 0; i--) {
if (a[i] > cur) {
ans += b[cur++];
} else {
ans += b[a[i]];
}
}
printf("%lld\n", ans);
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
}
return 0;
}
CF1471-C. Strange Birthday Party的更多相关文章
- timus 1175. Strange Sequence 解题报告
1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...
- CF719C. Efim and Strange Grade[DP]
C. Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input sta ...
- HDU 1548 A strange lift (最短路/Dijkstra)
题目链接: 传送门 A strange lift Time Limit: 1000MS Memory Limit: 32768 K Description There is a strange ...
- ACM : HDU 2899 Strange fuction 解题报告 -二分、三分
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- POJ 2891 Strange Way to Express Integers(拓展欧几里得)
Description Elina is reading a book written by Rujia Liu, which introduces a strange way to express ...
- A strange lift_BFS
Problem Description There is a strange lift.The lift can stop can at every floor as you want, and th ...
- HDU 1548 A strange lift (bfs / 最短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 A strange lift Time Limit: 2000/1000 MS (Java/Ot ...
- poj 2891 Strange Way to Express Integers (非互质的中国剩余定理)
Strange Way to Express Integers Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 9472 ...
- A strange lift
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- strange error encountered today in ROS
I reinstalled my ubuntu system and also ROS. I tested slam_karto package when some strange error cam ...
随机推荐
- SDUST数据结构 - chap6 树与二叉树
判断题: 选择题: 函数题: 6-1 求二叉树高度: 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typedef char ...
- es6语法详解
什么是ECMAScript? ECMAScript是浏览器脚本语言的规范,而我们熟知的js语言,如JavaScript则是规范的具体实现.es6就好比Java的jdk. 一.es6语法详解:let声明 ...
- Django - WebSocket:dwebsocket
Django - WebSocket:dwebsocket 什么是WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换 ...
- jQ实现图片无缝轮播
在铺页面的过程中,总是会遇到轮播图需要处理,一般我是会用swiper来制作,但总会有哪个几个个例需要我自己来写功能,这里制作了一个jq用来实现图片无缝轮播的dome,分享给大家ヽ( ̄▽ ̄)ノ. dom ...
- 一文搞定全场景K3s离线安装
作者简介 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有6年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Lin ...
- U盘制作系统启动盘方法
1.下载一个UltralSO用来把CentOS系统镜像写入U盘作为启动安装盘 U盘用一个空U盘,会格式化的. 下载下来,使用试用版就行 刻录完成.
- Certbot CA 证书 https
certbot (base) a@test:~# certbot --help - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- 美团配送A/B评估体系建设与实践
https://mp.weixin.qq.com/s/v3Fvp6Hed7ZGoE8FGlGMvQ
- 字节跳动在 Go 网络库上的实践
https://mp.weixin.qq.com/s/wSaJYg-HqnYY4SdLA2Zzaw RPC 框架作为研发体系中重要的一环,承载了几乎所有的服务流量.本文将简单介绍字节跳动自研网络库 n ...
- BZOJ1031
前一段时间终于看明白了后缀数组,记录一下主要的做过的题目,主要的按照黄学长的BLOG作的,主要是为了记模板.原理还是上网自己查一下吧!代码会加简单的注释. ********************** ...