天天看點

Codeforces 892 B. Wrath(思維)

題意

每個人都有一個長度為 li的武器,相鄰的兩個人之間距離為 1 ,同一時間所有人使用武器攻擊左邊的人,問最後存活下來的人數。

題解

最後一個肯定沒事,則ans = 1,從最後一個往前面周遊,以最後一個的範圍周遊,找出裡面最長的範圍更新周遊,即當達到最大範圍的最後一個人之後,加入另一個人,ans++,以他的範圍繼續周遊,重複操作

#include <bits/stdc++.h>
#define MAXN 1000005
using namespace std;

int main()
{
	int n;
	while(~scanf("%d", &n))
	{
		int num[MAXN];
		for(int i = 0; i < n; i++)
		{
			scanf("%d", &num[i]);
		}
		int ans = 0, len = -1;
		for(int i = n-1; i >= 0; i--)
		{
			int temp = num[i];
			if(len < 0) ans++;
			len = max(len, temp);
			len--;
		}
		cout<<ans<<endl;
	}
}