留个坑

挺套路的

明天来写个总结

#include<cstdio>
#include<algorithm>
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
const int maxn = 2007;
int dp[maxn][maxn],s[maxn][maxn],cnt[maxn];
int sum[maxn];
int dpm[maxn][maxn];
int main () {
int n = read();
for(int i = 1;i <= n;++ i) cnt[n + i] = cnt[i] = read(),sum[i] = sum[i - 1] + cnt[i];
for(int i = n + 1;i <= n * 2;++ i) sum[i] = sum[i - 1] + cnt[i];
for(int i = 1;i <= 2 * n;++ i) s[i][i] = i;
for(int i = n * 2 - 1;i >= 1;-- i) {
for(int j = i + 1;j <= n * 2;++ j) {
int tmp = 0x7fffffff,loc = 0;
dpm[i][j] = std::max(dpm[i][j - 1],dpm[i + 1][j]) + sum[j] - sum[i - 1];
for(int k = s[i][j - 1];k <= s[i + 1][j];++ k) {
if(tmp >dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1]) {
tmp = dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1];
loc = k;
}
}
dp[i][j] = tmp;
s[i][j] = loc;
}
}
int ansm = 0x7fffffff,ansx = 0;
for(int i = 1;i <= n;++ i) {
ansm = std::min(dp[i][i + n - 1],ansm) ;
ansx = std::max(dpm[i][i + n - 1],ansx) ;
}
printf("%d\n%d",ansm,ansx);
return 0;
}

最新文章

  1. Shell_1 简介
  2. QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
  3. 蛋疼的vs
  4. T4模板之初体验(语法)
  5. C++ streambuf用法
  6. ASP.NET的错误处理机制之二(实例log4net)
  7. YII 配置文件
  8. [GCJ]Password Attacker
  9. discuz云平台报调用远程接口失败的问题分析和解决
  10. Laravel框架——Session操作
  11. HDU5032 -- Always Cook Mushroom 树状数组 14年北京网络赛
  12. NSIS:禁止选择安装路径和编辑安装目录
  13. carry-检查数据接口返回数据合法性
  14. 【SQL注入】mysql中information_schema详解
  15. PHP中让json_encode不自动转义斜杠“/”的方法
  16. 删除一个cjson导致系统死机
  17. Golang优秀开源项目汇总
  18. wc.java
  19. vue、react、angular三大框架对比 &amp;&amp; 与jQuery的对比
  20. Oracle数据库 中的基础的一些语法结构

热门文章

  1. 深入分析Spring 与 Spring MVC容器(山东数漫江湖)
  2. Java案例之士兵作战功能实现
  3. 数字签名算法rsa
  4. 任务调度框架kunka
  5. 运输层和TCP/IP协议
  6. [hadoop][基本原理]zookeeper简单使用
  7. mysql innodb 数据表不存在
  8. 关于 拼接 url 连接 参数的问题(爬虫)。
  9. 获取分组后的TOP 1和TOP N记录
  10. javascript 实现图片放大镜功能