题解:P9384 [THUPC 2023 决赛] 着色
Part 1
先考虑怎么给尽量多的边标
一种构造是:把两个端点编号之差为奇数的边都设为
Part 2
现在考虑剩下哪些边没处理。发现这些边可以构成两个完全图,其中一个的节点编号都是奇数,另一个都是偶数。
既然还是完全图,我们就可以继续使用刚才的方法,把两个端点编号之差等于两倍奇数的边都标上
从而我们就得到了如下构造:把每条长度为
因为
#include <iostream>
using namespace std;
int a[1001];
int main() {
int n,i,j;
cin>>n;
for(i=1;i<=n;i++) a[i]=i%2?0:a[i/2]+1;
for(i=1;i<n;i++) {
for(j=1;j<=n-i;j++) cout<<a[j];
cout<<'\n';
}
return 0;
}
:::: AC 记录。