CodeForces - 799B T-shirt buying 【贪心】
题目链接
http://codeforces.com/problemset/problem/799/B
题意
给出N件衣服
pi 表示 第i件衣服的价格
ai 表示 第i件衣服的前面的颜色
bi 表示 第i件衣服的后面的颜色
然后有 m 位顾客
顾客会给出 他中意的颜色 只要 衣服的前面或者后面有这个颜色 那么 这件衣服 就是符合要求的 然后他要购买 目前还剩下的 最便宜的那件
先来先服务原则 并且 每件衣服 只有一件
思路
用 三个 vector 来保存 三个颜色的衣服 卖出 后 要标记一下
刚开始 T 了 因为我们每次都是从 头开始遍历的
后来想想 可以用三个 标记 分别标记 三个 vector 的头 这样 前面已经遍历过的 就可以不用 遍历 (还是 大佬提醒 才做出来)
刚开始 要给这三个 vector sort
对了 这个 价格 应该都是不同的 因为用 sort 都能过
大佬 给普及了一下 sort 的效率 最快是 nlogn 只有当 每个元素都不同时
最慢是 n^2 每个元素都相同时
插入排序是比较稳定的 nlogn
AC代码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<map>
#include<set>
#include<list>
#include<vector>
#include<deque>
#include<stack>
#define ll long long
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=2e5+10;
struct node
{
int v, id;
}q[maxn];
vector <node> c[3];
int visit[maxn];
bool comp(node x, node y)
{
return x.v < y.v;
}
int main()
{
memset(visit, 0, sizeof(visit));
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &q[i].v);
q[i].id = i;
}
int color;
for (int i = 0; i < n; i++)
{
scanf("%d", &color);
c[color - 1].push_back(q[i]);
}
for (int i = 0; i < n; i++)
{
scanf("%d", &color);
c[color - 1].push_back(q[i]);
}
sort(c[0].begin(), c[0].end(), comp);
sort(c[1].begin(), c[1].end(), comp);
sort(c[2].begin(), c[2].end(), comp);
int m;
scanf("%d", &m);
int count[3] = {0};
int flag[3] = {0};
for (int i = 0; i < m; i++)
{
scanf("%d", &color);
if (i)
printf(" ");
int len = c[color - 1].size();
if (count[color - 1] >= len)
{
printf("-1");
continue;
}
int ans = -1;
for (int j = flag[color - 1]; j < len; j++)
{
if (visit[c[color - 1][j].id] == 0)
{
visit[c[color - 1][j].id] = 1;
ans = c[color - 1][j].v;
count[color - 1]++;
flag[color - 1] = j + 1;
break;
}
}
printf("%d", ans);
}
printf("\n");
}
CodeForces - 799B T-shirt buying 【贪心】的更多相关文章
- 【codeforces 799B】T-shirt buying
[题目链接]:http://codeforces.com/contest/799/problem/B [题意] 告诉你每个人喜欢的衣服的颜色; 然后告诉你每件衣服的正面和背面的颜色以及它的价格; 只要 ...
- Codeforces GYM 100876 J - Buying roads 题解
Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- [Codeforces 1214A]Optimal Currency Exchange(贪心)
[Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...
- Codeforces 1136D - Nastya Is Buying Lunch - [贪心+链表+map]
题目链接:https://codeforces.com/problemset/problem/1136/D 题意: 给出 $1 \sim n$ 的某个排列 $p$,再给出若干 $(x,y)$ 表示当序 ...
- Codeforces 799B - T-shirt buying(STL)
题目链接:http://codeforces.com/problemset/problem/799/B 题目大意:有n件T恤,每件T体恤都分别有价格(每件衣服的价格不重复).前面的颜色.背部的颜色三种 ...
- T-shirt buying CodeForces - 799B (小根堆+STL)
题目链接 思路: 由于题目说了只有1,2,3,三种色号的衣服,然后开三个对应色号的小根堆, 我是根据pair<int,int> 创建了一个以价格小的优先的优先队列. pair中的另外一个i ...
- Codeforces 1136D Nastya Is Buying Lunch (贪心)
题意: 给一个序列和一组交换序列(a,b),当且仅当a在b的前面(不允许有间隔),这两个数才能交换,问最后一个数最多能移动多少个位置. 分析: 这题是思路是十分的巧妙呀 , 用一个数组num[x] ...
- codeforces 349B Color the Fence 贪心,思维
1.codeforces 349B Color the Fence 2.链接:http://codeforces.com/problemset/problem/349/B 3.总结: 刷栅栏.1 ...
随机推荐
- ALBB 找公共最长连续字母序列的长度
问题描写叙述 给定一个 query 和一个 text .均由小写字母组成.要求在 text 中找出以相同的顺序连续出如今 query 中的最长连续字母序列的长度. 比如, query为"ac ...
- C#面试基础知识2
1.C#三层架构 C#三层架构急表示层(UI,User Interface),业务逻辑层(BLL BusinessLogicLayer),数据访问层(DAL Data Access Layer).三层 ...
- Kali Linux信息收集工具全
可能大部分渗透测试者都想成为网络空间的007,而我个人的目标却是成为Q先生! 看过007系列电影的朋友,应该都还记得那个戏份不多但一直都在的Q先生(由于年级太长目前已经退休).他为007发明了众多神奇 ...
- Mockito 库、powermock扩展
转载:http://blog.csdn.net/kittyboy0001/article/details/18709685 Mockito 简介 Mockito 是目前 java 单测中使用比较流行的 ...
- UE把环境变量Path改了
为了比较个文件,装了UE. 文件比较完了,环境变量也被改了. 改还不是写添加式的改,是写覆盖式的改. 搞得ant都起不动了,一看Path被改的那样(C:\hy\soft\ultraedit\Ultra ...
- winform程序公布后,client下载报错“您的 Web 浏览器设置不同意执行未签名的应用程序”
如题 在winserver2008服务器上操作会报错.解决的方法: IE→Internet选项→安全→可信网站,加入信任公布的IP地址
- 代理server的概要知识
技术支持请留言:http://www.lcpower.cn 一.什么是代理server? 代理server英文全称是Proxy Server.其功能就是代理网络用户去取得网络信息.形象的说:它是网络信 ...
- [ACM] hdu 1029 Ignatius and the Princess IV (动归或hash)
Ignatius and the Princess IV Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32767K (Ja ...
- PHP第四课 了解经常使用的函数
学习概要: 一.语言结构 二.自己定义函数 三.变量作用域 四.静态变量 五.函数返回值 六.參数 七.默认參数 八.引用參数 九.可变个数函数 十.回调函数 十一.变量函数 十二.递归函数 十三.文 ...
- Asp.Net北大青鸟总结(四)-使用GridView实现真假分页
这段时间看完了asp.net视频.可是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的非常好自己大概对于asp.net可以实现主要的小Demo.可是我知道仅仅有真 ...