P9384 [THUPC 2023 决赛] 着色 题解
Solution
喵喵构造
我们考虑将三元环和五元环的限制增强,变为图中不存在颜色相同的奇环。
那么每种颜色都构成一个二分图。
接下来提供一种和其他题解不同的构造方法。
我们考虑分治,每次将当前所有点分成两部分,所有的点之间的边染上相同的颜色,然后递归两部分内部染下一种颜色。
Code
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n;
int a[N][N];
void solve(int l,int r,int o){
if(l==r) return;
int mid=(l+r)>>1;
solve(l,mid,o+1),solve(mid+1,r,o+1);
for(int i=l;i<=mid;i++) for(int j=mid+1;j<=r;j++) a[i][j]=o;
}
int main(){
scanf("%d",&n);
solve(1,n,0);
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++) printf("%d",a[i][j]);
puts("");
}
return 0;
}