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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CH 5102Mobile Service题解

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CH 5102Mobile Service题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目;

用動態規劃很容易將完成任務量作為dp的階段,通過指派服務員,從當前i-1個任務轉移到i個任務;

我們可以用一個四維數組f[i][x][y][z]來表示在完成當前任務i時,三個機器人分別在x,y,z的位置;每次由其中一個機器人向目標位置轉移;取min值;

但是算法規模一點都不樂觀;

我們想到在完成當前任務i時,必定存在一個機器人位于p[i],即目標地;那么我們可以用f[i][x][y],即完成任務i時,另外兩個機器人位于x,y的位置;

狀態轉移:

f[k][i][j]=min(f[k][i][j],f[k-1][i][j]+c[p[k-1]][p[k]]);//k為當前完成任務,c數組記錄兩者間的距離,p數組為目標到達地;
f[k][p[k-1]][j]=min(f[k][p[k-1]][j],f[k-1][i][j]+c[i][p[k]]);
f[k][i][p[k-1]]=min(f[k][i][p[k-1]],f[k-1][i][j]+c[j][p[k]]);

不妨設p0=3,那么初始值f[0][1][2]=0;目標為f[N][?][?];

題后反思:

求解線性dp要注意階段的選擇,注意附加信息要處理;

確定狀態時要注意選擇最小的能表示整個狀態的維度空間;

階段保證無后效性;

#include<bits/stdc++.h> #define maxl 201 #define maxn 1001 using namespace std; int f[1001][201][201],n,m,t,l,c[201][201],p[1001],ans; template<typename T>inline void read(T &x) {x=0;T f=1,ch=getchar();while(!isdigit(ch)) ch=getchar();if(ch=='-') f=-1, ch=getchar();while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48), ch=getchar();x*=f; } int main() {read(t);while(t--) {int ans=2139062143;read(l);read(n);for(int i=1;i<=l;i++)for(int j=1;j<=l;j++)read(c[i][j]);memset(f,0x7f,sizeof(f));for(int i=1;i<=n;i++) {read(p[i]);}f[0][1][2]=c[3][p[1]];f[0][2][3]=c[1][p[1]];f[0][1][3]=c[2][p[1]];p[0]=3,f[0][1][2]=0;for(int k=1;k<=n;k++)for(int i=1;i<=l;i++)for(int j=1;j<=l;j++)if(i!=j&&p[k-1]!=j&&p[k-1]!=i){f[k][i][j]=min(f[k][i][j],f[k-1][i][j]+c[p[k-1]][p[k]]);f[k][p[k-1]][j]=min(f[k][p[k-1]][j],f[k-1][i][j]+c[i][p[k]]);f[k][i][p[k-1]]=min(f[k][i][p[k-1]],f[k-1][i][j]+c[j][p[k]]);}for(int i=1;i<=l;i++)for(int j=1;j<=l;j++) {if(i!=j&&i!=p[n]&&j!=p[n])ans=min(ans,f[n][i][j]);}printf("%d\n",ans);}return 0; } View Code

?

轉載于:https://www.cnblogs.com/Tyouchie/p/10668379.html

總結

以上是生活随笔為你收集整理的CH 5102Mobile Service题解的全部內容,希望文章能夠幫你解決所遇到的問題。

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