P1880 [NOI1995]石子合并

 #include <bits/stdc++.h>
using namespace std;
const int maxn = ;
const int inf = 0x3f3f3f3f;
int cost1[maxn][maxn], cost2[maxn][maxn]; //当前合并的代价
int dp1[maxn][maxn], dp2[maxn][maxn];
int main() {
int n; cin >> n;
for (int i = ; i <= n; i++) {
cin >> cost1[i][i];
cost2[i][i] = cost1[i][i];
}
for (int i = ; i <= n; i++) {
cost1[n+i][n+i] = cost1[i][i];
cost2[n+i][n+i] = cost2[i][i];
}
n <<= ;
for (int i = ; i <= n/; i++) {
for (int j = ; j <= n-i; j++) {
int x = i+j, y = j+;
for (int k = ; k < i; k++) {
cost1[x][y] = cost1[x-k][y] + cost1[x][y+i-k];
cost2[x][y] = cost2[x-k][y] + cost2[x][y+i-k];
if (dp1[x][y]) dp1[x][y] = min(dp1[x][y],cost1[x][y]+dp1[x-k][y]+dp1[x][y+i-k]);
else dp1[x][y] = cost1[x][y]+dp1[x-k][y]+dp1[x][y+i-k];
if (dp2[x][y]) dp2[x][y] = max(dp2[x][y],cost2[x][y]+dp2[x-k][y]+dp2[x][y+i-k]);
else dp2[x][y] = cost2[x][y]+dp2[x-k][y]+dp2[x][y+i-k];
}
}
}
int mi = inf, mx = ;
n >>= ;
for(int j = ; j <= n; j++) {
mi = min(mi,dp1[n+j][j+]);
}
for(int j = ; j <= n; j++) {
mx = max(mx,dp2[n+j][j+]);
}
cout << mi << endl << mx << endl;
}

最新文章

  1. Java 消息摘要 散列 MD5 SHA
  2. R语言学习笔记:小试R环境
  3. Beta版本贡献比
  4. IOS 中 NSArray
  5. [转]php和html混编的三种方式
  6. 要在一般处理程序中获取其他页面的session值
  7. HDU 1385 Minimum Transport Cost (Dijstra 最短路)
  8. selenium 断言与验证
  9. 《ServerSuperIO Designer IDE使用教程》-4.增加台达PLC驱动及使用教程,从0到1的改变。发布:v4.2.3版本
  10. iOS聊天客服功能(Udesk)
  11. Atomikos和GTS-Fescar和TCC-Transaction和TX-LCN分布式事物的比较
  12. 关于loadtxt编码问题的解决方法
  13. jctable
  14. 【Hadoop 分布式部署 九:分布式协作框架Zookeeper架构 分布式安装部署 】
  15. jquery-menu-aim插件实现二级导航
  16. 电子表格Excel
  17. zepto中的touch库与fastclick
  18. 03: shell简单监控脚本
  19. POJ 2393
  20. SQLServer------插入数据时出现IDENTITY_INSERT错误

热门文章

  1. python学习笔记(五)---函数与类
  2. 2019-2020-1 20199329《Linux内核原理与分析》第一周作业
  3. java在指定区间内生成随机数
  4. 【Linux常见命令】tar命令
  5. yum报[Errno 256] No more mirrors to try
  6. ICML2016 TUTORIAL参会分享
  7. 「每天一道面试题」Java类的生命周期包括哪几个阶段?
  8. bfs—Catch That Cow—poj3278
  9. 简要理解CommonJS规范
  10. FTP服务器项目的一些整理