题目分析:
有一个小朋友要过生日,有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读入数据超时)相关推荐

  1. CodeForces - 1539F Strange Array(线段树区间合并)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...

  2. CodeForces - 1270D Strange Device(思维+构造)

    题目链接:点击查看 题目大意:规定一个含有n个元素的数组a,每个元素互不相等,但是全部未知,现在给出一台机器,这台机器有两个参数,分别是k和m,其意义是每次可以询问k个下标,机器将给出k个下标中第m大 ...

  3. Codeforces Round #694 Div. 2

    Codeforces Round #694 Div. 2 CodeForces 1471A Strange Partition CodeForces 1471B Strange List CodeFo ...

  4. C++输入cin详解

    C++输入cin详解 输入原理: 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函 ...

  5. cin c语言中文网,c++ cin详解

    参考地址:http://www.cnblogs.com/A-Song/archive/2012/01/29/2331204.html 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当 ...

  6. C++输入cin应用详解

    输入原理: 程序的输入都建有一个缓冲区,即输入缓冲区.一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据.正因为cin函数是直接从缓冲区取数据 ...

  7. 【摘录】《程序设计导引及在线实践》之排列

    问题描述 大家知道,给出正整数n,则1 到n 这n 个数可以构成n!种排列,把这些排列按照从 小到大的顺序(字典顺序)列出,如n=3 时,列出1 2 3,1 3 2,2 1 3,2 3 1,3 1 2 ...

  8. Luogu P4231 三步必杀 (差分)

    目录 题目 题解 题目 题目链接 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的鬼 ...

  9. P4231 三步必杀

    P4231 三步必杀 题目背景 (三)旧都 离开狭窄的洞穴,眼前豁然开朗. 天空飘着不寻常的雪花. 一反之前的幽闭,现在面对的,是繁华的街市,可以听见酒碗碰撞的声音. 这是由被人们厌恶的鬼族和其他妖怪 ...

最新文章

  1. Jackson 通过自定义注解来控制json key的格式
  2. java方块排序_[代码全屏查看]-NxN方块排序,可自动运行
  3. [Redux-Observable Unit Testing] Mocking an ajax request when testing epics
  4. 典型案例 1:函数计算在音视频场景实践
  5. DDD领域驱动之干货 (一)
  6. freertos 创建互斥量_FreeRTOS的信号量和互斥量
  7. 技术沙龙 | 深度赋能AI全场景,揭秘你不知道的移动云
  8. 【编译原理笔记19】代码优化: 支配结点和回边,自然循环及其识别,删除全局公共子表达式和复制语句,代码移动,作用于归纳变量的强度削弱,归纳变量的删除
  9. EVENT ADJUST_SCN 说明 [30681.1]
  10. 浅谈算法和数据结构: 四 快速排序
  11. 模二运算,模二加减乘除
  12. 《昆虫记》思维导图|思维导图模板创意漂亮
  13. 苹果描述文件服务器证书无效,22.iOS企业版证书、描述文件过期问题解决
  14. ros + gazebo未报错却加载不出来机器人模型 解决办法
  15. java u0000_Java-从字符串中删除\ u0000
  16. 计算机鼠标装有,计算机插入鼠标时无法安装设备驱动程序的解决方法
  17. uva10827 - Maximum sum on a torus(最大子矩阵和变形)
  18. Divan and bitwise operations(组合数+思维)
  19. vue拍照功能PC+手机需要的可以看一下
  20. 学好mysql教材_MySQL基础学习

热门文章

  1. 小程序兼容各个ios版本
  2. 【最全】软件测试基础理论选择题(含答案)
  3. Python turtle 画正多边形和多角形
  4. B2C电子商务网站的组织架构
  5. 2022-10-20 Linux自带LED灯驱动gpio-leds 心跳呼吸灯heartbeat、定时器timer的使用
  6. JavaWeb学习:servlet
  7. 新浪邮箱开启POP3/SMTP服务
  8. Jeet – 先进,直观,灵活的 CSS 网格系统
  9. 报错:CMake Error at CMakeLists.txt:9 (target_link_libraries): Cannot specify link libraries for targ
  10. Sqoop导入Hbase案例实战