CF 799B T-shirt buying
传送门:https://www.luogu.org/problemnew/show/CF799B
题中说每一个人只要一种颜色,无论正反面,所以我们只要贪心的选包含这种颜色中且没有被别的人选过的价格最小的衣服就行了。
实现只要每一种颜色开一个优先队列,然后给每一件衣服标号,然后对于每一个人,查看他要的颜色的优先队列,如果没被选走,就拿这件衣服。
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<cctype> 7 #include<vector> 8 #include<stack> 9 #include<queue> 10 using namespace std; 11 #define enter printf("\n") 12 #define space printf(" ") 13 #define Mem(a) memset(a, 0, sizeof(a)) 14 typedef long long ll; 15 typedef double db; 16 const int INF = 0x3f3f3f3f; 17 const db eps = 1e-8; 18 const int maxn = 2e5 + 5; 19 inline ll read() 20 { 21 ll ans = 0; 22 char ch = getchar(), last = ' '; 23 while(!isdigit(ch)) {last = ch; ch = getchar();} 24 while(isdigit(ch)) 25 { 26 ans = ans * 10 + ch - '0'; ch = getchar(); 27 } 28 if(last == '-') ans = -ans; 29 return ans; 30 } 31 inline void write(ll x) 32 { 33 if(x < 0) x = -x, putchar('-'); 34 if(x >= 10) write(x / 10); 35 putchar('0' + x % 10); 36 } 37 38 int n, m; 39 struct Node 40 { 41 int id; 42 ll p; 43 bool operator < (const Node& other)const 44 { 45 return p > other.p ||(p == other.p && id > other.id); 46 } 47 }t[maxn]; 48 priority_queue<Node> sh[5]; 49 bool vis[maxn]; 50 51 int main() 52 { 53 n = read(); 54 for(int i = 1; i <= n; ++i) {t[i].p = read(); t[i].id = i;} 55 for(int i = 1; i <= n; ++i) {int a = read(); sh[a].push(t[i]);} //没必要记录没每一件衣服的颜色 56 for(int i = 1; i <= n; ++i) {int b = read(); sh[b].push(t[i]);} 57 m = read(); 58 for(int i = 1; i <= m; ++i) 59 { 60 bool flag = 0; 61 int c = read(); 62 while(!sh[c].empty()) 63 { 64 Node x = sh[c].top(); sh[c].pop(); 65 if(!vis[x.id]) {vis[x.id] = 1; flag = 1; write(x.p); enter; break;} 66 } 67 if(!flag) {printf("-1\n"); continue;} 68 } 69 return 0; 70 }
转载于:https://www.cnblogs.com/mrclr/p/9414659.html
CF 799B T-shirt buying相关推荐
- CF - E95(div2) -- A. Buying Torches【简单思维】
题意 起始你有一根木棍,让你制造出K个火炬,每个火炬由一根棍子和一块煤制作而成: 你有下面两种交易方式: 1.1根棍子换x根棍子: 2.y根棍子换1块煤. 每次只能进行一种交易方式,问制作出k个火炬需 ...
- CodeForces 799B (B) T-shirt buying
分析 本题实质上就是对数据处理一下就可以了 就是数据结构实现题 我们要求对应索引下按照某种排序规则的线性表时 取最优时 可以用堆 每次拿出一个元素 堆内元素调整顺序 然后用三个堆 就可以表示三张表 每 ...
- CF 546 div.2 D. Nastya Is Buying Lunch(思维+贪心)
为数不多的纯靠自己想出来的DIV2 D题 题意是 给出一个排好的队列,以及m个可交换的操作(u,v) :当u在v的前面时,u和v可直接交换位置 问最后一个人(编号Pn)最多可以向前几个位置. 在正式解 ...
- TC(SRM)和CF入门教程for ACMer[转载]
一.TC基本介绍TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM).SRM的规则总结起来就是一句话:75分钟做完3道难度 ...
- TC(SRM)和CF入门教程for ACMer
一.TC基本介绍 TC的网址www.topcoder.com/tc,我们一般提到TC的时候是特指其中的Single Round Match(SRM). SRM的规则总结起来就是一句话:75分钟做完3道 ...
- 『参考』.net CF组件编程(4)——为自定义组件添加工具箱图标!
前言: 在前三篇的文章中,和大家一起创建了一个用于TCP连接检测的小组件,如果你记不得了,可以通过以下链接去回顾一下: 『参考』.net CF组件编程(1)--基础之后 『参考』.net CF组件编程 ...
- bzoj2020[Usaco2010 Jan]Buying Feed, II*
bzoj2020[Usaco2010 Jan]Buying Feed, II 题意: FJ开车去买食物,如果他的车上有X份食物.每走一里就花费X元. 城市总共E里路,FJ从0开始走,到E结束(不能往回 ...
- OC对象 vs CF对象
2019独角兽企业重金招聘Python工程师标准>>> OC对象 vs CF对象 在ARC场景下,对象所有权没有转换 使用__bridge关键字即可实现CF对象和OC对象之间的自由转 ...
- CF 990A. Commentary Boxes【数学/模拟】
[链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...
最新文章
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
- 机器学习中常用的高级数据结构和数据分析包工具——pandas
- 应用量化时代 | 微服务架构的服务治理之路
- Boost.MultiIndex 使用随机访问索引的示例
- WebSocket原理及使用场景(转载)
- 第三章:Java_面向对象编程(一)
- React使用的扩展
- oracle用户获取datameta权限,Oracle数据库提权(低权限提升至dba)
- linux文件查找-find和locate
- 如何去除图片连接的边框线
- 银联卡跨行业务地区代码标准JSON版
- 整车控制器(VCU/HCU)开发咨询服务
- 浅析激光导航agv的市场前景
- 合成孔径 saft matlab,合成孔径聚焦超声成像研究
- 深度学习:Nvidia显卡驱动安装
- python-flask 设置网页保留缓存静态文件时间
- 面试题之心理测试题及答案
- ubuntu编辑只读文件_Ubuntu linux vim 修改只读文件 修改Apache2端口号 ports.conf
- 软件工程网络15个人作业3(201521123010徐璐琳)
- 荣耀轻薄本MagicBook 14使用体验分享 性能拉满续航无敌
热门文章
- msp430项目编程44
- 非常优秀的swiper插件————幻灯片播放、图片轮播
- Asp.Net访问Oracle 数据库 执行SQL语句和调用存储过程
- 数据结构与算法(updating....)
- 【Vue2.0】—生命周期函数(十)
- 句句真研—每日长难句打卡Day13
- JavaScript学习 第二课(二)
- HTML+CSS实现品优购登录界面
- 为何我的苹果手机,每次打开软件都提示要登录ID帐号,而且软件打不开
- 我儿子今年初二,成绩非常差,可能上不了高中,我该怎么办?