数字游戏 (dp)
2014-10-08 19:40
99 查看
Problem Description
丁丁最近沉迷于一个数字游戏。这个游戏看似简单,但丁丁在研究了很多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加后得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你得到的k最大或者最小。注意:无论是负数还是正数,对10取模的结果均为非负数。
丁丁请你编写程序帮他赢得这个游戏。
Input
输入有多组数据,每组数据第1行有两个整数n(1<=n<=50)和m(1<=m<=9)。以下n行每行有1个整数,其绝对值不大于10^4,按顺序给出圈中的数字,首尾相连。
Output
对于每组输入数据,输出两行,各包含一个非负整数,第一行是最小值,第二行是最大值。
Sample Input
4 2
4
3
-1
2
Sample Output
7
81
丁丁最近沉迷于一个数字游戏。这个游戏看似简单,但丁丁在研究了很多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加后得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你得到的k最大或者最小。注意:无论是负数还是正数,对10取模的结果均为非负数。
丁丁请你编写程序帮他赢得这个游戏。
Input
输入有多组数据,每组数据第1行有两个整数n(1<=n<=50)和m(1<=m<=9)。以下n行每行有1个整数,其绝对值不大于10^4,按顺序给出圈中的数字,首尾相连。
Output
对于每组输入数据,输出两行,各包含一个非负整数,第一行是最小值,第二行是最大值。
Sample Input
4 2
4
3
-1
2
Sample Output
7
81
#include<stdio.h> #include<string.h> #define INF 1<<30 int a[120],s[120],m,n; int dp1[120][15],dp2[120][15]; int maxn,minn; inline int max(int a,int b) { return a>b?a:b; } inline int min(int a,int b) { return a<b?a:b; } int main() { //freopen("b.txt","r",stdin); int i,j,k,l,tmp; while(scanf("%d %d",&m,&n)==2) { for(i=1;i<=m;i++) { scanf("%d",&a[i]); a[m+i]=a[i]; } s[0]=0; for(i=1;i<=2*m;i++) { s[i]=s[i-1]+a[i]; } maxn=-INF,minn=INF; for(l=1;l<=m;l++) { for(i=1;i<=2*m;i++) for(j=1;j<=n;j++) { dp1[i][j]=INF; dp2[i][j]=-INF; } for(i=l;i<=m+l-1;i++) { tmp=(s[i]-s[l-1])%10; if(tmp<0) tmp+=10; dp1[i][1]=tmp;dp2[i][1]=dp1[i][1]; } for(j=2;j<=n;j++) for(i=j+l-1;i<=m+l-1;i++) for(k=j+l-2;k<i;k++) { tmp=(s[i]-s[k])%10; if(tmp<0) tmp+=10; dp1[i][j]=min(dp1[i][j],dp1[k][j-1]*tmp); dp2[i][j]=max(dp2[i][j],dp2[k][j-1]*tmp); } minn=min(dp1[l+m-1] ,minn); maxn=max(dp2[l+m-1] ,maxn); } printf("%d\n%d\n",minn,maxn); } return 0; }
相关文章推荐
- DP——数字游戏
- tyvj p1062合并傻子(dp)
- hdu-4398-数位dp-X mod f(x)
- POJ 1185 炮兵阵地 (状态压缩dp)
- UVa 11021 - Tribles (概率DP)
- 算法训练 结点选择 【树形dp】
- POJ 2559 dp 【复习】
- hdu3377plan【哈密顿路径插头Dp】
- poj1157LITTLE SHOP OF FLOWERS(简单DP)
- BZOJ 3450: Tyvj1952 Easy 期望DP
- Codeforces Round #416 (Div. 2) C. Vladik and Memorable Trip 【线性DP】
- 【bzoj1010】玩具装箱toy——斜率优化dp
- [DP] Topcoder SRM 552 DIV1 Hard. HolyNumbers
- poj 3342 树形DP
- UVa 10651 - Pebble Solitaire 状态压缩 dp
- SRM 605 D2 L3: AlienAndSetDiv2,DP
- vijos 1100(树状dp)
- uva 11825(dp + 状态压缩)
- 华为训练题目:初级——合唱队(递增子序列,DP动态规划问题)
- [POJ 3181]Dollar Dayz[DP][高精度]