题解:CF508C Anya and Ghosts

· · 题解

解题思路

依次枚举在每个时间点不点蜡烛,如果不点蜡烛仍然合法,那么在这时不点蜡烛,否则就点蜡烛。

在枚举每一个时间点时,要从后往前枚举。因为后面是否插蜡烛不影响前面的判断,但是前面的操作会影响后面的判断。

正确代码

#include<bits/ldc++.h>
using namespace ld;
int a[1010],l,d,s,x,m,t,r;
int main() {
    cin>>n>>t>>r; 
    if(t<r) {
        cout<<"-1\n";
        return 0;
    }
    for(int i=1;i<=n;i++){
        cin>>x;
        while(l<d&&a[l]<x)l++;
        for(int i=x-r+d-l;i<x;i++){
            a[d++]=i+t;
            s++;
        } 
    }
    cout<<s;
}