传送门


动态规划Yes?

设i为路径长度,(为什么i这一维可以省掉见下)f[j][k]表示第一个点到了(j,i-j),第二个点到了(k,j-k)

        int ji=i-j,ki=i-k;
f[j][k]=max(f[j][k],f[j-][k-]);
f[j][k]=max(f[j][k],f[j-][k]);
f[j][k]=max(f[j][k],f[j][k-]);
f[j][k]+=s[j][ji];
if(j!=k&&ji!=ki) f[j][k]+=s[k][ki];

由于只从上一个状态转移,所以可以像01背包那样倒序循环,保证只访问上一个状态。

#include<cstdio>
#include<iostream>
#include<algorithm>
#define R register int
using namespace std;
int n,cnt,f[][],s[][];
struct node {
int u,v,w;
}a[];
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=(ret<<)+(ret<<)+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
inline int max(int a,int b) {return a>b?a:b;}
signed main() {
n=g(); R u=g(),v=g(),w=g();
while(u&&v&&w) {a[++cnt].u=u,a[cnt].v=v,a[cnt].w=w;u=g(),v=g(),w=g();}
for(R i=;i<=cnt;i++) {s[a[i].u][a[i].v]=a[i].w;}
for(R i=;i<=(n<<);i++) for(R j=i;j>=;j--) for(R k=i;k>=;k--) {
R ji=i-j,ki=i-k;
f[j][k]=max(f[j][k],f[j-][k-]);
f[j][k]=max(f[j][k],f[j-][k]);
f[j][k]=max(f[j][k],f[j][k-]);
f[j][k]+=(s[j][ji]+s[k][ki]*(j!=k));
} printf("%d\n",f[n][n]);
}

2019.3.1

最新文章

  1. Linux下安装tar.gz类型的jdk,并配置环境变量
  2. Itext Demo
  3. 为Autodesk Viewer添加自定义工具条的更好方法
  4. 模板引擎freemarker的简单使用教程
  5. VS2010 安装使用STLPort
  6. CCF真题Z型输出
  7. Razor 语法快速参考
  8. mysql主从配置(清晰的思路)
  9. NSlog警告—— 编译器打印NSInteger类型
  10. [转]PB 基本语句 循环语句
  11. css代码实现
  12. IO和socket编程
  13. php 例子 如何转换ISO8601为 utc时间
  14. mssql查询过去一段时间数据库中执行过的语句及执行效率
  15. Keepalived概述和安装(1)
  16. UML学习——类之间的关系
  17. 线程之-volatile
  18. shell脚本中gsub的应用
  19. 【Spring】18、springMVC对异常处理的支持
  20. 远程服务器安装mysql数据库

热门文章

  1. Hive- Hive安装
  2. 分享知识-快乐自己:SpringMvc中的四种数据源及相关配置(整合快速集成开发)
  3. 常见css兼容问题
  4. CodeForces -163E :e-Government (AC自动机+DFS序+树状数组)
  5. N1游记
  6. ACM学习历程—HDU1716 排列2(dfs &amp;&amp; set容器)
  7. 【Lintcode】119.Edit Distance
  8. docker的操作
  9. TCP头部格式详解,附Wireshark对TCP头部抓包分析
  10. [cf2015ICLFinalsDiv1J]Ceizenpok’s formula