闲的没事,出了道题

@金文彦成

不,我什么时候成为记录委员了?标兵 @金文彦成

??何出此言?

我乃Dan

所以 @金文彦成 我这样对不对

他应该不上线
来晒你的桌面 - 常规 - 信友队论坛 (xinyoudui.com)
你也晒一个

q<=100000,你这样做每次操作都是n*n级别的,大概率会爆。

那还有什么方法?

你居然会上线

(帖子已被作者删除)

差分(应该吧)

你不会骗我说是自创题目,实则是模拟卷上的吧

怎么可能

bu xing

再见 睡了啊。

二维线段树(doge

1 个赞

不过这题没要求强制在线(还是太仁慈了,所以就是一个二维差分的裸板子了

1 个赞
#include<bits/stdc++.h>
using namespace std;
const int N=2005;
int a[N][N];
int n,m,q;
int fun(int p){
	if(p==1) return 1;
	else if(p==2) return 3;
	else return 2; 
}
int main(){
	cin>>n>>m>>q;
	while(q--){
		int op,x1,x2,y1,y2;
		cin>>x1>>y1>>x2>>y2>>op;
		a[x1][y1]+=fun(op);a[x2+1][y2+1]+=fun(op);
		a[x1][y2+1]-=fun(op);a[x2+1][y1]-=fun(op);
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			a[i][j]+=(a[i-1][j]+a[i][j-1]-a[i-1][j-1]);
			cout<<a[i][j]%4+1<<" ";	
		}
		cout<<endl;
	}
	return 0;
} 

样例过了应该没什么问题了,还有就是1e6的魔鬼输入输出记得用快读快写,我懒得打了(倒

1 个赞

哦,还没睡

1 个赞

初三生现在睡就见鬼了(doge

1 个赞