Codeforces C. Strange Birthday Party(cin读入数据超时)
题目分析:
有一个小朋友要过生日,有n个朋友会过来,给这n个朋友一人一个编号,有m个礼物,我们需要给每个朋友礼物或金钱,有两种给法:
(1)给定这个朋友一个礼物(礼物的下标必须小于等于这个小朋友的编号)
(2)给定这个小朋友金钱(也就是这个小朋友的编号对应的礼物的金钱)
这道题目需要使用贪心来做,贪心做法为:我们将每个人的编号按照从大到小
排序,然后比较送礼物还是送金钱更便宜,选择更便宜的做法即可。
证明:
假设ki > kj,那么对应的礼物的价钱 c[ki] > c[kj] , 假设i > j >= 1,那么对于这两个朋友有两种选择,选择最便宜的礼物c1或者选择对应编号的礼物的价钱c[ki] > c[kj] ,假如ki选择最便宜的礼物c1,相对于给金钱可以减少的钱为c[ki] - c[1] , 对于kj来说,减少的钱为c[kj] - c[1] , 那么让ki选择最便宜的礼物显然最优。
读入数据超过10^5,所以使用cin读入会超时,两种解决办法:
(1)scanf读入
(2)关闭cin和stdio的同步
#include <iostream>
#include <algorithm>#define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)using namespace std;const int N = 300010;int k[N] , c[N];void solve()
{int n , m;cin >> n >> m;for(int i = 1; i <= n; i++) cin >> k[i];for(int i = 1; i <= m; i++) cin >> c[i];// 对每个人的序号从大到小进行排序sort(k+1 , k+1+n , greater<int>());long long res = 0;int idx = 1; // 记录取的礼物的下标 for(int i = 1; i <= n; i++) {if(c[idx] < c[k[i]]){res += c[idx++];}else{res += c[k[i]];}}cout << res << endl;
}int main()
{FAST; int t; cin >> t;while(t--) solve();return 0;
}
Codeforces C. Strange Birthday Party(cin读入数据超时)相关推荐
- CodeForces - 1539F Strange Array(线段树区间合并)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...
- CodeForces - 1270D Strange Device(思维+构造)
题目链接:点击查看 题目大意:规定一个含有n个元素的数组a,每个元素互不相等,但是全部未知,现在给出一台机器,这台机器有两个参数,分别是k和m,其意义是每次可以询问k个下标,机器将给出k个下标中第m大 ...
- Codeforces Round #694 Div. 2
Codeforces Round #694 Div. 2 CodeForces 1471A Strange Partition CodeForces 1471B Strange List CodeFo ...
- C++输入cin详解
C++输入cin详解 输入原理: 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函 ...
- cin c语言中文网,c++ cin详解
参考地址:http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当 ...
- C++输入cin应用详解
输入原理: 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函数是直接从缓冲区取数据 ...
- 【摘录】《程序设计导引及在线实践》之排列
问题描述 大家知道,给出正整数n,则1 到n 这n 个数可以构成n!种排列,把这些排列按照从 小到大的顺序(字典顺序)列出,如n=3 时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2 ...
- Luogu P4231 三步必杀 (差分)
目录 题目 题解 题目 题目链接 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的鬼 ...
- P4231 三步必杀
P4231 三步必杀 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的鬼族和其他妖怪 ...
最新文章
- Jackson 通过自定义注解来控制json key的格式
- java方块排序_[代码全屏查看]-NxN方块排序,可自动运行
- [Redux-Observable Unit Testing] Mocking an ajax request when testing epics
- 典型案例 1:函数计算在音视频场景实践
- DDD领域驱动之干货 (一)
- freertos 创建互斥量_FreeRTOS的信号量和互斥量
- 技术沙龙 | 深度赋能AI全场景,揭秘你不知道的移动云
- 【编译原理笔记19】代码优化: 支配结点和回边,自然循环及其识别,删除全局公共子表达式和复制语句,代码移动,作用于归纳变量的强度削弱,归纳变量的删除
- EVENT ADJUST_SCN 说明 [30681.1]
- 浅谈算法和数据结构: 四 快速排序
- 模二运算,模二加减乘除
- 《昆虫记》思维导图|思维导图模板创意漂亮
- 苹果描述文件服务器证书无效,22.iOS企业版证书、描述文件过期问题解决
- ros + gazebo未报错却加载不出来机器人模型 解决办法
- java u0000_Java-从字符串中删除\ u0000
- 计算机鼠标装有,计算机插入鼠标时无法安装设备驱动程序的解决方法
- uva10827 - Maximum sum on a torus(最大子矩阵和变形)
- Divan and bitwise operations(组合数+思维)
- vue拍照功能PC+手机需要的可以看一下
- 学好mysql教材_MySQL基础学习
热门文章
- 小程序兼容各个ios版本
- 【最全】软件测试基础理论选择题(含答案)
- Python turtle 画正多边形和多角形
- B2C电子商务网站的组织架构
- 2022-10-20 Linux自带LED灯驱动gpio-leds 心跳呼吸灯heartbeat、定时器timer的使用
- JavaWeb学习:servlet
- 新浪邮箱开启POP3/SMTP服务
- Jeet – 先进,直观,灵活的 CSS 网格系统
- 报错:CMake Error at CMakeLists.txt:9 (target_link_libraries): Cannot specify link libraries for targ
- Sqoop导入Hbase案例实战