题目

区间DP,将\(maxn[i][j][k]\)表示为i到j区间内分为k个区间所得到的最大值,\(minn\)表示最小值。

然后可以得到状态转移方程:

\[maxn[i][j][k]= max(maxn[i][j][k],maxn[i][l][k-1]*(l到j的\%10后的和))$$。

然后判断一下边界就能得到最终答案。

```c++
#include <bits/stdc++.h>
using namespace std;
int n, m, data[1001010];
int sum[111], ha[111][111];//每一段区间的和
int maxn[111][111][111], minn[111][111][111];
int ans1, ans2 = 2147483647;
int main()
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++)
{
scanf("%d", &data[i]);
data[i + n] = data[i];
}
n *= 2;
for (int i = 1; i <= n; i++)
sum[i] = sum[i - 1] + data[i];
memset(minn, 12, sizeof(minn));
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
ha[i][j] = (sum[j] - sum[i] + 100000) % 10, maxn[i][j][1] = minn[i][j][1] = ha[i][j];
for (int k = 2; k <= m; k++)
for (int i = 1; i <= n; i++)
for (int j = i + k - 1; j <= n; j++)
{
minn[i][j][k] = 214748367;
for (int l = i + k - 2; l < j; l++)
{
maxn[i][j][k] = max(maxn[i][l][k - 1] * ha[l][j], maxn[i][j][k]);
minn[i][j][k] = min(minn[i][l][k - 1] * ha[l][j], minn[i][j][k]);
}
}
for (int i = 1; i <= n / 2; i++)
ans1 = max(maxn[i][i + n / 2][m], ans1), ans2 = min(minn[i][i + n / 2][m], ans2);
printf("%d\n%d", ans2, ans1);
return 0;
}
```\]

洛谷P1043数字游戏的更多相关文章

  1. 洛谷——P1043 数字游戏

    https://www.luogu.org/problem/show?pid=1043 题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要 ...

  2. 洛谷P1043 数字游戏

    题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...

  3. 洛谷 P1043 数字游戏 区间DP

    题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...

  4. 洛谷 P1043 数字游戏(区间dp)

    题目链接:https://www.luogu.com.cn/problem/P1043 这道题与石子合并很类似,都是把一个环强制改成一个链,然后在链上做区间dp 要初始化出1~2n的前缀和,方便在O( ...

  5. 洛谷 P1043 数字游戏

    题目传送门 解题思路: 跟石子合并差不多,区间DP(环形),用f[i][j][s]表示从i到j分成s段所能获得的最大答案,枚举断点k,则f[i][j][s] = min(f[i][j][s],f[i] ...

  6. 洛谷 P5660 数字游戏 & [NOIP2019普及组]

    传送门 洛谷改域名了QAQ 解题思路 没什么好说的,一道红题,本不想发这篇博客 ,但还是尊重一下CCF吧QAQ,怎么说也是第一年CSP呢! 用getchar一个个读入.判断.累加,最后输出即可. 不过 ...

  7. 「区间DP」「洛谷P1043」数字游戏

    「洛谷P1043」数字游戏 日后再写 代码 /*#!/bin/sh dir=$GEDIT_CURRENT_DOCUMENT_DIR name=$GEDIT_CURRENT_DOCUMENT_NAME ...

  8. 洛谷P1118 数字三角形游戏

    洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直 ...

  9. 洛谷P1553 数字翻转(升级版)

    题目链接 https://www.luogu.org/problemnew/show/P1553 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的 ...

随机推荐

  1. guava使用

    对于Guava Cache本身就不多做介绍了,一个非常好用的本地cache lib,可以完全取代自己手动维护ConcurrentHashMap. 背景 目前需要开发一个接口I,对性能要求有非常高的要求 ...

  2. Linux的巡检命令

    # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname ...

  3. 溢出处理、盒子模型、背景图片、float(浮动)

    一.overflow:溢出内容的处理     overflow:hidden;  溢出内容隐藏(在父元素内使用,可以清除子元素浮动对父元素的影响)    overflow:auto; 自动滚动(有溢出 ...

  4. Java服务端口被占用问题

    在改code的时候eclipse突然崩溃了,未响应状态等了好久也没转完,只能结束进程了,再次打开eclipse果然无法启动项目.报的错误是端口被占用. 又不想重启电脑,只能记录下微服务下的卡死清理端口 ...

  5. 为什么在定义hashcode时要使用31这个数呢?

    散列计算就是计算元素应该放在数组的哪个元素里.准确的说是放到哪个链表里面.按照Java的规则,如果你要想将一个对象放入HashMap中,你的对象的类必须提供hashcode方法,返回一个整数值. ht ...

  6. 根据不同配置.env获取不同的配置文件的配置

    env 不同环境 1. 安装扩展 composer require vlucas/phpdotenv 2 . 创建文件 .env .env.test .env.production .env.exam ...

  7. C#-NLog记录日志

    Nuget获取包 配置文件 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns= &quo ...

  8. Shell: sh,bash,csh,tcsh等shell的区别(转)

    转载自:http://zhidao.baidu.com/question/493376840.html, http://blog.sina.com.cn/s/blog_71261a2d0100wmbj ...

  9. H3C 802.11网络的基本元素

  10. Linux crontab命令参数和时间格式说明

    crontab 是用来让使用者在固定时间或固定间隔执行程序之用 参数说明 选项 功能 -e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前用户所有的crontab任务 时间格 ...