CodeForce-799B T-shirt buying (STL_set)
有 n 件T恤。第 i 件T恤的价格为 pi 。每个T恤有两面,第 i 件T恤正面颜色为 ai ,反面颜色为 bi 。
有 m 个人想买T恤,每个人都恰好买一件。第 j 个人最喜欢颜色 cj。
一个人会选择买一件至少有一面颜色为他喜欢的颜色的,最便宜的T恤。如果没有合法的T恤,则不买。这些人按照给定的顺序来购买。
你的任务是求出每个人会花多少钱。
第一行包含一个整数 n (1 ≤ n ≤ 200 000) — 表示T恤的数量。
之后一行为 p1, p2, ..., pn (1 ≤ pi ≤ 1 000 000 000), pi 表示第 i 件T恤的价格。
之后一行为 a1, a2, ..., an (1 ≤ ai ≤ 3), ai 表示第 i 件T恤正面的颜色。
之后一行为 b1, b2, ..., bn (1 ≤ bi ≤ 3), bi 表示第 i 件T恤背面的颜色。
之后一行包含一个整数 m (1 ≤ m ≤ 200 000) — 表示消费者人数。
之后一行为 c1, c2, ..., cm (1 ≤ cj ≤ 3), where cj表示第 j 个消费者最喜欢的颜色。这些消费者会按输入的顺序一个一个来购买。
Output
一行 m 个数 — 第 j 个数表示第 j-th buyer will buy. If the j 个消费者需要花的钱数。如果不购买,输出 -1。
Example
5
300 200 400 500 911
1 2 1 2 3
2 1 3 2 1
6
2 3 1 2 1 1
200 400 300 500 911 -1
2
1000000000 1
1 1
1 2
2
2 1
1 1000000000
由于题目说了,每件衣服的价格都一定不同,所以可以用set。
c++ stl容器set成员函数:insert()--在集合中插入元素。
{
Extends the container by inserting new elements, effectively increasing the container size by the number of elements inserted.
//通过插入新元素来扩展容器,通过插入的元素数量有效地增加容器大小。
Because elements in a set are
unique, the insertion operation checks whether each inserted element is
equivalent to an element already in the container, and if so, the
element is not inserted, returning an iterator to this existing element
(if the function returns a value).
//因为集合中的元素是唯一的,所以插入操作检查每个插入的元素是否等同于已经在容器中的元素,如果是,则不插入元素,将迭代器返回到此现有元素(如果函数有返回值)。
Internally, set containers keep all their elements sorted following the criterion specified by its comparison object. The elements are always inserted in its respective position following this ordering.
//在内部,设置容器使其所有元素按照其比较对象指定的标准进行排序。 这些元件总是插入其相应的位置。
}
c++ stl容器set成员函数:empty()--如果集合为空,返回true。
c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器。
c++ stl容器set成员函数:erase()--删除集合中的元素。
#include<bits/stdc++.h>
using namespace std;
int shirts[200050];
int main()
{
int n;
cin>>n;
set<int> cost[4];
for(int i=0;i<n;i++)
cin>>shirts[i];
for(int i=0;i<2*n;i++)
{
int input;
cin>>input;
cost[input].insert(shirts[i%n]);
}
int m;
cin>>m;
while(m--)
{
int color;
cin>>color;
if(cost[color].empty()) cout<<"-1 ";
else
{
int ans= *cost[color].begin();
cout<<ans<<" ";
for(int i=1;i<=3;i++)
cost[i].erase(ans);
}
}
cout<<endl;
return 0;
}
CodeForce-799B T-shirt buying (STL_set)的更多相关文章
- 【codeforces 799B】T-shirt buying
[题目链接]:http://codeforces.com/contest/799/problem/B [题意] 告诉你每个人喜欢的衣服的颜色; 然后告诉你每件衣服的正面和背面的颜色以及它的价格; 只要 ...
- T-shirt buying CodeForces - 799B (小根堆+STL)
题目链接 思路: 由于题目说了只有1,2,3,三种色号的衣服,然后开三个对应色号的小根堆, 我是根据pair<int,int> 创建了一个以价格小的优先的优先队列. pair中的另外一个i ...
- CF 799B T-shirt buying
一道超级水的练习STL的题目 题目大意:有\(n\)件T恤,每件T恤都分别有价格(每件衣服的价格不重复).前面的颜色.背部的颜色三种属性.接下来有\(m\)个人每个人都有一种喜欢的颜色,他们按先后顺序 ...
- Codeforces 799B - T-shirt buying(STL)
题目链接:http://codeforces.com/problemset/problem/799/B 题目大意:有n件T恤,每件T体恤都分别有价格(每件衣服的价格不重复).前面的颜色.背部的颜色三种 ...
- CodeForces - 799B T-shirt buying 【贪心】
题目链接 http://codeforces.com/problemset/problem/799/B 题意 给出N件衣服 pi 表示 第i件衣服的价格 ai 表示 第i件衣服的前面的颜色 bi 表示 ...
- ACM BUYING FEED
BUYING FEED 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 Farmer John needs to travel to town to pick up ...
- Codeforce - Street Lamps
Bahosain is walking in a street of N blocks. Each block is either empty or has one lamp. If there is ...
- [BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草
[BZOJ1618][Usaco2008 Nov]Buying Hay 购买干草 试题描述 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草. 他知道N(1≤N≤100)个干草 ...
- Codeforce Round #216 Div2
e,还是写一下这次的codeforce吧...庆祝这个月的开始,看自己有能,b到什么样! cf的第二题,脑抽的交了错两次后过了pretest然后system的挂了..脑子里还有自己要挂的感觉,果然回头 ...
随机推荐
- [SQL]基本表的定义及其完整性约束
在使用数据库时,绝大多数时间都是在使用基本表. SQL Server数据类型 截图来源: https://www.w3school.com.cn/sql/sql_datatypes.asp 创建基本表 ...
- alpakka-kafka(8)-kafka数据消费模式实现
上篇介绍了kafka at-least-once消费模式.kafka消费模式以commit-offset的时间节点代表不同的消费模式,分别是:at-least-once, at-most-once, ...
- Linux 基础学习篇 序篇
读序篇可以知道的: 1.有些指令知道前和知道后,自己的操作是完全不同的,可能知道前,会用reset把系统重新启动一遍,而知道后会使用ps和kill来关闭进程. 2.如果对Linus的学习知识" ...
- Git(7)-- 查看提交历史(git log 命令详解)
@ 目录 1.git clone 2.git log 3.git log -p 4.git log --stat 5.git log --pretty=oneline 6.git log --pret ...
- DVWA-全等级SQL注入(显注)
前言: 首先是DVWA环境的搭建: 1.DVWA. 2.PHPSTUDY/WampServer,这里有一个坑,因为他是一体化的,PHP版本必须在5.4以上,否则显注不能打开.或者自己搭建LAMP环境. ...
- ubuntu18.4 与pc notepad++ 使用nppftp
首先在linux上部署 vsftpd 安装过程可能有一些问题.我之前的一个文章有所说明. 然后更改配置文件 vsftpd.conf 最简单是开启匿名登录,有时候还要开启root登录,在user文件里面 ...
- docker 实现redis主从复制
目录 一.概览 二.安装master库 三.安装slave从库 四.错误分析 五.参考网址 一.概览 主库:192.168.3.13:6380 从库一:192.168.3.14:6381 从库二:19 ...
- linux下静态库的制作
在我们编写软件的过程当中,少不了需要使用别人的库函数.因为大家知道,软件是一个协作的工程.作为个人来讲,你不可能一个人完成所有的工作.另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把 ...
- Semaphore 的使用思路
转自:https://www.cnblogs.com/klbc/p/9500947.html 最近在看一本书<Java并发编程 核心方法与框架>,打算一边学习一边把学习的经验记下来,所粘贴 ...
- 我对数据库关系代数中减法sql实现的思考:mysql脚本
一.创建数据库,创建表结构 CREATE DATABASE Test_sub DEFAULT CHARACTER SET utf8; USE Test_sub; CREATE TABLE studen ...