代码源周赛[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,今天就到这里。

posted @ 2026-01-23 23:28  zhangruotian_Max  阅读(0)  评论(0)    收藏  举报