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]<<" ";
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章