zoukankan      html  css  js  c++  java
  • Codeforce 522C

    //思路:因为题目是要求求出所有可能被选完的 dish,所以当之前乘客所选 dish 不确定时,将所有 dish 的数量均减一(做法是记录下来不确定的 dish 的数量);当出现第一个顾客 QAQ(不开心) 的时候,说明在他之前至少有一个 dish 已经被选完了,这时候就需要利用不确定的 dish 的数量优先构造出一个被选完的 dish(注意到之后被选择的 dish 一定不能再此刻被选完)

    //感觉这题要是题目读懂了就没什么难度了......弱渣这题读了好半天 Orz

     1 #include "bitsstdc++.h"
     2 using namespace std;
     3 int T;
     4 int m, n;
     5 int cnt[100005], cnt_pre[100005], sum, sum_pre, res[100005];
     6 bool dish_pre[100005];
     7 
     8 int main()
     9 {
    10     int i;
    11     scanf("%d", &T);
    12     while(T--) {
    13         sum = sum_pre = 0;
    14         memset(dish_pre, 1, sizeof(dish_pre));
    15         memset(res, 0, sizeof(res));
    16         scanf("%d%d", &m, &n);
    17         for(i = 1; i <= n; ++i) {
    18             scanf("%d", &cnt[i]);
    19             cnt_pre[i] = cnt[i];
    20         }
    21         int dish, QAQ;
    22         bool stop = 0;
    23         for(i = 1; i <= m - 1; ++i) {
    24             scanf("%d%d", &dish, &QAQ);
    25             if(dish)
    26                 --cnt[dish];
    27             else
    28                 ++sum;
    29             if(stop) {
    30                 dish_pre[dish] = 0;
    31                 continue;
    32             }
    33             if(QAQ) {
    34                 dish_pre[dish] = 0;
    35                 stop = 1;
    36                 continue;
    37             }
    38             if(dish)
    39                 --cnt_pre[dish];
    40             else
    41                 ++sum_pre;
    42         }
    43 
    44         if(stop) {
    45             int rem = 0;
    46             for(i = 1; i <= n; ++i) {
    47                 if(dish_pre[i] && cnt_pre[i] <= sum_pre) {
    48                     res[i] = 1;
    49                     rem = max(rem, sum - cnt_pre[i]);
    50                 }
    51             }
    52 
    53             for(i = 1; i <= n; ++i) {
    54                 if(cnt[i] <= rem) {
    55                     res[i] = 1;
    56                 }
    57             }
    58         }
    59         else {
    60             for(i = 1; i <= n; ++i) {
    61                 res[i] = cnt[i] <= sum;
    62             }
    63         }
    64 
    65         for(i = 1; i <= n; ++i) {
    66             putchar(res[i]? 'Y': 'N');
    67         }
    68         puts("");
    69     }
    70 }
  • 相关阅读:
    来自平时工作中的javascript知识的积累---持续补充中
    javascript function
    CSS3 3D变换
    HTTP1.1缓存策略
    jQuery插件开发
    mac下好用的工具收录(慢慢完善)
    mac 彻底卸载vscode
    Git冲突:commit your changes or stash them before you can merge. 解决办法(转载)
    关于vscode使用的一些设置
    (linux服务器)apache开启gzip的配置以及效果对比
  • 原文地址:https://www.cnblogs.com/AC-Phoenix/p/4373125.html
Copyright © 2011-2022 走看看