<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ARC175D LIS on Tree 2

      題目描述

      給一棵 \(n\) 個節點的樹,將 \(1 \sim n\) 的排列填入節點內,使得根節點到每個節點的簡單路徑的權值 LIS 長度和為 \(K\),給出構造。

      思路

      根據 LIS 的性質有:

      • \(L_1 = 1\)
      • \(L_{fa_u} \le L_u \le L_{fa_u}+1\)

      只要 \(L\) 滿足上述條件,就一定存在一種構造使其滿足對應 \(L\) 的值。

      我們首先令 \(L\) 取其下界,即 \(\forall i,L_i = L_{fa_i}\)

      然后考慮令 \(L_u = L_{fa_u}+1\) 會產生什么影響。不難發現,此時 \(u\) 子樹內所有節點的下界都必須加一,即 \(\sum L_i\) 必須加 \(u\) 的子樹大小。

      現在問題變為,我們可以選擇一些子樹,使其內 \(L\) 都加一,使得 \(\sum L_i = K\)

      直接按子樹大小排序,然后貪心能選就選。

      我們現在求出了 \(L\) ,考慮怎么按其進行構造。

      對于節點 \(u\),為了使其前面有足夠多比其權值小的數,以此湊夠 \(L_u\),所以 \(L_u\) 越大 \(v_u\) 也應該越大。

      \(L\) 升序排序,依次填入 \(n \sim 1\) 即可。

      有一個細節,在 \(L\) 相等的一個連通塊內,為了不讓較深節點的 \(L_u\) 變大,則應使得 \(v_{fa_u} > v_u\)

      代碼

      const int N = 2e5+10;
      int n,dtop; ll k;
      struct{
      	int to,nex;
      }edge[N<<1];
      int head[N],edge_num;
      inline void add(int x,int y){
      	edge[++edge_num].to = y;
      	edge[edge_num].nex = head[x];
      	head[x] = edge_num;
      }
      struct node{
      	int siz,pos;
      	inline int operator < (const node&G) const{
      		return siz < G.siz;
      	}
      }g[N];
      inline void dfs1(int now,int fu){
      	g[now] = {1,now};
      	for(int i=head[now];i;i=edge[i].nex){
      		int tto = edge[i].to;
      		if(tto==fu) continue;
      		dfs1(tto,now);
      		g[now].siz += g[tto].siz;
      	}
      }
      struct WP{
      	int L,pos,dfn;
      	inline int operator < (const WP&G){
      		if(L^G.L) return L > G.L;
      		return dfn < G.dfn;
      	}
      }wp[N];
      inline void dfs2(int now,int fu){
      	wp[now].L += wp[fu].L;
      	wp[now].pos = now;
      	wp[now].dfn = ++dtop;
      	for(int i=head[now];i;i=edge[i].nex){
      		int tto = edge[i].to;
      		if(tto==fu) continue;
      		dfs2(tto,now);
      	}
      }
      int ans[N];
      int main(){
      
      	read(n,k);
      	if(k<n){
      		puts("No");
      		return 0;
      	}
      	for(int i=1,u,v;i<n;++i){
      		read(u,v);
      		add(u,v);
      		add(v,u);
      	}
      	dfs1(1,0);
      	sort(g+1,g+1+n); // 按子樹大小排序之后貪心
      	for(int i=n;i && k;--i){
      		if(k>=g[i].siz){
      			k -= g[i].siz;
      			++wp[g[i].pos].L; // 對 L 差分
      		}
      	}
      	if(k){ // 所有子樹都選了還是到不了 K
      		puts("No");
      		return 0;
      	}
      	dfs2(1,0);
      	sort(wp+1,wp+1+n);// 按 L 排序和 dfn 排序
      	for(int i=1;i<=n;++i) ans[wp[i].pos] = n-i+1;
      	puts("Yes");
      	for(int i=1;i<=n;++i) printf("%d ",ans[i]);
      
      	return 0;
      }
      
      
      posted @ 2025-07-25 17:06  Tmbcan  閱讀(9)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 少妇人妻真实偷人精品| 国产精品三级一区二区三区| 欧美成人免费全部| 蜜臀av午夜精品福利| 男女性高爱潮免费网站| 色综合色综合综合综合综合| 国产色无码精品视频免费| 亚洲国产精品午夜福利| 午夜福利影院不卡影院| 国产精品麻豆成人AV电影艾秋| 成人精品老熟妇一区二区| 亚洲欧美激情在线一区| 中文字幕人妻无码一区二区三区| 丁香婷婷激情综合俺也去| 亚洲精品一区二区18禁| 99热精品毛片全部国产无缓冲 | 体验区试看120秒啪啪免费| 日韩在线视频一区二区三区| 国内少妇偷人精品视频| 日本久久一区二区免高清| 亚洲大尺度无码专区尤物| 99久久亚洲综合精品成人网| 老司机精品成人无码AV| 国产美女自慰在线观看| 久久夜色精品国产网站| 美女内射毛片在线看免费人动物| 在线精品国精品国产不卡| 韩国免费a级毛片久久| 国产老妇伦国产熟女老妇高清| 国产av国片精品一区二区| 狠狠躁夜夜躁人人爽天天5| 国产亚欧女人天堂AV在线| 亚洲色一区二区三区四区| 一亚洲一区二区中文字幕| 久久久www成人免费精品| 国产精品午夜福利在线观看| 欧美怡春院一区二区三区| 欧美色欧美亚洲高清在线视频| 插插无码视频大全不卡网站| 亚洲精品人成网线在线播放va| 亚洲国产美女精品久久久|