博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1085 数字游戏
阅读量:5239 次
发布时间:2019-06-14

本文共 1962 字,大约阅读时间需要 6 分钟。

1085 数字游戏

 

2003年NOIP全国联赛普及组

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
题目描述 
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

f[i][j]=max(f[i][j],f[k][j-1]*(((sum[i]-sum[k])%10+10)%10))的意义是前k个数划分成j-1份,所以前i个数划分成j份的最大值是k到i的和Mod10 * 前k个数划分成j-1份

1 #include
2 #include
3 #include
4 using namespace std; 5 int sum[210],a[210]; 6 int f[210][20],g[210][10]; 7 int n,m,minn = 0x7f,maxn = 0; 8 void dp(int num[]) 9 {10 memset(f,0,sizeof(f));11 memset(g,0x3f,sizeof(g));12 for (int i=1; i<=n; ++i) 13 sum[i] = sum[i-1]+num[i]; 14 for (int i=1; i<=n; ++i)15 f[i][1] = g[i][1] = (sum[i]%10+10)%10;16 for (int j=2; j<=m; ++j)17 for (int i=j; i<=n; ++i)18 for (int k=j-1; k<=i-1; ++k)19 {20 f[i][j] = max(f[i][j],f[k][j-1]*(((sum[i]-sum[k])%10+10)%10));21 g[i][j] = min(g[i][j],g[k][j-1]*(((sum[i]-sum[k])%10+10)%10));22 }23 minn = min(minn,g[n][m]);24 maxn = max(maxn,f[n][m]);25 }26 int main()27 {28 scanf("%d%d",&n,&m);29 for (int i=1; i<=n; ++i)30 {31 scanf("%d",&a[i]);32 a[i+n] = a[i];33 }34 for (int i=0; i

 

转载于:https://www.cnblogs.com/mjtcn/p/7061024.html

你可能感兴趣的文章
[Lintcode]56. Two Sum
查看>>
汇编语言实验二
查看>>
Python基础练习-001-猜数字小游戏
查看>>
[转]curl的错误代码
查看>>
zbb20180913 java thread 死锁示例代码
查看>>
JS获取当前时间
查看>>
c# 正则表达式
查看>>
poj 2398 Toy Storage
查看>>
如何在手机上面安装iPA应用包
查看>>
Python基础第十二天——模块的分类、时间模块、随机数模块、摘要算法模块、os模块、时间形式轮换...
查看>>
JS总判断控件为null
查看>>
[置顶] Web开发工具
查看>>
SpringBoot自动配置的实现原理
查看>>
css实现垂直居中的几种方法
查看>>
第11章 缓存机制
查看>>
GDI与GDI+ 贴图性能对比
查看>>
线段树 (扫描线)
查看>>
js、php 判断用户终端 、浏览器类型
查看>>
php函数serialize()与unserialize() 数据序列化与反序列化
查看>>
【设计模式】装饰者模式
查看>>