code1085 数字游戏
划分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 数字游戏的更多相关文章
- C语言猜数字游戏
猜数字游戏,各式各样的实现方式,我这边提供一个实现方式,希望可以帮到新手. 老程序猿就不要看了,黑呵呵 源代码1 include stdio.h include stdlib.h include ti ...
- 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II
好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...
- java 猜数字游戏
作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
- NOIP2003pj数字游戏[环形DP]
题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分 ...
- Codevs 1229 数字游戏
1229 数字游戏 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description Lele 最近上课的时候都很无聊,所以他发明了 ...
- codevs 1229 数字游戏(可重集的全排列)
传送门 Description Lele 最近上课的时候都很无聊,所以他发明了一个数字游戏来打发时间. 这个游戏是这样的,首先,他拿出几张纸片,分别写上0到9之间的任意数字(可重复写某个数字),然后 ...
- XDU 1161 - 科协的数字游戏II
Problem 1161 - 科协的数字游戏II Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 112 ...
随机推荐
- Zookeeper--安装及命令
Zookeeper--单机模式安装 及命令 下载地址: http://zookeeper.apache.org/releases.html tar -zxvf zookeeper-3.4.10.tar ...
- 阻塞队列之一:BlockingQueue汇总
一.阻塞队列介绍 BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景.下图是对这个原理的阐述: 一个线程往里边放,另外一个线程从里边取的一个 BlockingQue ...
- 浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
做过 API 的人应该了解,其实开发 API 比开发 WEB 更简洁,但可能逻辑更复杂,因为 API 其实就是数据输出,不用呈现页面,所以也就不存在 MVC(API 只有 M 和 C),那么我们来探讨 ...
- SpringMVC传统风格控制器和基于注解的控制器
SpringMVC的DispatcherServlet 之前说过springMVC是使用Servlet作为控制器,就是这个用于调度的DispatcherServlet了.这个是servlet,可以根据 ...
- wamp-php 集成环境的基础配置
域名访问设置(本地局域网) 用记事本打开 127.0.0.1是本地回环地址 配置完后 通过在本地浏览器输入www.0705.com就可以访问本地站点了 Wamp集成环境多站点配置 配置条件: 一个服务 ...
- Linux tar命令高级用法——备份数据
Linux tar命令高级用法——备份数据 2015-12-31 Linux学习 Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件 ...
- canvas下载图片
canvas下载图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Android中SharePreferences的简单实现
Android中提供SharePreferences这种轻量级的数据存储模式,这种模式能够存储少量数据,并能为自身和其他应用提供数据接口.相对于其他数据存储方式,SharePreferences更加轻 ...
- processlist中最哪些状态要引起关注
一般而言,我们在processlist结果中如果经常能看到某些SQL的话,至少可以说明这些SQL的频率很高,通常需要对这些SQL进行进一步优化. 今天我们要说的是,在processlist中,看到哪些 ...
- C经典实例
1,九九乘法表 undefined reference to `sqrt' linux本身无math库 -lm,伪链接;