code1085 数字游戏
2024-09-17 13:15:37
划分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 ;
}
最新文章
- Appium环境搭建+cordova
- Unable to locate secure storage module异常的解决方案
- 简单SSM配置详解
- 【转】Oracle集合操作函数:union、intersect、minus
- windows分屏
- Flex xxx-app.xml配置
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
- 使用ant自动编译、打包生成apk文件
- C#5 复习总结循环 迭代和穷举
- java加解密
- [算法] trie树实现
- iOS开发添加pch文件
- 权限管理系统之SpringBoot集成LayUI实现后台管理首页
- Windows 10 远程连接出现函数错误 【这可能由于CredSSP加密Oracle修正】
- laravel整合vue 多入口解决
- jquery表单提交的新写法
- java生成zip压缩文件,解压缩文件
- app 开发
- go-simplejson文档学习
- 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-10底层驱动之I2C
热门文章
- TCP/IP网络编程系列之四(初级)
- 解决win下无法ping通VM虚拟机CentOS系统的方法
- 阻塞队列之四:ArrayBlockingQueue
- laravel5中添加自定义函数
- 超详细的php用户注册页面填写信息完整实例(附源码)
- canvas之画一个三角形
- Windows下安装GCC
- SHUTDOWN: waiting for active calls to complete
- 从windows拷贝到linux的脚本报错:未找到命令 or 语法错误
- A start job is running for /etc/rc.d/rc.local ... ... no limit