日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF1042F Leaf Sets (贪心+树上构造)

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF1042F Leaf Sets (贪心+树上构造) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意:給你一棵樹,讓你對葉節點分組,保證每組中,任意兩個葉節點之間的距離不大于K,求最小的組數

手動yy的貪心竟然對的

對于每個節點,維護一個$ma[i]$,表示在$i$節點的子樹內 未被分組的葉節點到$i$節點的最長距離

那么,對于每個節點,把它的子節點按照$ma[i]$排序,那么如果這個點的子樹不需要額外的分組,就要保證最大的$ma[v1]$和次大的$ma[v2]$之間的距離小于等于K

如果不滿足,說明需要對子樹內的節點進行額外分組

根據貪心的思想,選擇ma最大的子節點$v1$,那么就從小往大一直找滿足$ma[v1]+ma[vj]<=K$的點,當不滿足條件時,說明剛才找過的小節點和那個較大的節點可以分成一組。接下來,要看次大$v2$的點能否滿足更次大$v3$能否滿足$ma[v2]+ma[v3]<=K$,找到說明可行,回溯。否則要繼續剛才的過程,直到剩余子節點之間的最長距離<=K

因為每個節點只會以這種方式被遍歷到一次,所以并不需要二分

1號節點可能是葉節點,所以不能直接把1當成根

另外,如果根節點的ma>1,說明根節點還剩下一些節點沒被分組,把它們分到一組即可

1 #include <vector> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 #define ll long long 6 #define N 1001000 7 #define uint unsigned int 8 #define inf 0x3f3f3f3f3f3f3fll 9 using namespace std; 10 //re 11 int gint() 12 { 13 int ret=0,fh=1;char c=getchar(); 14 while(c<'0'||c>'9'){if(c=='-')fh=-1;c=getchar();} 15 while(c>='0'&&c<='9'){ret=(ret<<3)+(ret<<1)+c-'0';c=getchar();} 16 return ret*fh; 17 } 18 19 int n,m,cte,num,S; 20 int head[N],fa[N],inc[N]; 21 struct Edge{int to,nxt;}edge[N*2]; 22 23 void ae(int u,int v){ 24 cte++;edge[cte].to=v,inc[v]++; 25 edge[cte].nxt=head[u],head[u]=cte; 26 } 27 28 vector<int>to[N]; 29 int ma[N]; 30 int cmp(int x,int y){return ma[x]<ma[y];} 31 int solve(int u){ 32 int ans=0,l,r; 33 for(int j=head[u];j;j=edge[j].nxt) 34 { 35 int v=edge[j].to; 36 if(v==fa[u]) continue; 37 to[u].push_back(v); 38 ans+=solve(v); 39 } 40 int tot=to[u].size(); 41 sort(to[u].begin(),to[u].end(),cmp); 42 if(!tot){ma[u]=1;return 0;} 43 if(tot==1){ma[u]=ma[to[u][tot-1]];} 44 else if(ma[to[u][tot-1]]+ma[to[u][tot-2]]<=m) 45 ma[u]=ma[to[u][tot-1]]; 46 else{ 47 l=0,r=tot-1; 48 while(r>0&&l<r&&ma[to[u][r]]+ma[to[u][r-1]]>m){ 49 for(;l<r&&ma[to[u][r]]+ma[to[u][l]]<=m;l++); 50 r--,ans++; 51 }ma[u]=ma[to[u][r]]; 52 }ma[u]+=(ma[u]>0?1:0);return ans; 53 } 54 55 56 int main() 57 { 58 scanf("%d%d",&n,&m); 59 int x,y; 60 for(int i=1;i<n;i++) 61 x=gint(),y=gint(),ae(x,y),ae(y,x); 62 for(int i=1;i<=n;i++) 63 if(inc[i]!=1) {S=i;break;} 64 dep[S]=1,dfs1(S,-1); 65 tp[S]=1,dfs2(S); 66 int ans=solve(S); 67 if(ma[S]-1>0) ans++; 68 printf("%d\n",ans); 69 return 0; 70 }

?

轉載于:https://www.cnblogs.com/guapisolo/p/9812742.html

總結

以上是生活随笔為你收集整理的CF1042F Leaf Sets (贪心+树上构造)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人影音 | 国产精品久久久久无码av | 午夜高清视频 | 视频在线观看 | 四虎永久在线精品 | 婷婷亚洲精品 | 国产男女无套 | 上海毛片| 日韩av在线播放观看 | 丝袜+亚洲+另类+欧美+变态 | 好姑娘在线观看高清完整版电影 | 手机在线看片国产 | 午夜不卡在线观看 | 波多野结衣久久久久 | 欧美成人一区二区三区高清 | 思思在线视频 | 在线观看成年人网站 | 国产一区二区综合 | 久草成人在线视频 | 美女视频黄频视频大全 | 成人久久18免费网站图片 | 欧美丰满熟妇xxxxx | 色哟哟入口 | 日本久久网 | 午夜电影天堂 | 欧美一级淫片免费视频魅影视频 | 亚洲一级二级 | 黄色激情在线观看 | 国产精品无码电影在线观看 | 久久国产精品网站 | 中文一区二区在线观看 | 在线不卡二区 | 调教丰满的已婚少妇在线观看 | 免费日韩| 欧美黄色片免费看 | 光明影院手机版在线观看免费 | 免费日批视频 | 日韩黄色网页 | 国产色爽| 亚洲九九视频 | 影音先锋激情在线 | 国产黄色视| 色干综合 | 欧美日韩1区2区3区 亚洲日本精品视频 | 中文字幕素人 | 日韩视频在线播放 | 象人高潮调教丨vk | 182tv福利视频 | 日韩美女在线视频 | 成人免费在线观看网站 | 中文在线观看免费高清 | 波多野结衣激情视频 | 亚洲国产果冻传媒av在线观看 | 国产成人 综合 亚洲 | 欧洲自拍一区 | 国产精品久久久久久久久动漫 | 亚洲成人99| 欧美 日韩 国产 在线 | 色婷婷av777 麻豆传媒网站 | 国产精品91一区二区 | 国产午夜成人久久无码一区二区 | 日韩一级在线观看 | 成人漫画网站 | 男人的天堂色 | 人妻丰满熟妇岳av无码区hd | 无套内谢老熟女 | 韩国美女福利视频 | 精品国产欧美一区二区三区成人 | 亚洲一区二区三区在线视频观看 | 白石茉莉奈番号 | 人人干人人爽 | 高清久久久久久 | 在线观看黄色av | 欧美在线播放视频 | 黑人无套内谢中国美女 | 国产盗摄一区二区三区在线 | 亚洲精品国产精品国自产网站按摩 | 国产成人免费av一区二区午夜 | 亚洲国产成人无码av在线 | 亚洲国产精品免费在线观看 | 丰满人妻一区二区三区性色 | 日日噜噜噜噜久久久精品毛片 | 黄色片免费在线 | 亚洲一级av无码毛片精品 | 亚洲精品人 | 五月天综合在线 | 无码任你躁久久久久久久 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 高清一二三区 | 国产码视频 | 91福利视频网站 | 北条麻妃青青久久 | 国产伦精品一区二区三区妓女 | 日韩 国产 一区 | 三年在线观看视频 | 一本黄色片 | 99久久久无码国产精品免费麻豆 | 性高湖久久久久久久久aaaaa | 99国产精品久久久久99打野战 |