题解 P7751 [COCI2013-2014#2] PUTNIK
1.题解 P7763 [COCI2016-2017#5] Ronald2.题解 P6497 [COCI2016-2017#2] Prosječni3.题解 P7537 [COCI2016-2017#4] Rima4.题解 P8017 [COCI2013-2014#4] UTRKA
5.题解 P7751 [COCI2013-2014#2] PUTNIK
6.题解 P7752 [COCI2013-2014#2] PALETA7.题解 P7586 [COCI2012-2013#1] SNAGA8.题解 P6485 [COCI2010-2011#4] PROSJEK9.题解 P6447 [COCI2010-2011#1] ŽABE10.题解P6677 [COCI2019-2020#2] Checker11.题解P8073 [COCI2009-2010#7] BAKICE12.题解P8084 [COCI2011-2012#4] BROJ13.题解P6370 [COCI2006-2007#6] KAMEN14.题解 P7165 [COCI2020-2021#1] Papričice15.题解 P9911 [COCI 2023/2024 #2] Kuglice16.题解 P6356 [COCI2007-2008#3] CUDAK17.题解 P7309 [COCI2018-2019#2] Kocka18.题解 P6548 [COCI2010-2011#2] IGRA19.题解 P6491 [COCI2010-2011#6] ABECEDA洛谷。
题意
一共有
分析
这道题我们首先要分析出这个推销员的经过路线的性质,搞懂这个之后,其实这道题是比较简单的。
在他登上编号为
假如说我们现在的节点是
全部已经被经过过,那下一步就会是大于 的且没有被经过过的最小点;- 否则,可以再
中任选一个经过。
总结一下这个过程,我们的推销员,他会从某个起点开始,不断向下标更小的节点,知道到达
先考虑暴力,我们暴力模拟我们的上述过程。枚举起点。
inline void dfs(int now,int opt,int tot) { if(now==n+1) return void (ans=min(ans,tot)); if(now==1) opt=1; if(opt==1) { for(int i=now+1; i<=n+1; ++i) { if(vis[i]) continue; vis[i]=1; dfs(i,1,tot+a[i][now]); vis[i]=0; break; } } else { for(int i=1; i<now; ++i) { if(vis[i]) continue; vis[i]=1; dfs(i,-1,tot+a[i][now]); vis[i]=0; } } }
时间复杂度:
拿下
可以发现,我们在跑至
当我们在
依旧是 dfs,传两个参数
要么是接在从大到小的最后面,要么是接在从小到大的最前面。
并且由于我们枚举了起点,由此,我们需要先处理完
由此写出代码:
inline int dfs(int l,int r) { int now=min(l,r); if(now==1) return a[l][r]; return min(dfs(l,now-1)+a[now-1][r],dfs(now-1,r)+a[now-1][l]); }
时间复杂度并没有太多变化,依旧是
但是这个 dfs 好优化啊,显然,我们用记忆化优化。
时间复杂度就变成了:
inline int dfs(int l,int r) { int now=min(l,r); if(f[l][r]<INF) return f[l][r]; if(now==1) return a[l][r]; return f[l][r]=min(dfs(l,now-1)+a[now-1][r],dfs(now-1,r)+a[now-1][l]); } signed main() { n=read(); for(int i=1; i<=n ; ++i) for(int j=1; j<=n; ++j) a[i][j]=read(); for(int i=1; i<=n; ++i) for(int j=i+1; j<=n; ++j) e[i][j]=e[i][j-1]+a[j][j-1]; memset(f,0x3f,sizeof f); int ans=INF; for(int i=n; i; --i) ans=min(ans,e[i+1][n]+dfs(i,i+1)); cout<<ans; return 0; }
如此,就可以愉快的 A 掉此题了,其实代码并不难写,方向在理解好题目后其实也是比较显然的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!