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 ...
随机推荐
- Unit03: 容器对路径的处理 、 Servlet特性
Unit03: 容器对路径的处理 . Servlet特性 案例一:查询,增加员工: 重定向 处理请求资源路径 目录结构: 案例代码: package dao; import java.io.Seria ...
- 干净的 js测试页面
<!DOCTYPE html><html lang="en" > <head> <meta charset="utf-8&quo ...
- 历届试题 Excel地址
问题描述 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列, .... 当然 ...
- zufeoj NO.1(结构体简单题)
NO.1 时间限制: 1 Sec 内存限制: 128 MB提交: 457 解决: 172[提交][状态][讨论版] 题目描述 所谓NO.1,就是所有成绩都排在第一的同学,我们假设每个人只有理科,文 ...
- 杂项:Vue.js
ylbtech-杂项:Vue.js Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据 ...
- PHP for和foreach的区别
首先,我们先准备两个用于遍历的数组: $arr1=array(1=>'a', 3=>22, 5=>'b', 4=>'c', 8=>'d'); $arr2=array('a ...
- swoole学习
<?php ini_set('default_socket_timeout', -1); class serverEmail { public $serv = null; public func ...
- PEM文件和private.key文件生成IIS服务器所需的pfx文件(配置SSL用)
第一步:输入域名,点击"创建免费的SSL证书"按钮,如图 第二步:输入邮箱,点击创建,如图 创建成功后,需要进行dns验证,结果图如下: 第三步:在域名所在的云服务器上,添加域名解 ...
- php效率优化
php效率优化 最近在公司一边自学一边写PHP程序,由于公司对程序的运行效率要求很高,而自己又是个新手,一开始就注意程序的效率很重要,这里就结合网上的一些资料,总结下php程序效率优化的一些策略:1. ...
- JavaScript Post提交数据并跳转到页面(模拟Form表单提交)
function GotoWatchTicketCode() { var orderID='@ViewBag.OrderInfo.OrderID'; var phoneNum='@ViewBag.Or ...