博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P4046 [JSOI2010]快递服务
阅读量:5810 次
发布时间:2019-06-18

本文共 1231 字,大约阅读时间需要 4 分钟。

很容易想出\(O(n^3m)\)的方程,三维分别表示某个快递员现在在哪里,然后直接递推即可

然而这样会T,考虑怎么优化。我们发现每一天的时候都有一个快递员的位置是确定的,即在前一天要到的位置。那么我们只要枚举剩下的两个人分别在哪里就行了,复杂度变为\(O(n^2m)\)

//minamoto#include
#define fp(i,a,b) for(register int i=a,I=b+1;i
I;--i)#define go(u) for(register int i=head[u],v=ver[i];i;i=Next[i],v=ver[i])#define inf 0x3f3f3f3fusing namespace std;template
inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}const int N=205,M=1005;int G[N][N],dp[2][N][N],a[M],n,m,ans=inf;int main(){// freopen("testdata.in","r",stdin);// freopen("express.in","r",stdin);// freopen("express.out","w",stdout); scanf("%d",&m); fp(i,1,m)fp(j,1,m)scanf("%d",&G[i][j]); while(~scanf("%d",&a[++n]));--n; fp(i,1,m)fp(j,1,m)dp[0][i][j]=inf; dp[0][1][2]=0,a[0]=3; fp(t,0,n-1){ int p=t&1; fp(i,1,m)fp(j,1,m)dp[p^1][i][j]=inf; fp(i,1,m)fp(j,1,m)if(dp[p][i][j]!=inf){ cmin(dp[p^1][a[t]][j],dp[p][i][j]+G[i][a[t+1]]); cmin(dp[p^1][i][a[t]],dp[p][i][j]+G[j][a[t+1]]); cmin(dp[p^1][i][j],dp[p][i][j]+G[a[t]][a[t+1]]); } } fp(i,1,m)fp(j,1,m)cmin(ans,dp[n&1][i][j]); printf("%d\n",ans);return 0;}

转载于:https://www.cnblogs.com/bztMinamoto/p/10006864.html

你可能感兴趣的文章
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>
国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
查看>>
微软将停止对 IE 8、9和10的支持
查看>>
微服务架构会和分布式单体架构高度重合吗
查看>>
如何测试ASP.NET Core Web API
查看>>
《The Age of Surge》作者访谈
查看>>
测试人员的GitHub
查看>>
Spring Web Services 3.0.4.RELEASE和2.4.3.RELEASE发布
查看>>
有关GitHub仓库分支的几个问题
查看>>
无服务器计算的黑暗面:程序移植没那么容易
查看>>
云原生的浪潮下,为什么运维人员适合学习Go语言?
查看>>
Webpack入门教程三十
查看>>
EAServer 6.1 .NET Client Support
查看>>