Tokio Marine & Nichido Fire Insurance Programming Contest 2020 C.Lamps

Tokio Marine & Nichido Fire Insurance Programming Contest 2020 C.Lamps

题目链接
在这里插入图片描述
对一次操作,用差分很容易解决~
题目的难点在于要想到 kk 在一个小值附近数组就会全部变成 nn (PS:这个也可以通过打表发现),其实就是考验你敢不敢下手去写😂
AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
main(){
    int n,k;
    cin>>n>>k;
    int a[n];
    for(int i=0;i<n;i++) cin>>a[i];
    while(k--){
        int b[n]={0},m=2*n;
        for(int i=0;i<n;i++){
            m=min(m,a[i]);
            b[max(0,i-a[i])]++;
            if(i+a[i]+1<n) b[i+a[i]+1]--;
        }
        if(m>=n) break;
        for(int i=0;i<n-1;i++) b[i+1]+=b[i];
        memcpy(a,b,sizeof(b));
    }
    for(int i=0;i<n;i++) cout<<a[i]<<" ";
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章