mxqz差分
  • 板块CF460C Present
  • 楼主diqiuyi奶龙
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/5/11 18:48
  • 上次更新2023/10/23 16:05:26
查看原帖
mxqz差分
324666
diqiuyi奶龙楼主2023/5/11 18:48

rt,这份代码在本地可以过样例 1,但是交到 CF 上样例 1 会输出 1

#include <bits/stdc++.h>
using namespace std;
inline int read(){
	int x=0;bool f=1;char c=getchar();
	while(c>'9'||c<'0'){if(c=='-')f=0;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
	return f?x:-x;
}
int n,m,w,l=1,r=1000114514,a[114514],d[114514];
inline bool check(int x){
	int now=0,usd;
	for(int i=1;i<=n;i++) d[i]=a[i]-a[i-1];
	for(int i=1;i<=n;i++){
		now+=d[i];
		if(now<x) usd+=x-now,d[min(i+w,n+1)]-=(x-now),now=x;
		if(usd>m) return 0;
	}
	return 1;
}
int main(){
	n=read(),m=read(),w=read();
	for(int i=1;i<=n;i++) a[i]=read();
	while(l<r-1){
		int mid=l+r>>1;
		if(check(mid)) l=mid;
		else r=mid;
	}
	printf("%d\n",l);
    return 0;
}
2023/5/11 18:48
加载中...