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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

PAT (Advanced Level) 1003 Emergency(最短路+动态规划)

發布時間:2024/4/11 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT (Advanced Level) 1003 Emergency(最短路+动态规划) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:給出一個無向圖,再給出起點和終點,要求消防隊員從起點出發,盡可能快的趕往終點,每個點都有一個權值w,代表該點有多少個人口,問消防隊員在盡可能快的趕到終點的前提下,一共有多少條路徑可以選擇,并且沿路最多能招募多少人口

題目分析:說白了就是一道裸的迪杰斯特拉,然后用動態規劃維護有多少條最短路,以及單條最短路上的最大點權之和,不過我不會。。動態規劃真的是愁人,看了網上的題解后就豁然開朗,只需要開兩個dp維護上面說到的兩個狀態即可,dp1[i]記錄經過點i的最短路有幾條,dp2[i]記錄經過點i的最多人數有多少,轉移方程的話放到迪杰斯特拉中的松弛操作中同步進行:

if(d[v]>d[u]+w)//當點u可以更新點v時,同步更新dp1和dp2 {dp1[v]=dp1[u];dp2[v]=dp2[u]+a[v]; } else if(d[v]==d[u]+w)//當點u與點v的權值相當時,將點u的狀態轉移到點v中去 {dp1[v]+=dp1[u];dp2[v]=max(dp2[v],dp2[u]+a[v]); }

簡單線性dp,應該不難理解,就不過多贅述了

實現代碼:

#include<iostream> #include<cstdlib> #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> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=550;struct Node {int to,w;Node(int TO,int W){to=TO;w=W;}bool operator<(const Node& a)const{return w>a.w;} }; vector<Node>node[N];int dp1[N],dp2[N];//dp1:記錄經過該點的最短路有幾條 dp2:記錄經過該點的最多人數有多少 int d[N];int a[N];void Dijkstra(int x) {memset(d,inf,sizeof(d));d[x]=0;dp1[x]=1;dp2[x]=a[x];priority_queue<Node>q;q.push(Node(x,0));while(!q.empty()){Node cur=q.top();q.pop();int u=cur.to;if(d[u]!=cur.w)continue;for(int i=0;i<node[u].size();i++){int v=node[u][i].to;int w=node[u][i].w;if(d[v]>d[u]+w){d[v]=d[u]+w;dp1[v]=dp1[u];dp2[v]=dp2[u]+a[v];q.push(Node(v,d[v]));}else if(d[v]==d[u]+w){dp1[v]+=dp1[u];dp2[v]=max(dp2[v],dp2[u]+a[v]);}}} }int main() { // freopen("input.txt","r",stdin);int n,m,st,ed;scanf("%d%d%d%d",&n,&m,&st,&ed);for(int i=0;i<n;i++)scanf("%d",a+i);while(m--){int u,v,w;scanf("%d%d%d",&u,&v,&w);node[u].push_back(Node(v,w));node[v].push_back(Node(u,w));}Dijkstra(st);cout<<dp1[ed]<<' '<<dp2[ed]<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的PAT (Advanced Level) 1003 Emergency(最短路+动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色综合| 日韩夜色 | 好吊色免费视频 | 精品少妇久久久久久888优播 | 亚洲一级黄色片 | 久久久亚洲国产精品 | 簧片av| 欧美精品久久久久久久久 | 在线看欧美 | 99精品视频免费看 | 丰满孕妇性春猛交xx大陆 | 久久国产乱| 成人毛片在线 | 中文写幕一区二区三区免费观成熟 | 国产精品一二三区视频 | 日本在线播放视频 | 日韩精品第1页 | 国产精品久久久久久久久久久久久久久久久 | 久久久久国产视频 | 撸啊撸av| 国产日韩大片 | 男人天堂av在线播放 | 一本色道久久hezyo加勒比 | 欧美裸体女人 | 91精品播放 | 免费看黄色片子 | 蜜臀va| 婷婷精品进入 | 日本日皮视频 | 国产精品女同一区二区 | 亚洲欧美日韩精品色xxx | 夜夜操夜夜爱 | 日本天天色 | 亚洲黄色免费电影 | 91网在线| 双性娇喘浑圆奶水h男男漫画 | 暗呦丨小u女国产精品 | 三上悠亚在线一区 | 日本激情免费 | 中文字幕成人动漫 | 纯爱无遮挡h肉动漫在线播放 | 久久精精品久久久久噜噜 | 亚洲产国偷v产偷v自拍涩爱 | 午夜激情视频在线观看 | 日韩69视频 | jizz俄罗斯 | 91不卡在线 | 亚洲福利二区 | 国产精品羞羞答答在线观看 | 国产二区免费 | 中文字幕人成人乱码亚洲电影 | 成人精品二区 | 亚洲精品9 | 色噜噜狠狠成人中文 | 国产一区a | 台湾性生生活1 | 美女脱了裤子让男人捅 | 久色网| 黄色美女视频网站 | 久久久久亚洲无码 | 精品一区二区三区人妻 | 中文字幕电影av | 丰满少妇在线观看网站 | 涩涩片影院 | 久久性感视频 | 国产精品一区二区三区免费视频 | 自拍99 | 日本大尺度床戏揉捏胸 | 在线视频久 | 大桥未久恸哭の女教师 | 久久九九热视频 | 国产欧美网站 | 国产成人精品免高潮在线观看 | 偷拍一区二区三区四区 | 六月婷婷色 | 成人三级电影网站 | 男人看的网站 | 黑人一级黄色片 | 天天操天天草 | 欧美国产日韩在线观看成人 | av有声小说一区二区三区 | 91theporn国产在线观看 | 欧美人与性动交α欧美片 | xx性欧美肥妇精品久久久久久 | 97久久国产亚洲精品超碰热 | 国产精品网页 | 天天色婷婷 | 毛片99| 奇米色在线 | 91精品国产99 | 欧美色图综合网 | 初高中福利视频网站 | 18禁男女爽爽爽午夜网站免费 | 凹凸国产熟女精品视频 | 中文字幕无码精品亚洲 | 国产精品一国产精品 | 男人和女人日批视频 | 国产经典自拍 | 蜜桃视频在线观看污 |