zoukankan      html  css  js  c++  java
  • [ An Ac a Day ^_^ ] CodeForces 586C Gennady the Dentist 模拟

    题意:

    n个小朋友去拔牙 每个小朋友在拔牙的时候会哭 哭声是vi分贝

    距离门口vi远的小朋友听到了哭声会害怕 他们的勇气值p会减少d

    如果勇气值p小于等于零 他们就会在门外哭并立即离开拔牙队列(回家找妈妈……)

    这个哭声门外所有的小朋友都能听到 所以这个哭声会同时减少所有小朋友的勇气值

    问最后有多少小朋友可以拔完牙

    思路:

    就是模拟一下这个过程

    好像后面的小朋友哭了对前面的小朋友没有影响

    WA了一次是因为结构体里没用long long……

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<math.h>
     5 #include<string.h>
     6 #include<string>
     7 #include<map>
     8 #include<set>
     9 #include<vector>
    10 #include<queue>
    11 #define M(a,b) memset(a,b,sizeof(a))
    12 using namespace std;
    13 typedef long long ll;
    14 struct child{
    15     ll vi,d,p;
    16 }child[4005];
    17 int cnt=0,ans[4005];
    18 int main(){
    19     int n;
    20     scanf("%d",&n);
    21     for(int i=1;i<=n;i++)
    22         scanf("%I64d%I64d%I64d",&child[i].vi,&child[i].d,&child[i].p);
    23     for(int i=1;i<=n;i++){
    24         if(child[i].p<0) continue;
    25         ans[cnt++]=i;
    26         ll v=child[i].vi,cry=0;
    27         for(int j=i+1;j<=n;j++){
    28             if(child[j].p<0) continue;
    29             child[j].p-=v+cry;
    30             v--;
    31             if(v<0) v=0;
    32             if(child[j].p<0) cry+=child[j].d;
    33         }
    34     }
    35     printf("%d
    ",cnt);
    36     for(int i=0;i<cnt;i++)
    37         printf("%d%c",ans[i],i==cnt-1?'
    ':' ');
    38     return 0;
    39 }
    40 /*
    41 
    42 5
    43 4 2 2
    44 4 1 2
    45 5 2 4
    46 3 3 5
    47 5 1 2
    48 
    49 5
    50 4 5 1
    51 5 3 9
    52 4 1 2
    53 2 1 8
    54 4 1 9
    55 
    56 */
  • 相关阅读:
    一天一个shell实例(1)文本中n个出现频率最高的单词(转)
    JNDI全攻略(一)(转)
    JNDI 学习(转)
    JNDI全攻略(二)(转)
    C#开发系列 文章索引
    AppControls
    JSF系列 文章索引
    [转载]DELPHI组件安装全攻略
    什么是有价值的人生
    [转载]InnoSetup5.2.3啊风增强版 安装代码
  • 原文地址:https://www.cnblogs.com/general10/p/5763531.html
Copyright © 2011-2022 走看看