Vijos P1218 数字游戏(动态规划,环形DP)
来源:互联网 发布:淘宝双十一宣传片 编辑:程序博客网 时间:2024/05/02 00:31
P1218数字游戏
Accepted
描述
丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。
格式
输入格式
输入文件第一行有两个整数,n(1≤n≤50)和m(1≤m≤9)。以下n行每行有个整数,其绝对值不大于104,按顺序给出圈中的数字,首尾相接。
输出格式
输出文件有两行,各包含一个非负整数。第一行是你程序得到的最小值,第二行是最大值。
样例1
样例输入1[复制]
4 243-12
样例输出1[复制]
781
限制
各个测试点1s
提示
DP!^_^
思路
将4个数分成2份,每一份求数字和,然后将两个数字和相乘,求一个最小值和一个最大值
四个数为4,3,-1,2
最小值的划分:(4+3)*(-1+2)=7
最大值的划分:(2+4+3)*(-1+10)=81
注意:
数字是环状的,所以最后一个2与第一个4是相连的,在编程实现时,将环状改成链状,也就是加长一倍,即:
4,3,-1,2,4,3,-1,2
这样就有(2+4+3)
负数的取模,可惜写成加模,-1%10=9,即(-1+10)%10=9
破环为链时,因为断点不同,就会得到不同的链,比如
3,-1,2,4,3,-1,2,4
-1,2,4,3,-1,2,4,3
……
因此要在最外层循环实现不同的位置断开
思路
#include <iostream>#include <cstring>#define N 102#define M 10#define MAX 0x7f7f7f7fusing namespace std;int n,m,i,j,k,t,maxx,minn=MAX;int a[N],sum[N];int f[N][M],g[N][M];int main(){cin>>n>>m;for(i=1;i<=n;i++){cin>>a[i];a[i+n]=a[i];//将数组加长一倍,实现破环为链 }for(i=1;i<=n+n;i++)sum[i]=sum[i-1]+a[i];//前i个数的和 for(t=0;t<n;t++)//将环从第t位断开 {memset(f,0,sizeof(f));memset(g,14,sizeof(g));for(i=1;i<=n;i++)//前i位数 {f[i+t][1]=g[i+t][1]=((sum[i+t]-sum[t])%10+10)%10;//分成一份 for(j=2;j<=min(i,m);j++)//分成j份 for(k=j-1;k<i;k++){f[i+t][j]=max(f[i+t][j],f[k+t][j-1]*(((sum[i+t]-sum[k+t])%10+10)%10));g[i+t][j]=min(g[i+t][j],g[k+t][j-1]*(((sum[i+t]-sum[k+t])%10+10)%10));}}maxx=max(f[n+t][m],maxx);minn=min(g[n+t][m],minn);}cout<<minn<<'\n'<<maxx<<endl;return 0;}
0 0
- Vijos P1218 数字游戏(动态规划,环形DP)
- 【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)
- vijos 1218 数字游戏(环形dp)
- Vijos P1485 传球游戏(动态规划)
- Vijos P1464 积木游戏(动态规划)
- SOJ2113: 数字游戏题解动态规划DP
- 一、Noip2003,数字游戏题解(环形DP)
- Vijos P1347 乘积最大(动态规划,区间DP)
- Vijos P1493 传纸条(动态规划,双线程DP)
- 动态规划:数字游戏
- soj 2113 数字游戏(环形DP)
- 数字游戏 (vijos 1218)
- Vijos P1987 游戏(DP)
- Vijos P1312 能量项链(动态规划,环状DP,区间DP)
- 【动态规划】【RQ52】数字游戏
- ACM,动态规划,数字游戏
- codevs动态规划 数字游戏
- 【动态规划】[NOIP2003]数字游戏
- C数据结构学习历程(5) 图之数组表示法的BFS
- MySQL查看和修改字符集的方法
- 排列问题算法-next_permutation,康托编码
- python模块datetime的使用2
- js倒计时时间不准 && css选择器优先级 && promise详解
- Vijos P1218 数字游戏(动态规划,环形DP)
- 使用EmBitz 编译mbed提示required from 'void WIZnet_Chip::reg_wr(uint16_t, T) [with T = short unsigned int;
- JSP显示服务器路径下的图片
- 欢迎使用CSDN-markdown编辑器
- 拖动条SeekBar及星级评分条
- 学习笔记
- svn脚本的简单使用
- Iprobe for Hanic Improved documentation
- 始