题目链接:https://www.luogu.com.cn/problem/P1043

这道题与石子合并很类似,都是把一个环强制改成一个链,然后在链上做区间dp

要初始化出1~2n的前缀和,方便在O(1)的时间内查询[l,r]区间的和。

f[l][r][h] ->

第一维:左端点;第二维:右端点;第三维:分成了几段。

动态转移方程:

很显然的一个初始化:f[l][r][1]=del(sum[r]-sum[l-1]);

转移:f[l][r][h]=min/max(f[l][r][h],f[l][k][h-1]*del(sum[r]-sum[k]));

注意k的枚举

注意初始化数的大小,尤其是memset,0x3f,0x7f,0xc0等。

AC代码:

 #include<cstdio>
#include<iostream>
#include<cstring> using namespace std; int n,m;
int a[],sum[];
int f1[][][],f2[][][];
int maxn,minn=0x7f; inline int del(int x){
return (x%+)%;
} int main(){
memset(f1,0x3f,sizeof(f1));
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
a[i+n]=a[i];
sum[i]=sum[i-]+a[i];
}
for(int i=;i<=n;i++) sum[i+n]=sum[i]+sum[n];
for(int l=;l<=*n;l++){
for(int r=l;r<=*n;r++){
f1[l][r][]=f2[l][r][]=del(sum[r]-sum[l-]);
}
}
for(int i=;i<=n;i++){
for(int l=;l+i-<=*n;l++){
int r=l+i-;
for(int h=;h<=m;h++){
for(int k=l+h-;k<r;k++){
f1[l][r][h]=min(f1[l][r][h],f1[l][k][h-]*del(sum[r]-sum[k]));
f2[l][r][h]=max(f2[l][r][h],f2[l][k][h-]*del(sum[r]-sum[k]));
}
}
}
}
for(int i=;i<=n;i++){
maxn=max(maxn,f2[i][i+n-][m]);
minn=min(minn,f1[i][i+n-][m]);
}
printf("%d\n%d",minn,maxn);
return ;
}

AC代码

洛谷 P1043 数字游戏(区间dp)的更多相关文章

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

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

  2. 洛谷——P1043 数字游戏

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

  3. 洛谷P1043 数字游戏

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

  4. 洛谷P1043数字游戏

    题目 区间DP,将\(maxn[i][j][k]\)表示为i到j区间内分为k个区间所得到的最大值,\(minn\)表示最小值. 然后可以得到状态转移方程: \[maxn[i][j][k]= max(m ...

  5. 洛谷 P1043 数字游戏

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

  6. $loj10156/$洛谷$2016$ 战略游戏 树形$DP$

    洛谷loj Desription Bob 喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的方法.现在他有个问题. 现在他有座古城堡,古城堡的路形成一棵树.他要在这棵树的节点上放置最少数 ...

  7. 洛谷P1040 加分二叉树(区间dp)

    P1040 加分二叉树 题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di, ...

  8. 洛谷 P1220 关路灯 区间DP

    题目描述 某一村庄在一条路线上安装了 n 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了 ...

  9. 洛谷P2470 [SCOI2007]压缩(区间dp)

    题意 题目链接 Sol 神仙题Orz 考虑区间dp,如果我们只设\(f[l][r]\)表示\(s_{lr}\)被压缩的最小长度,而不去关心内部\(M\)分布的话,可能在转移的时候转移出非法状态 因此考 ...

随机推荐

  1. 基于Java+HttpClient+TestNG的接口自动化测试框架(八)------ 针对文件的处理

    在实际的接口测试中,有时需要根据情况进行文件的上传和下载.在文件数量比较小的时候,我们当然可以直接处理(比如若干个接口都用一个文件).但是,如果我们上传的文件需要使用不同文件夹里不同的文件,而且数量又 ...

  2. How to Create an OCM Response file to Apply a Patch in Silent Mode - opatch silent

    Windows Server 2019 打补丁时缺少Oracle Configuration Manager(OCM) 响应文件处理方式. 适用: Oracle Universal Installer ...

  3. Codeforces Round #613 (Div. 2) A-E简要题解

    contest链接:https://codeforces.com/contest/1285 A. Mezo Playing Zoma 签到 #include<iostream> #incl ...

  4. 关于pip命令的几点提醒

    pip install xxxxx 总会遇到安装失败,或者下载速度很慢的情况.这是因为从国外安装资源包,造成速度慢,那有咩有国内的源呢,有的. 国内源: 清华:https://pypi.tuna.ts ...

  5. Hackintosh Issues 10.13.x

    Issuses 1: 出现禁行: (-v:) allcating 0x800 pages at 0x2000000 alloc type 2 Load kernal from stream Load ...

  6. 【sql】sql必知必会_02

    chapter10 - 常用的sql标准有哪些,在SQL92中是如何使用连接的? sql两个主要的标准sql92.sql95: sql92中的五种连接方式: a.笛卡尔积:是一个数学运算,两个集合X和 ...

  7. ERROR EPERM: operation not permitted, mkdir 'C:\Users\Administrator\Desktop\text\nuxt\basic\.nuxt\components'

    C:\Users\Administrator\Desktop\text\nuxt>cd basic C:\Users\Administrator\Desktop\text\nuxt\basic& ...

  8. 联想小新潮怎么修改fn热键以及怎么进入bios状态

    联想小新潮怎么修改fn热键 http://www.ylmfwin100.com/ylmfnew/11129.html  怎么进入bios状态  https://zhidao.baidu.com/que ...

  9. 重启nginx:端口被占用问题

    1.重启nginx出现端口占用问题: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 2.解决方法: 第 ...

  10. winform学习(7)Label控件、Button控件、TextBox控件

    Label控件是System.Windows.Forms.Label 类提供的控件. 作用:主要用来提供其他控件的描述文字,例如:登录窗体上的用户名.密码(输入框前面的字) Button控件是Syst ...