划分dp

把环变链(读入4 3 -1 2变成4 3 -1 2 4 3 -1 2)

设dp[i][j][k]为把i~j分成k份,各部分内的数字相加,相加所得的k个结果对10取模后再相乘,最终得到的一个数,这个数的最大或最小值。

dp[i][j][k]=max/min{dp[i][p][k-1]+func(p+1,j)}

i+k-2<=p<=j-1  func(i,j)=(sum(i,j)%10+10)%10

(注意有负数取余,这样写:(x%10+10)%10 )

边界:dp[i][j][1]=func(i,j)

答案:max/min(dp[i][i+n-1][m])  i=1 to n+1

代码如下:

#include<iostream>
#define Max_n 55
#define Max_m 15
#define Max_int 1000000000
using namespace std; int dp1[Max_n*][Max_n*][Max_m];
int dp2[Max_n*][Max_n*][Max_m];
int a[Max_n*];
int s[Max_n*];
int n,m; inline int sum(int l,int r){ return s[r]-s[l-]; } inline int func(int l,int r){ return (sum(l,r)%+)%; } int main(){
cin>>n>>m;
for(int i=;i<=n;i++){
cin>>a[i];
a[i+n]=a[i];
}
s[]=;
for(int i=;i<=n*;i++){
s[i]=s[i-]+a[i];
} for(int i=;i<=n*;i++){
for(int j=i;j<=n*;j++){//边界
dp1[i][j][]=dp2[i][j][]=func(i,j);
}
}
for(int i=;i<=n*;i++){
for(int j=i;j<=n*;j++){
for(int k=;k<=m;k++){
dp1[i][j][k]=-Max_int;
dp2[i][j][k]=Max_int;
for(int p=i+k-;p<=j-;p++){
dp1[i][j][k]=max(dp1[i][j][k], dp1[i][p][k-]*func(p+,j));
dp2[i][j][k]=min(dp2[i][j][k], dp2[i][p][k-]*func(p+,j));
}
}
}
} int ans1=-Max_int;
int ans2=Max_int;
for(int i=;i<=n+;i++){
ans1=max(ans1,dp1[i][i+n-][m]);
ans2=min(ans2,dp2[i][i+n-][m]);
}
cout<<ans2<<endl<<ans1<<endl; return ;
}

code1085 数字游戏的更多相关文章

  1. C语言猜数字游戏

    猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...

  2. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  3. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  4. 【原创Android游戏】--猜数字游戏Version 0.1

    想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...

  5. 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

    --------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...

  6. NOIP2003pj数字游戏[环形DP]

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

  7. Codevs 1229 数字游戏

    1229 数字游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver     题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了 ...

  8. codevs 1229 数字游戏(可重集的全排列)

    传送门 Description Lele 最近上课的时候都很无聊,所以他发明了一个数字游戏来打发时间.  这个游戏是这样的,首先,他拿出几张纸片,分别写上0到9之间的任意数字(可重复写某个数字),然后 ...

  9. XDU 1161 - 科协的数字游戏II

    Problem 1161 - 科协的数字游戏II Time Limit: 1000MS   Memory Limit: 65536KB   Difficulty: Total Submit: 112  ...

随机推荐

  1. C# 文字转成声音

    C#程序要把特定的文字朗读出来,对于Windows 7及之后的系统可以使用.Net组件——System.Speech 首先在项目中添加“System.Speech”的引用: 然后大致的示例代码如下: ...

  2. 推动FPGA发展箭在弦上,国内厂商须走差异化之路

    7月25日,由中国电子报与深圳投资推广署共同举办的“第六届(2018)中国FPGA产业发展论坛”在深圳召开. 作为四大通用集成电路芯片之一,FPGA(现场可编程门阵列)的重要性与CPU.存储器.DSP ...

  3. GOF23设计模式之命令模式(command)

    一.命令模式概述 将一个请求封装到一个对象,从而使得可用不同的请求对客户进行参数化. 二.命令模式结构 (1)Command 抽象命令类 (2)ConcreteCommand 具体命令类 (3)Inv ...

  4. webpack快速入门(三):资源管理

    上一章说了基本的webpack是用,包括命令行打包,npm脚本打包等基础的东西. 这篇说一下webpack的资源管理,包括(图片,字体,数据),首先调整一下项目结构成: webpack-demo |- ...

  5. NFS的安装以及windows/linux挂载linux网络文件系统NFS

    1.创建linux的NFS服务端安装centos6.4,关闭防火墙/etc/init.d/iptables status yum install nfs-utils rpcbind [root@lin ...

  6. 【学步者日记】UnityEditor扩展菜单以及ScriptableObject

    完整版链接:http://note.youdao.com/noteshare?id=c54f35ca19371886e6a94302387bb6cd 下面是预览的部分,带图的版本请看上面链接.     ...

  7. vptr, vtable, virtual base class table

    #include <iostream> using namespace std; class X { int x, y, z; }; class Y: public virtual X { ...

  8. HDU1257题解

    解题思路:这题的本质就是:求一个给定的数字序列中,非递增(或非递减)子序列的最少的条数. 思维误区:本题很容易被样例坑,以为是直接求跳跃点(i < j && ai < aj ...

  9. 【BZOJ】1441 Min(数学)

    题目 传送门:QWQ 分析 裴蜀定理. 因为存在 $ a_1 $ $ a_2 $...... $ a_n $的最大公约数为 $ d $,那么必定存在 $ x_1*a_1+x_2*a_2+...x_n* ...

  10. mysql导出文本文件,加分隔符

    从mysql导出,再导入到oracle #!/bin/sh cd /u03/tools/machine_info rm -f data/machine_info.txt mysql -u用户名 -p密 ...