??????ABC E的题解为什么不超时???
  • 板块灌水区
  • 楼主sundyLIUXY
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/30 10:45
  • 上次更新2023/11/3 06:57:17
查看原帖
??????ABC E的题解为什么不超时???
706737
sundyLIUXY楼主2023/7/30 10:45
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r)for(int i=(l);i<(r);i++)
 
int a[110][110][110];
int main(){
	int n;
	cin >> n;
	rep(i,0,n){
		int x1,y1,z1,x2,y2,z2;
		cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;
		rep(x,x1,x2)rep(y,y1,y2)rep(z,z1,z2)a[x][y][z]=i+1;
	}
	
	vector<set<int>>ans(n+1);
	auto add=[&](int i,int j){
		ans[i].insert(j);
		ans[j].insert(i);
	};
	
	rep(x,0,100)rep(y,0,100)rep(z,0,100)if(a[x][y][z]){
		if(a[x+1][y][z]&&a[x+1][y][z]!=a[x][y][z])add(a[x][y][z],a[x+1][y][z]);
		if(a[x][y+1][z]&&a[x][y+1][z]!=a[x][y][z])add(a[x][y][z],a[x][y+1][z]);
		if(a[x][y][z+1]&&a[x][y][z+1]!=a[x][y][z])add(a[x][y][z],a[x][y][z+1]);
	}
	
	rep(i,1,n+1)cout << ans[i].size() << endl;
}

第九行的大循环加上里面的三重就是100000 * 100 * 100 * 100 = 1e11了????

2023/7/30 10:45
加载中...