CodeForces 799B (B) T-shirt buying
分析
本题实质上就是对数据处理一下就可以了
就是数据结构实现题
我们要求对应索引下按照某种排序规则的线性表时 取最优时 可以用堆
每次拿出一个元素 堆内元素调整顺序
然后用三个堆 就可以表示三张表 每次我们得到顾客的一个喜欢颜色 就可以利用这个颜色去查堆
找到就输出 找不到就输出-1
本题在于把对应颜色作为下标 将元素存进来
用的时候就查表就行了减少遍历次数 将一张大表分成不同颜色的小表
code
#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
struct clo{int p,id;clo(int pr,int i):p(pr),id(i){}friend bool operator<(const clo & cc,const clo & dd){return dd.p < cc.p;}
};
const int maxn = 200010;
priority_queue<clo>q[4];
int c[maxn],ans[maxn];
bool bok[maxn];int main()
{int t,n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&c[i]);for(int i=1;i<=n;i++){scanf("%d",&t);q[t].push(clo(c[i],i));}for(int i=1;i<=n;i++){scanf("%d",&t);q[t].push(clo(c[i],i));}int m;scanf("%d",&m);for(int i=1;i<=m;i++){int t;scanf("%d",&t);if(q[t].empty())ans[i] = -1;else{while(!q[t].empty()&&bok[q[t].top().id])q[t].pop();if(q[t].empty()) ans[i]=-1;else {ans[i] = q[t].top().p;bok[q[t].top().id]=1;q[t].pop(); }} }for(int i=1;i<=m;i++)printf("%d%c",ans[i],i==m?'\n':' ');return 0;
}
CodeForces 799B (B) T-shirt buying相关推荐
- Codeforces Round #644 (Div. 3) D.Buying Shovels
Codeforces Round #644 (Div. 3) D.Buying Shovels 题目链接 Polycarp wants to buy exactly n shovels. The sh ...
- CodeForces 841B (B) 博弈
题意 定义A把取数列中区间和为奇数的元素取出来 B把数列中区间长度为偶数的区间删除 那么谁先面临无数可拿的局面为输 输出赢家 A先取 分析 分析可知本题如果区间中每一个数是偶数那么B可以一次取完 则A ...
- CodeForces 841C (C) Leha and Function 贪心
题意 定义F(n,k)F(n,k)表示1-n的数列中以k为子集总个数的最小值 现有A,B数组 让我们重新排列A 使得sigma[1 len]F(ai,bi)sigma[1 ~ len]F(ai,bi) ...
- Codeforces 982E Billiard 扩展欧几里德
原文链接http://www.cnblogs.com/zhouzhendong/p/9055728.html 题目传送门 - Codeforces 928E 题意 一束与坐标轴平行或者成$45^\ci ...
- c语言建立小根堆的算法,小根堆(Heap)的详细实现
堆的介绍 Heap是一种数据结构具有以下的特点: 1)完全二叉树 2)heap中存储的值是偏序 Min-heap: 父节点的值小于或等于子节点的值 Max-heap: 父节点的值大于或等于子节点的值 ...
- Test传送门(更新中)
一.Codeforces传送门: Avito Code Challenge 2018 题解传送门 Codeforces Round #485 (Div. 2) 题解传送门 二.hihocod ...
- 【树状数组】CF961E Tufurama
挺巧妙的数据结构题(不过据说这是一种套路? E. Tufurama One day Polycarp decided to rewatch his absolute favourite episode ...
- 编辑器统一 快捷键
1.编辑器统一 快捷键 向下复制一行(或块) ctrl+D 查找(文件中查找) ctrl+F (ctrl+shift+F) 查找下一个(上一个) F3 (shift+F3) 替换(文件中替换) ct ...
- 新概念英语(第一册)复习(原文及全文翻译)——Lesson 1 - Lesson 30
Lesson 1 Excuse me! [课文] Excuse me! Yes? Is this your handbag? Pardon? Is this your handbag? Yes, it ...
最新文章
- java一天一次_做JAVA两年,月薪18k,这些自学心得你绝对值得借鉴
- android 锁屏
- python3中unicode怎么写_详解python3中ascii与Unicode使用
- python编程基础课后答案-中国大学慕课moocPython编程基础课后答案
- python实训第七天
- controller requestparam不传参数空指针异常_看完这篇文章,让你轻松学会Java异常处理...
- mybatis常见问题处理:批量操作,传递多个参数,like语句写法等等
- Oracle查询和解锁表
- 使用Selenide进行有效的UI测试
- 使用map的find头文件_C++ map用法
- 实验2 格式化输入输出和分支语句
- 用html css设计网站,HTMLCSS构建和设计网站
- 护卫神 mysql 升级_护卫神php套件 php版本升级方法
- 微信打飞机游戏思路复习
- 看,程序员是如何白嫖百度文库的!
- go语言字符串换行_Go语言字符串
- 新手怎么通过网络推广引流
- USACO 1.1.2 - Greedy Gift Givers(模拟)
- 基于深度学习模型(1D CNN)实现钓鱼网站检测
- Android 10.0 webview版本升级的方法
热门文章
- 2016年5月28日(项目任务)
- SAP 那点事BW HANA
- 04级函授计算机等级考试练习.rar
- 将SQL-SERVER逆向工程导入Power-Design中并给表的字段添加注释
- @Value(${xxxx})注解的配置及使用
- mybatis BindingException: Invalid bound statement (not found)
- adb 启动命令,pc启动两个微信,INSTALL_FAILED_CONFLICTING_PROVIDER
- php 页面加载进度条,HTML5/CSS3 网页加载进度条的实现,下载进度条等经典案例
- java搭建tcp客户端_【Java学习笔记】TCP客户端/服务器端
- 2021-08-08