日韩性视频-久久久蜜桃-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(最短路+动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产一区二区精华 | 嫩草社区| 国产视频一级 | 韩日午夜在线资源一区二区 | 成人午夜大片 | 在线观看网页视频 | 日韩欧美综合一区 | 国产精品一 | 悠悠av| 四虎成人永久免费视频 | 日韩怡红院 | 成人av免费在线播放 | 老女人性生活视频 | 国产黄免费 | 校霸被c到爽夹震蛋上课高潮 | 亚洲成人v | 欧美激情69 | 成年免费在线观看 | 日韩精品中文字幕在线观看 | 免费亚洲一区二区 | 自拍视频一区二区 | 久久偷看各类wc女厕嘘嘘偷窃 | 免费精品视频在线 | 美国黄色一级毛片 | 放荡的美妇在线播放 | 欧洲国产精品 | 亚洲第一区在线播放 | 99视频免费在线观看 | 嫩草视频国产 | 欧美青青草| 岛国一区二区三区 | 男女在线观看视频 | 欧美黄片一区 | 禁片天堂 | 4虎最新网址 | 在线免费黄 | 亚洲理论电影在线观看 | 精品一久久 | 东凛在线观看 | 亚洲春色在线 | 日韩一区二区三区在线看 | 日本久久中文字幕 | 亚洲二三区 | 麻豆国产原创 | 欧美偷拍少妇精品一区 | 精品一区二区视频在线观看 | 国产性一乱一性一伧一色 | av在线网址大全 | 午夜在线观看影院 | 日本黄色小说 | 四色永久访问 | 免费h片在线观看 | 香蕉视频99 | 国产精品国产三级国产aⅴ无密码 | 天码人妻一区二区三区在线看 | 欧美国产一区二区 | 情趣五月天 | 碧蓝之海动漫在线观看免费高清 | 少妇荡乳情欲办公室456视频 | 亲嘴扒胸摸屁股免费视频日本网站 | 欧美日韩国产亚洲沙发 | 黄色片中国| 老妇高潮潮喷到猛进猛出 | 国产精品1 | 欧美黑人激情 | 国产区亚洲区 | 国产传媒在线观看 | 亚洲高清一区二区三区 | 亚洲精品一区二区三区四区五区 | 日韩精品 欧美 | 精品国产aⅴ | 国产91成人 | 特级淫片裸体免费看冫 | 午夜影院美女 | 欧美国产91 | 91国偷自产一区二区三区女王 | 亚洲性网站 | 青青草国产成人av片免费 | 国产91av视频| 国产精品丝袜黑色高跟 | 和黑帮大佬的365 | 欧美特一级片 | 久久久久久免费观看 | 精品成人免费一区二区在线播放 | 福利视频一二区 | 日韩乱码人妻无码中文字幕久久 | 免费毛片大全 | 99久久久久久久久久 | 依依成人综合网 | 亚洲熟妇无码乱子av电影 | 琪琪色网 | 国产精品无码电影在线观看 | 亚洲高清视频在线 | 色哟哟导航 | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 第四色激情 | 免费看黄色漫画 | 日韩国产片 | 91香蕉国产在线观看 |