Chicken or Fish?

题意比较难理解。

需要注意的是 就算某个人抱怨了 但是的t[i]也是他最后选择的结果。

题解:

首先考虑没有r[i] = 1的情况。 直接记录t[i]=0的数目,最后输出的时候比较a[i]和跳过的人的大小。

其次如果存在r[i]=1的情况, 则说明在前面就有一个菜品是被选完了。

再明白的后面出现的菜品在这个点是不会被选完的。

那么在后面不选完的菜品中,数目少于等于跳过的人都是可能被选完的。

再其次为了考虑对其他菜品的影响,我们需要减去最少的菜品的数量,这样就可能使得更多的菜品也被选完。

#include<bits/stdc++.h>
using namespace std;
#define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout);
#define LL long long
#define ULL unsigned LL
#define fi first
#define se second
#define pb push_back
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lch(x) tr[x].son[0]
#define rch(x) tr[x].son[1]
#define max3(a,b,c) max(a,max(b,c))
#define min3(a,b,c) min(a,min(b,c))
typedef pair<int,int> pll;
const int inf = 0x3f3f3f3f;
const int _inf = 0xc0c0c0c0;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const LL _INF = 0xc0c0c0c0c0c0c0c0;
const LL mod = (int)1e9+;
const int N = 2e5 + ;
int a[N];
int t[N], r[N];
int ok[N];
int m, k, lf;
int vis[N];
int main(){
int T;
scanf("%d", &T);
while(T--){
scanf("%d%d", &m, &k);
lf = ;
for(int i = ; i <= k; ++i)
scanf("%d", &a[i]);
int f = ;
for(int i = ; i < m; ++i){
scanf("%d%d", &t[i], &r[i]);
f += r[i];
}
if(!f){
int lf = ;
for(int i = ; i < m; ++i){
if(t[i]) a[t[i]]--;
else lf++;
}
for(int i = ; i <= k; ++i){
if(a[i] <= lf) putchar('Y');
else putchar('N');
}
}
else{
for(int i = ; i <= k; ++i) vis[i] = , ok[i] = ;
int lf = ;
for(int i = ; i < m; ++i){
if(r[i] && f){
f = ;
for(int j = i; j < m; ++j)
vis[t[j]] = ;
int Mn = INF;
for(int j = ; j <= k; ++j){ if(vis[j]) continue;
if(a[j] > lf) continue;
Mn = min(Mn, a[j]);
ok[j] = ;
}
lf -= Mn;
}
if(t[i]) a[t[i]]--;
else lf++;
}
for(int i = ; i <= k; ++i){
if(a[i] <= lf || !ok[i]) putchar('Y');
else putchar('N');
}
}
puts("");
}
return ;
}

CodeForces 522C Chicken or Fish?的更多相关文章

  1. Codeforces 247D Mike and Fish

    Mike and Fish 我们可以把这个模型转换一下就变成有两类点,一类是X轴, 一类是Y轴, 每个点相当于对应的点之间建一条边, 如果这条边变红两点同时+1, 变蓝两点同时-1. 我们能发现这个图 ...

  2. CodeForces - 547D: Mike and Fish (转化为欧拉回路)(优化dfs稠密图)(定向问题)

    As everyone knows, bears love fish. But Mike is a strange bear; He hates fish! The even more strange ...

  3. Codeforces 547D - Mike and Fish(欧拉回路)

    Codeforces 题目传送门 & 洛谷题目传送门 首先考虑将题目中的条件转化为图论的语言.看到"行""列",我们很自然地想到二分图中行.列转点,点转 ...

  4. Codeforces 547D Mike and Fish

    Description 题面 题目大意:有一个的网格图,给出其中的 \(n\) 个点,要你给这些点染蓝色或红色,满足对于每一行每一列都有红蓝数量的绝对值之差不超过1 Solution 首先建立二分图, ...

  5. Codeforces.547D.Mike and Fish(思路 欧拉回路)

    题目链接 \(Description\) 给定平面上n个点,将这些点染成红or蓝色,要求每行.每列红色点与蓝色点数量的差的绝对值<=1.输出方案(保证有解). \(Solution\) 参考这 ...

  6. CodeForces 547D Mike and Fish 思维

    题意: 二维平面上给出\(n\)个点,然后对每个点进行染色:红色和蓝色,要求位于同一行或同一列的点中,红色点和蓝色点的个数相差不超过1 分析: 正解是求欧拉路径,在这篇博客中看到一个巧妙的思路: 对于 ...

  7. Codeforce 1255 Round #601 (Div. 2)D. Feeding Chicken (模拟)

    Long is a huge fan of CFC (Codeforces Fried Chicken). But the price of CFC is increasing, so he deci ...

  8. DTD简单使用

    DTD:Document Type Definition DTD是一种简单的XML约束模式语言 DTD文档必须以utf-8或unicode编码 注释方式与HTML.XML文档相同 DTD文档的引用:紧 ...

  9. English-旅游英语及情景对话

    1.旅游英语:预订机票情景对话及常用句型 目前,越来越多的人都选择以飞机为出行方式.但是如何用一口流利的英语订机票呢?这里我们替你总结了一些情景对话,还有一些常用的句型.大家都来学一学吧~A:Good ...

