0%

CF-1011-D. Serval and Kaitenzushi Buffet

思路讲解

K其实就是吃掉一个寿司所需要花费的时间。
你可以不停拿,但是最后要吃完,拿的时候不能吃。

这个其实是个贪心,这个把题目完全读完就可以得出。

https://www.luogu.com.cn/article/flnzpg4m 这个题解写的很清楚。

总的来说,其实就是这么选一定是合法的,但不一定最优。

image

而且可以证明所有的O是不能再往后移了,只能往前移。当然,往前移一定是合法的。

具体而言是这样的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ll idx=0;
ROF(i,N,1){
++idx;
if(idx%(K+1)==0){
spec[i]=true;
}
}
priority_queue<ll> pq;
ll ans=0;
FOR(i,1,N){
pq.push(D[i]);
if(spec[i]){
ans+=pq.top();
pq.pop(); // 记得要弹出,不用清空,往前移比较多也是可以接受的。
}
}

AC代码

https://codeforces.com/contest/2085/submission/319924135

心路历程(WA,TLE,MLE……)