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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移)

發(fā)布時間:2024/4/11 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一棵樹,給出分類規(guī)則:設兩點之間的距離為w,則按照w對3取模后的余數分為三組(0,1,2),問兩兩頂點之間的距離分類后之和為多少,答案輸出模分別為0,1,2時的距離和

題目分析:這個題目需要我們求以每個點為根節(jié)點跑一遍dfs然后對距離加和,但顯然復雜度為n*n,會T,既然需要每個點都當一次根節(jié)點,我們可以試試用樹根轉移的思想,這樣配合上動態(tài)規(guī)劃,就能將時間復雜度下降到n+n了,就能解決這個問題了,所以問題轉換成了樹形dp的一道題目,我動態(tài)規(guī)劃很菜,代碼是比這網上的大牛的思路寫的,簡單來說,轉移需要兩個數組,一個是num數組,用來記錄子樹中的節(jié)點個數,另一個是dis數組,用來記錄距離,原理大概是記錄每條邊被經過的次數(也就是子節(jié)點的個數),然后乘上邊權,就是將該邊加入到路徑中所貢獻的距離了,然后轉移方程是這樣的:

num[v][0]++;

dis[u][(j+w)%3]+=dis[v][j]+w*num[v][j];(0<=j<=2)

num[u][(j+w)%3]+=num[v][j];(0<=j<=2)

我反正是推不出來這樣的公式。。還是動態(tài)規(guī)劃太弱了啊,大佬太強了太強了

這是求單獨一個節(jié)點為根的轉移方程,再寫一個dfs用來樹根轉移就好了,具體的規(guī)則就是從根節(jié)點開始,然后子節(jié)點和根節(jié)點互換,記得儲存一下原來的數值,等轉移完該子節(jié)點后需要還原,然后進行接下來的狀態(tài)轉移,更詳細的看原大牛的博客吧:

https://blog.csdn.net/weixin_44282912/article/details/100833858

#include<iostream> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e4+100;const int mod=1e9+7;struct Node {int to;LL w;Node(int TO,LL W){to=TO;w=W;} };vector<Node>node[N];LL ans[5],dis[N][3],num[N][3];void solve(int u) {for(int i=0;i<3;i++)(ans[i]+=dis[u][i])%=mod; }void dfs1(int u,int fa) {for(int i=0;i<3;i++)dis[u][i]=num[u][i]=0;for(int i=0;i<node[u].size();i++){int v=node[u][i].to;LL w=node[u][i].w;if(v==fa)continue;dfs1(v,u);num[v][0]++;for(int j=0;j<3;j++){(dis[u][(j+w)%3]+=dis[v][j]+w*num[v][j])%=mod;(num[u][(j+w)%3]+=num[v][j])%=mod;}} }void dfs2(int u,int fa) {for(int i=0;i<node[u].size();i++){int v=node[u][i].to;LL w=node[u][i].w;if(v==fa)continue;LL d1[5],d2[5],n1[5],n2[5];for(int j=0;j<3;j++){d1[j]=dis[u][j];d2[j]=dis[v][j];n1[j]=num[u][j];n2[j]=num[v][j];}for(int j=0;j<3;j++){((dis[u][(j+w)%3]-=dis[v][j]+w*num[v][j])+=mod)%=mod;((num[u][(j+w)%3]-=num[v][j])+=mod)%=mod;}num[v][0]--;num[u][0]++;for(int j=0;j<3;j++){(dis[v][(j+w)%3]+=dis[u][j]+w*num[u][j])%=mod;(num[v][(j+w)%3]+=num[u][j])%=mod;}solve(v);dfs2(v,u);for(int j=0;j<3;j++){dis[u][j]=d1[j];dis[v][j]=d2[j];num[u][j]=n1[j];num[v][j]=n2[j];}} }int main() { // freopen("input.txt","r",stdin);int n;while(scanf("%d",&n)!=EOF){for(int i=1;i<=n;i++)node[i].clear();for(int i=0;i<3;i++)ans[i]=0;for(int i=1;i<n;i++){int u,v;LL w;scanf("%d%d%lld",&u,&v,&w);u++;v++;node[u].push_back(Node(v,w));node[v].push_back(Node(u,w));}dfs1(1,-1);solve(1);dfs2(1,-1);printf("%lld %lld %lld\n",ans[0],ans[1],ans[2]);}return 0; }

?

總結

以上是生活随笔為你收集整理的2019ICPC(沈阳) - Fish eating fruit(树形dp+树根转移)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美激情第五页 | 国产ts在线观看 | 成人精品亚洲人成在线 | 色综合久久久久无码专区 | 青青草国产成人av片免费 | 欧美一区二区二区 | 亚洲视频你懂的 | 蜜桃av噜噜 | 手机在线看片你懂的 | 奇米婷婷 | 超碰人人人人人人 | 性一交一黄一片 | 国产夫妻精品 | 夜夜操狠狠操 | 国产麻豆精品视频 | 亚洲综合一区中 | 可以看的av网站 | 欧美日韩亚洲国产综合 | 影音先锋中文字幕人妻 | www.五月天婷婷 | 成人免费看片又大又黄 | 伊人久久精品一区二区三区 | 91精品国产自产91精品 | 免费在线观看黄色片 | 深夜久久 | 91丨porny丨对白 | 欧美日韩国产精品一区二区三区 | 欧美日韩综合网 | 尤物在线视频观看 | 2019日韩中文字幕 | 人人草人人射 | 男人爆操女人 | 国产无限制自拍 | 欧美一及片| 有码在线 | youjizzxxxxx| 国产精品五区 | 天天色天天综合 | 午夜爱爱免费视频 | 国产色播| 国产精品久久久久久久专区 | 一本色道久久亚洲综合精品蜜桃 | 国产成人精品一区二区三区无码熬 | 深爱激情丁香 | 国产精品毛片一区二区在线看舒淇 | 少妇无套内谢久久久久 | 国产伦精品一区二区三区视频孕妇 | 国内精品久久久久 | 欧美天堂一区 | 天堂…中文在线最新版在线 | 激情综合小说 | 亚洲乱码国产乱码精品天美传媒 | 天堂影视av | 欧美精品在线观看视频 | 欧美成人三级视频 | 中文字幕高清在线观看 | 色播基地| 成人在线观看一区 | 亚洲精品国产精品乱码在线观看 | 久久精品高清视频 | av成人在线播放 | 91色蝌蚪| 国产欧美一区二区三区四区 | 人人妻人人爽欧美成人一区 | 91成人在线观看喷潮动漫 | 女人喂男人奶水做爰视频 | 奇米影视久久 | 亚洲成熟少妇视频在线观看 | 国产成人av免费看 | 天堂成人网 | 开元在线观看视频国语 | www.操com | 欧美午夜精品理论片 | 变态另类ts人妖一区二区 | 国产中出 | 可以免费看黄的网站 | 欧美日韩国产亚洲沙发 | av秋霞| 亚洲 欧美 中文字幕 | 日韩大片av | 在线视频日韩 | 香蕉久久夜色精品 | 天天草影院| 欧美日韩免费观看视频 | 91黄色免费观看 | 在线观看毛片视频 | 久久精品高清视频 | 国产成人精品免费看视频 | 丰满岳乱妇在线观看中字无码 | www.亚洲高清 | 在线播放少妇奶水过盛 | 免费高清欧美大片在线观看 | 成人h动漫精品一区二区 | 亚洲美女屁股眼交3 | 成人亚洲视频 | 国产精品性爱在线 | 中国免费一级片 | jzjzjzjzj亚洲成熟少妇 | 99精品视频一区二区三区 |