看一下题目 和普通的数字三角形看似没啥区别(区别很大)

然后去想:DP方程

DP[i][j]=Max(DP[i-][j],DP[i-][j-])+a[i][j]

ans=Max(DP[n][..n])

这是普通的数字三角形的方程。。。然后你会发现跟这道题没啥直接关系

主要是这道题目比较毒瘤 因为 有的时候局部最优≠全局最优

所以...这题 仔细一看 mod 100 就说明了 余数 肯定<100

然而 动态规划的每一维都是表示状态。。

这里用到3个状态。 x,y,w(自然就是三维)

#include <bits/stdc++.h>
#define rep(i,j,n) for(register int i=j;i<=n;i++)
using namespace std;
typedef long long LL;
inline LL read() { LL x=; int f=; char ch=getchar();
while(!isdigit(ch)) { if (ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) x=(x<<)+(x<<)+(ch^),ch=getchar(); return x*f;
}
int n;
const int N=<<;
const int mod=;
LL a[N][N];
bool DP[N][N][N];
signed main(){
n=read();
rep(i,,n) rep(j,,i) a[i][j]=read()%mod;
DP[][][a[][]]=;
rep(i,,n) rep(j,,i) rep(k,,) if(DP[i][j][k]) {
DP[i+][j][(k+a[i+][j])%mod]=;
DP[i+][j+][(k+a[i+][j+])%mod]=;
}
for(register int k=;k>=;k--) rep(i,,n) if(DP[n][i][k]) {
cout << k << endl ;
return ;
}
}

时间复杂度大概就是(100*n2

最新文章

  1. 搞懂 SynchronizationContext(第一部分)【翻译】
  2. .edmx 文件概述(实体框架)
  3. boost any库
  4. 7月10日——[HouseStark] 扬帆起航--第一次会议
  5. 使用bat脚本添加JAVA_HOME和修改PATH
  6. ios本地推送
  7. [c#基础]值类型和引用类型的Equals,==的区别
  8. Python学习总结16:时间模块datetime &amp; time &amp; calendar (三)
  9. Shader for sprite clipping
  10. 深入剖析Classloader(二)--根类加载器,扩展类加载器与系统类加载器
  11. windows/linuxjdk安装,jdk1.6升级到1.7
  12. 浅谈Java工具类CommonUtils的使用
  13. MVC + AngularJS 初体验(实现表单操作)
  14. emmet-前端开发神器的几种写法
  15. 洛谷P3620 数据备份
  16. python高级数据可视化Dash2
  17. DeepLearning4J
  18. jq 全选与联动的小例子
  19. 2、let 和 const 命令
  20. matplotlib.pyplot 让数据可视化

热门文章

  1. JSP内置对象说明
  2. python3 的 zip
  3. CSS3制作404立体字体
  4. 【Codeforces 442B】Andrey and Problem
  5. Ajax学习总结(2)——Ajax参数详解及使用场景介绍
  6. Elasticsearch使用总结
  7. HDU——1023 Train Problem II
  8. java String长度与varchar长度匹配理解(字符和字节长度理解)
  9. firebug 扩展介绍和下载
  10. PhoneGap3+版本号的安装、配置和使用[图]