题目传送门

解题思路:

跟石子合并差不多,区间DP(环形),用f[i][j][s]表示从i到j分成s段所能获得的最大答案,枚举断点k,则f[i][j][s] = min(f[i][j][s],f[i][k][s-1] * 代价),最小值反之.

ps:区间和用前缀和维护.

AC代码:

 #include<iostream>
#include<cstdio>
#include<cstring> using namespace std; int n,m,sum[],f[][][],f2[][][],a[]; int main() {
scanf("%d%d",&n,&m);
for(int i = ;i <= n; i++) {
scanf("%d",&a[i]);
sum[i] = sum[i-] + a[i];
}
memset(f,0x3f3f,sizeof(f));
for(int i = n + ;i <= * n; i++)
sum[i] = sum[i-n] + sum[n];
for(int i = ;i <= * n; i++)
for(int j = i;j <= * n; j++)
f[i][j][] = f2[i][j][] = ((sum[j] - sum[i-]) % + ) % ;
for(int len = ;len < n; len++)
for(int i = ,j = i + len;j <= * n; i++,j++)
for(int s = ;s <= m; s++)
for(int k = i + s - ;k < j; k++) {
f[i][j][s] = min(f[i][j][s],f[i][k][s-] * (((sum[j] - sum[k]) % + ) % ));
f2[i][j][s] = max(f2[i][j][s],f2[i][k][s-] * (((sum[j] - sum[k]) % + ) % ));
}
int maxans = ;
int minans = 0x3f3f3f3f;
for(int i = ;i <= * n; i++) {
maxans = max(maxans,f2[i][i+n-][m]);
minans = min(minans,f[i][i+n-][m]);
}
printf("%d\n%d",minans,maxans);
return ;
}

洛谷 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,将\(maxn[i][j][k]\)表示为i到j区间内分为k个区间所得到的最大值,\(minn\)表示最小值. 然后可以得到状态转移方程: \[maxn[i][j][k]= max(m ...

  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. 机器学习(ML)十一之CNN各种模型

    深度卷积神经网络(AlexNet) 在LeNet提出后的将近20年里,神经网络一度被其他机器学习方法超越,如支持向量机.虽然LeNet可以在早期的小数据集上取得好的成绩,但是在更大的真实数据集上的表现 ...

  2. Day2-G-Sticks-POJ1011

    George took sticks of the same length and cut them randomly until all parts became at most 50 units ...

  3. Golang gin开源实例——接口

    Github地址 https://github.com/EDDYCJY/go-gin-example 返回值 字段:code.msg.data 举例 # 失败 { , "msg": ...

  4. Hyper-V网卡ping不通本机

    可能的解决方案: 添加网卡时选择"旧版"

  5. 留学Essay写作:精准用词很重要

    很多觉得自己英语成绩还行的同学经常在自己的文章里用一些浮夸或者是难度特别大的词语,以显示自己的英语水平.当然了,成功了倒也无可厚非,要是有些词语用错了那可是会被别人笑掉大牙的.因此英语中的精准用词就成 ...

  6. Java中很少用的CopyOnWriteArrayList

    类注释 /** * A thread-safe variant of {@link java.util.ArrayList} in which all mutative * operations ({ ...

  7. python实现PCA算法原理

    PCA主成分分析法的数据主成分分析过程及python原理实现 1.对于主成分分析法,在求得第一主成分之后,如果需要求取下一个主成分,则需要将原来数据把第一主成分去掉以后再求取新的数据X’的第一主成分, ...

  8. 一 CRM 注册功能实现

    前端:登陆页面按钮跳转到注册页面 dao:  配置连接池 配置session工厂,Hibernate核心配置,映射 配置UserDao,注入session工厂 UserDao:继承HibernateD ...

  9. 吴裕雄--天生自然JAVA数据库编程:CallableStatement接口

    DELIMITER // DROP PROCEDURE myproc // -- 删除过程 CREATE PROCEDURE myproc(IN p1 int,INOUT p2 int,OUT p3 ...

  10. 在linux7(centos)中安装python3.7.2

    一般情况下linux上都默认安装了python,检查一下我的版本 没有安装python3,但是目前已经是python3了,所以为了方便,还是要在系统上安装一下比较好. 上面的命令,直接输入python ...