代码源周赛[R47D]树与直径
这个题应为T3拖死了所以只瞄了一下,一个结论题。
怎么看出来的呢?一般只给两个数,且输出的是一个序列的题目,都是结论题,或者说是构造题。
题目想让字典序最小,那么我们想,哪种节点的连边会最小呢。JA!是叶子节点。那么对应的树就是一条链接着一坨叶子节点。
大概长这样

图很抽象,但是确实是这样的。这种做法可以让叶子节点尽可能多,因为在比较字典序的时候,1是无敌的,有更多的1是很优的,也就意味着字典序偏小。
所以,代码很简单,就是按照图里的那样做,3行for输出就可以了,太简单了。
#include<bits/stdc++.h>
using namespace std;
int main(){
cin.tie(0)->sync_with_stdio(0);
int n,x;cin>>n>>x;
for(int i=1;i<=n-x+1;i++) cout<<1<<' ';
for(int i=1;i<=x-2;i++) cout<<2<<' ';
cout<<n-x+1<<endl;
}
okk,今天就到这里。

浙公网安备 33010602011771号