随机推荐

  1. css3系列之transform 详解rotate

    rotate rotateX rotateY rotateZ rotate3d rotate: 旋转该元素,配合着transform-origin属性,transform-origin 是设置旋转点的 ...

  2. Android平台使用Ceres Solver

    在Android平台上使用Ceres求解器,官方教程不明确,且编译过程遇到了很多问题. 环境 Ubuntu 18.04 源代码 https://github.com/Great-Keith/ceres ...

  3. 客户端埋点实时OLAP指标计算方案

    背景 产品经理想要实时查询一些指标数据,在新版本的APP上线之后,我们APP的一些质量指标,比如课堂连接掉线率,课堂内崩溃率,APP崩溃率等指标,以此来看APP升级之后上课的体验是否有所提升,上课质量 ...

  4. 干货 | 博云基于OVS自研容器网络插件在金融企业的落地实践

    本文根据博云在dockerone社区微信群分享内容整理 过去几年博云在企业中落地容器云平台遇到了很多痛点,其中一个比较典型的痛点来自网络方面,今天很高兴跟大家聊聊这个话题并介绍下我们基于OVS自研的C ...

  5. ThreadPoolExecutor线程池的一个面试题

    问题:现有一个线程池,参数corePoolSize = 5,maximumPoolSize = 10,BlockingQueue阻塞队列长度为5,此时有4个任务同时进来,问:线程池会创建几条线程? 如 ...

  6. C#使用代理IP发送请求

    https://www.cnblogs.com/benbenfishfish/p/5830149.html   获取可代理的IP https://www.cnblogs.com/ShalenChe/p ...

  7. java并发编程(十一)----(JUC原子类)基本类型介绍

    上一节我们说到了基本原子类的简单介绍,这一节我们先来看一下基本类型: AtomicInteger, AtomicLong, AtomicBoolean.AtomicInteger和AtomicLong ...

  8. 28岁,转行学 IT 靠谱吗?

    前几天在知乎上,刷到这么一个问题 鉴于有不少人看了我的blog给我私信一些职业规划相关的问题,讨论很多的就是担心自己年龄是否还适合转行. 于是决定静心下来码了一篇回答, 同时搬到博客园来供大家消遣.. ...

  9. 史上最全面 Android逆向培训之__Xposed使用

    刚招来个Android,干了半个月辞职了,他走之后,成堆的bug被测了出来,都是这个新人代码都没看懂就开始改的一塌糊涂,还给提交了.实在是让人头疼,清理了一个月多月才把他半个月写的bug清理个差不多. ...

  10. Java学习|Exception和Error有什么区别?

    典型回答:      Exception和Error都继承了Throwable类,java中只有Throwable类型的实例才能被Throw(抛出)或者catch(捕获).      Exceptio ...