noip2003 数字游戏 (区间动归)
来源:互联网 发布:android软件 编辑:程序博客网 时间:2024/05/17 07:54
原文链接:http://blog.csdn.net/qpswwww/article/details/25654399
题目描述 Description
丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。
例如,对于下面这圈数字(n=4,m=2):
2
4 -1
3
当要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod 10)×(-1 mod 10)=9×9=81。特别值得注意的是,无论是负数还是正数,对10取模的结果均为非负值。
丁丁请你编写程序帮他赢得这个游戏。
输入描述 Input Description
输入文件第一行有两个整数,n(1≤n≤50)和m(1≤m≤9)。以下n行每行有个整数,其绝对值不大于104,按顺序给出圈中的数字,首尾相接。
输出描述 Output Description
输出文件有两行,各包含一个非负整数。第一行是你程序得到的最小值,第二行是最大值。
样例输入 Sample Input
4 2
4
3
-1
2
样例输出 Sample Output
7
81
数据范围及提示 Data Size & Hint
en
题目思路
此题是一道环形DP题,不是很难,将环形圈断开成单链,即将线性链条*2即可,具体如图所示
然后从第一个点1开始,向右方DP,求出以第一个点为起点的DP最大值,最小值,DP完成后再从第2个点2开始,求出以第2个点为起点的DP最大值、最小值......依次直到起点到达环形终点第五个点5,求出所有最大值中的最最大值,最小值中的最最小值,这里第i个点为起点的含义是第一个断开的地方是第i个点与第i-1个点之间。
下面是代码:
- noip2003 数字游戏 (区间动归)
- noip2003 数字游戏
- noip2003普及组-数字游戏
- 【动态规划】[NOIP2003]数字游戏
- noip2002 矩形覆盖 (区间动归,深搜)
- 【精】POJ 3267 The Cow Lexicon(区间动归)
- 【动态规划】Vijos P1218 数字游戏(NOIP2003普及组)
- 一、Noip2003,数字游戏题解(环形DP)
- 312. Burst Balloons【Hard】 区间动归
- (动归)数塔问题/数字三角形
- 动归——跳房子游戏
- POJ1179(动归难题)
- 等差数列(线性动归)
- 动归
- POJ 1159 Palindrome(区间动归 滚动数组)
- BZOJ 1090: [SCOI2003]字符串折叠 区间动归
- 1176免费馅饼(动归)
- poj 2250 Compromise(动归)
- C++ sizeof 和strlen
- c++-面向对象类
- ASP.NET __doPostBack函数
- python中使用Element操作xml
- 生产者消费者问题
- noip2003 数字游戏 (区间动归)
- Python--递归函数
- Codeforces Round #259 (Div. 2) 454A Little Pony and Crystal Mine(模拟)
- linux的常用命令
- 从零开始学Java之IO字符流懒人模式(自动生成属性类,方法类,界面类)
- Activity的生命周期,activity跳转到activity
- 两个会导致程序崩溃的注意点
- XX日历简单逆向分析
- Python包管理工具——Pip