嗯...

题目链接:https://www.luogu.org/problem/P1880

这道题特点在于石子是一个环,所以让a[i+n] = a[i](两倍长度)即可解决环的问题,然后注意求区间最小值的时候dp要初始化为一个很大的数...

AC代码:

 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring> using namespace std; int dp1[][], dp2[][], sum[], a[]; int main(){
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++) {scanf("%d", &a[i]); a[i + n] = a[i];}
for(int i = ; i <= n * ; i++) {sum[i] = sum[i - ] + a[i];}
for(int l = ; l <= n; l++){
for(int i = ; i <= * n; i++){
int j = i + l;
dp2[i][j] = 0x3f3f3f;// 求最小值初始化为很大
if(j > * n) break;
for(int k = i; k < j; k++){
dp1[i][j] = max(dp1[i][j], dp1[i][k] + dp1[k + ][j] + sum[j] - sum[i - ]);
dp2[i][j] = min(dp2[i][j], dp2[i][k] + dp2[k + ][j] + sum[j] - sum[i - ]);
}
}
}
int maxx = , minn = 0x3f3f;
for(int i = ; i <= n; i++){
int j = i + n - ;
maxx = max(maxx, dp1[i][j]);
minn = min(minn, dp2[i][j]);
}
printf("%d\n%d\n", minn, maxx);
return ;
}

AC代码

最新文章

  1. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
  2. gdb 调试多线程
  3. 利用httpd对tomcat进行负载均衡配置
  4. java Collections.sort()实现List排序自定义方法
  5. Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
  6. Linux三剑客之awk
  7. linux基础-第十四单元 Linux网络原理及基础设置
  8. C++专题 - 修练8年C++面向对象程序设计之体会 林锐
  9. Innodb_buffer_pool_pages_dirty [一个故事@MySQL DBA]MYSQL
  10. Java调用R(一)_Rserve
  11. [虚拟化/云][全栈demo] 为qemu增加一个PCI的watchdog外设(五)
  12. signalr中Group 分组群发消息的简单使用
  13. 自定义注解,andjdk提供的元注解
  14. 简易promise的实现(二)
  15. sql注入、csrf
  16. mysql之事务管理
  17. 448C - Painting Fence(分治)
  18. 阿里服务器配置swap
  19. FastClick用法
  20. Scala学习(七)练习

热门文章

  1. C++ 实例练习-替换原生数组
  2. 番外:如何克隆可刷新的PDB(Refreshable PDB)
  3. android button setMinHeight setMinWidth 无效解决办法
  4. BeautifulSoup的基本使用
  5. break continue goto
  6. SQL中 select count(1) count中的1 到底是什么意思呢?和count(*)的区别
  7. 怎么把VS里的scanf_s换成scanf
  8. Java 读取网络资源文件 获取文件大小 MD5校验值
  9. Js选择器总结
  10. [Python]python中assert和isinstance的用法