有点逆天
查看原帖
有点逆天
376161
Phartial静月千阴楼主2023/5/4 07:36

link,这位老哥直接暴力+记忆化操作 4 写的,然后还只跑了 3.81s

老哥代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
int a[N];
bool mp[4];
map<int,map<int,int> >ans;
signed main(){
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++) scanf("%d",&a[i]);
	while(m--){
		int op,l,r;
		scanf("%d%d%d",&op,&l,&r);
		mp[op]=1;
//		for(int i=0;i<n;i++) cout<<a[i]<<" ";
//		puts("");
		if(!op) fill(a+l,a+r+1,0);
		else if(op==1) fill(a+l,a+r+1,1);
		else if(op==2) for(int i=l;i<=r;i++) a[i]=(!a[i]);
		else if(op==3){
			int ans=0;
			for(int i=l;i<=r;i++) ans+=a[i];
			printf("%d\n",ans);
		}
		else{
			if(!mp[0]&&!mp[1]&&!mp[2]&&ans[l][r]){
				printf("%d\n",ans[l][r]);
				continue;
			}
			int anss=0,t=0;
			for(int i=l;i<=r;i++){
				if(a[i]) t++;
				else t=0;
				anss=max(anss,t);
			}
			ans[l][r]=anss;
			printf("%d\n",anss);
		}
//		for(int i=0;i<n;i++) cout<<a[i]<<" ";
//		puts("");
	}
	return 0;
}
2023/5/4 07:36
加载中...