思路:

这题和

【动态规划】P1018 线性dp:乘积最大_m0_52043808的博客-CSDN博客

十分类似,都是把一组数分成固定的部分,然后对分好的数进行特定的操作,求操作后所得的最值

所以,两题核心思路相同,都是枚举最后一次分界线的位置求最大值

但不同的是,这题破环成链,储存两次数据。

破环成链后用区间dp模板:

int a[2n+1];
for(int i=1;i<=n;i++){cin>>a[i];a[n+i]=a[i];
}
//初始化
for(int len=2;len<=n;len++)for(int i=1;i+len-1<=2*n;i++)int j=len+i-1;for(int k=i;k<j;k++)dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);

代码:

#include<iostream>
#include<cstring>
using namespace std;
int a[101];
int n,m;
int dp[101][101][10];
int dp1[101][101][10];
int sum[101];
int cal(int i,int j){int res;res=sum[j]-sum[i-1];return ((res%10)+10)%10;
}
int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];a[n+i]=a[i];sum[i]=sum[i-1]+a[i];}for(int i=n+1;i<=2*n;i++){sum[i]=sum[i-1]+a[i];}memset(dp1,0x3f3f3f,sizeof(dp1));for(int i=1;i<=2*n;i++){for(int j=i;j<=2*n;j++){dp[i][j][0]=dp1[i][j][0]=cal(i,j);}}for(int len=2;len<=n;len++){for(int i=1;i+len-1<=2*n;i++){int j=len+i-1;for(int k=1;k<=m-1;k++){for(int l=i;l<=j-1;l++){dp[i][j][k]=max(dp[i][j][k],dp[i][l][k-1]*cal(l+1,j));dp1[i][j][k]=min(dp1[i][j][k],dp1[i][l][k-1]*cal(l+1,j));}}}}int res=0; int res1=0x3f3f3f3f;for(int i=1;i<=n;i++){res=max(res,dp[i][i+n-1][m-1]);res1=min(res1,dp1[i][i+n-1][m-1]);}cout<<res1<<endl;cout<<res;
}

【动态规划】线性dp P1043 数字游戏相关推荐

  1. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  2. 动态规划 —— 线性 DP

    [概述] 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题.区间DP等有固定的模板. 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式 ...

  3. 【DP】数字游戏(jzoj 2131)

    数字游戏 jzoj 2131 题目大意: 有n个数,每个数有相应的aia_iai​和bib_ibi​,当选了一个数后结果加上aia_iai​,其他数分别减去他们自己的aja_jaj​,现在让你选m个数 ...

  4. CSP 2021考前每日2题(09-24)洛谷P1043 数字游戏 + P3958 奶酪

    文章目录 P1043 [NOIP2003 普及组] 数字游戏 P3958 [NOIP2017 提高组] 奶酪 P1043 [NOIP2003 普及组] 数字游戏 #include<iostrea ...

  5. 动态规划 —— 线性 DP —— 字符串编辑距离

    [概述] 字符串编辑距离,即 Levenshtein 距离,是俄国科学家 Vladimir Levenshtein 提出的概念,是指从一个字符串修改到另一个字符串时,编辑单个字符所需的最少次数,编辑单 ...

  6. 动态规划 —— 线性 DP —— 最大和问题

    [最大子序列和] 问题定义:对于给定序列 a1,a2,a3--an 寻找它的连续的最大和子数组. 用数组 dp[i] 来保存当前最大的连续子数组,循环遍历每个数,然后每次检验 dp[i-1] 是否大于 ...

  7. 动态规划 —— 线性 DP —— 序列问题

    [基本概念] 子序列: 一个序列 A=a1,a2,--an 中任意删除若干项,剩余的序列叫做 A 的一个子序列.也可以认为是从序列 A 按原顺序保留任意若干项得到的序列.(例如:对序列{1,3,5,4 ...

  8. AcWing 1018. 最低通行费【动态规划】【线性DP】【数字三角形】

    AcWing 1018. 最低通行费 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 1018. 最低通行费 二.题目分析 (一)算 ...

  9. 【LeetCode笔记 - 每日一题】375. 猜数字游戏 II (Java、DFS、动态规划)

    文章目录 题目描述 思路 && 代码 DFS 动态规划 新系列-用于区分开高频题和每日一题- 题目描述 一眼二分,但是实际上并不是 这题让我想到社团的猜数字游戏-但是给钱是真过分了= ...

最新文章

  1. 线性代数的本质与几何意义 02. 线性组合、张成的空间、基(3blue1brown 咪博士 图文注解版)...
  2. 你所不知道的 Transformer!
  3. c语言switch中用ifelse,初学者求问:用if单分支选择语句替换switch语句?if.else呢...
  4. 提高C++程序运行效率的10个简单方法
  5. April Fools Day Contest 2016 A. Da Vinci Powers
  6. Spring Cloud云架构 - commonservice-sso服务搭建(一)
  7. ios 控件切圆_iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客...
  8. jqGrid的单字段查询
  9. SAL Annotations的介绍
  10. 2021-06-20 表单详解
  11. C#学习笔记(十八):数据结构和泛型
  12. IIS开启了GZIP和XCACHE之后飞快
  13. python 处理 图像和视频
  14. 百度距离全面掉队BAT还有多远?
  15. 番红-固绿染色(植物)
  16. Android使用mob实现第三方登录(Facebook、Twitter)
  17. c语言输出十六进制数乱码,输出乱码
  18. JavaScript 内存溢出解决办法 亲测有效
  19. 当其为质数返回true,否则返回false
  20. 你还在疯狂加班打码?兄dei,不如跟我学做超融合吧!

热门文章

  1. HTTP状态代码列表
  2. hive并行执行job
  3. 微软提供的数据访问组件SqlHelper
  4. Python发展的新时代—冯大辉先生谈《Python源码剖析》
  5. JSK-61 二进制加法【大数】(废除!!!)
  6. I00035 完美数(Perfect number)
  7. 优先队列(priority queue)的实现(java,jdk接口)
  8. Identity of indiscernibles(不可分与同一性)
  9. active set method(激活集方法)
  10. 行列式(determinant)的物理意义及性质