划分型循环DP
来源:互联网 发布:电力牵引预算编制软件 编辑:程序博客网 时间:2024/06/06 04:01
题目链接:http://codevs.cn/problem/1085/
分析:求各个区间值,枚举起点,填充基位DP,划分DP处理
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define mod(a,b) ((a%b+b)%b)#define maxn 505#define REP(a,b,c) for(int a = b ; a <= c ; ++a)int n , m;int a[maxn];int sum[maxn];int dp1[maxn][maxn];int dp2[maxn][maxn];int main(){ cin >> n >> m; REP(i,1,n)scanf("%d",&a[i]),a[i+n] = a[i]; REP(i,1,n<<1)sum[i] = mod(sum[i-1] + a[i] , 10); int minn = 1e9; int maxx = 0; REP(i,0,n-1)//枚举起点 { memset(dp1,0,sizeof(dp1)); memset(dp2,1,sizeof(dp2)); REP(j,1,n) dp1[1][j]=dp2[1][j]=mod(sum[j+i]-sum[i],10); REP(j,2,m) { REP(k,j,n) { REP(l,1,k-1) { dp1[j][k]=max(dp1[j][k],dp1[j-1][l]*mod(sum[k+i]-sum[l+i],10)); dp2[j][k]=min(dp2[j][k],dp2[j-1][l]*mod(sum[k+i]-sum[l+i],10)); } } } maxx = max(dp1[m][n],maxx); minn = min(dp2[m][n],minn); } cout << minn << endl << maxx << endl;}
0 0
- 划分型循环DP
- 【划分型DP】整数划分
- 划分型DP
- 划分型DP相关
- 划分型dp
- 【划分型DP】数的划分
- 【划分型DP】乘积最大
- 【划分型DP】数字游戏
- wikioi1039数的划分(划分型dp)
- CODEVS 1039 数的划分(划分型DP)
- [poj 1191] 棋盘分割 划分型DP
- 【划分型DP】统计单词个数
- <划分型DP>【noip 2000】乘积最大
- 集合划分 DP
- 划分数(DP)
- 划分数问题 DP
- 划分问题(dp)
- 区间DP 整数划分
- LeetCode | 537. Complex Number Multiplication
- UML图
- python中super工作原理
- 在VS2015上搭建opencv_3.2.0_vc14
- 内核日志:API 及实现
- 划分型循环DP
- Launcher 安装APK快捷方式出现在末尾空白位置
- 微信小程序的app.json配置(二)
- java读取文本文件异常
- Linux安装JDK
- Linux学习之三(根文件系统详解及文件管理mkdir,touch)
- Laravel 下配置 Redis Session
- linux 网络编程---域名解析
- 解决BASE64Encoder类在Eclipse中无法使用问题