题目链接

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 【贪心】的更多相关文章

  1. 【codeforces 799B】T-shirt buying

    [题目链接]:http://codeforces.com/contest/799/problem/B [题意] 告诉你每个人喜欢的衣服的颜色; 然后告诉你每件衣服的正面和背面的颜色以及它的价格; 只要 ...

  2. Codeforces GYM 100876 J - Buying roads 题解

    Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...

  3. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  4. [Codeforces 1214A]Optimal Currency Exchange(贪心)

    [Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...

  5. Codeforces 1136D - Nastya Is Buying Lunch - [贪心+链表+map]

    题目链接:https://codeforces.com/problemset/problem/1136/D 题意: 给出 $1 \sim n$ 的某个排列 $p$,再给出若干 $(x,y)$ 表示当序 ...

  6. Codeforces 799B - T-shirt buying(STL)

    题目链接:http://codeforces.com/problemset/problem/799/B 题目大意:有n件T恤,每件T体恤都分别有价格(每件衣服的价格不重复).前面的颜色.背部的颜色三种 ...

  7. T-shirt buying CodeForces - 799B (小根堆+STL)

    题目链接 思路: 由于题目说了只有1,2,3,三种色号的衣服,然后开三个对应色号的小根堆, 我是根据pair<int,int> 创建了一个以价格小的优先的优先队列. pair中的另外一个i ...

  8. Codeforces 1136D Nastya Is Buying Lunch (贪心)

    题意: 给一个序列和一组交换序列(a,b),当且仅当a在b的前面(不允许有间隔),这两个数才能交换,问最后一个数最多能移动多少个位置. 分析: 这题是思路是十分的巧妙呀 , 用一个数组num[x]  ...

  9. codeforces 349B Color the Fence 贪心,思维

    1.codeforces 349B    Color the Fence 2.链接:http://codeforces.com/problemset/problem/349/B 3.总结: 刷栅栏.1 ...

随机推荐

  1. Scut游戏服务器引擎6.0.5.1发布

    1. 修正缓存删除时不会更新到Redis的问题 2. 修正Model组合3个以上子类时Change事件未绑定的问题 3. 修正中间层MySql与MsSql数据库Sql语句分页问题

  2. 【DQ冰淇淋】—— Babylon 冰淇淋三维互动营销项目总结

    前言:在学习过Babylon.js基础之后,我上手的第一个网页端3D效果制作项目就是‘DQ冰淇淋’.这个小项目应用到了Babylon最基础的知识,既可以选味道,选点心,也可以旋转.倒置冰淇淋,互动起来 ...

  3. java集合类型接口和实现类个人总结

    转载:http://blog.csdn.net/qingchunbusanchang/article/details/39576749 java的集合是一个比较综合的概念,相关的知识有很多的博客里面做 ...

  4. Galileo Gen2 之MQTT通讯

    前言 原创文章,转载引用务必注明链接.如有疏漏,欢迎斧正. Galileo系统:完整版Yocto,内核版本3.8.7-yocto-standard:宿主机:Windows 7 64 bit 这期主要讲 ...

  5. Android源代码解析之(六)--&gt;Log日志

    转载请标明出处:一片枫叶的专栏 首先说点题外话,对于想学android framework源代码的同学,事实上能够在github中fork一份,详细地址:platform_frameworks_bas ...

  6. mysql 配置 安装和 root password 更改

    第一步: 修改my.ini文件,替换为以下内容 (skip_grant_tables***重点) # For advice on how to change settings please see # ...

  7. gitbook 的资源同步到 github中(方便维护和备份)

    进入SETTINGS -> Github -> Select a Repository. 到这一步为止,我们可以先去我们的github,创建一个仓库先,推荐同名.然后回来gitbook中, ...

  8. Spring学习十----------Bean的配置之Autowired注解实现

    © 版权声明:本文为博主原创文章,转载请注明出处 @Required -@Required注解适用于bean属性的setter方法 -这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在b ...

  9. POJ 2253 Frogger(最小最大距离)

    题意  给你n个点的坐标  求第1个点到第2个点的全部路径中两点间最大距离的最小值 非常水的floyd咯 #include<cstdio> #include<cmath> #i ...

  10. PHP第四课 了解经常使用的函数

    学习概要: 一.语言结构 二.自己定义函数 三.变量作用域 四.静态变量 五.函数返回值 六.參数 七.默认參数 八.引用參数 九.可变个数函数 十.回调函数 十一.变量函数 十二.递归函数 十三.文 ...