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 */
  • 相关阅读:
    PostgreSQL configure: error: readline library not found
    JS实现的模态框弹窗并自动消失
    MySQL安装详细教程
    C++与C#中枚举的区别
    句柄
    RESTFul API
    四、使用ADB命令清除缓存
    C#枚举案例
    Pycharm安装教程
    七、Monkey实战
  • 原文地址:https://www.cnblogs.com/general10/p/5763531.html
Copyright © 2011-2022 走看看