B. Wrath (思路题目)

来源:互联网 发布:刺客信条4a卡优化 编辑:程序博客网 时间:2024/06/04 18:22

题目链接:传送门

题目大意:有n个人,每个人i有一个杀人的范围Li,每个人都是在一瞬间出手的(他会杀掉他范围内的人,即使后来他被杀掉),在【i-Li,i-1】范围内的人都会被杀掉。

问有多少个人还活着?

代码:只需从后遍历,不断更新,能够杀人的范围即可。

代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int maxn=1e6+9;int a[maxn];int main(){    int n;    while(~scanf("%d",&n))    {        for(int i=0; i<n; i++)            scanf("%d",&a[i]);        int sum=0,len=a[n-1];//sum记录能杀掉多少个人,len记录还能杀掉多少个人。        for(int i=n-2; i>=0; i--)        {            if(len)//还能杀掉人                sum++;            len--;//个数减一            len=max(len,a[i]);//不断更新最大值。        }        printf("%d\n",n-sum);//输出还活着多少人    }    return 0;}
原创粉丝点击