美文网首页
[题解]1016-数字游戏

[题解]1016-数字游戏

作者: Jfeng666 | 来源:发表于2018-08-07 00:25 被阅读0次

题目(状态DP)

丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k。游戏的要求是使你所得的k最大或者最小。

例子

例如,对于下面这圈数字(n=4,m=2):

4 3 -1 2

当要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod 10)×(-1 mod 10)=9×9=81。特别值得注意的是,无论是负数还是正数,对10取模的结果均为非负值。
丁丁请你编写程序帮他赢得这个游戏

输入描述

输入文件第一行有两个整数,n(1≤n≤50)和m(1≤m≤9)。以下n行每行有个整数,其绝对值不大于104,按顺序给出圈中的数字,首尾相接。

输出描述

输出文件有两行,各包含一个非负整数。第一行是你程序得到的最小值,第二行是最大值。

样本输入

4 2
4
3
-1
2

样本输出

7
81

思路

暂不补充……

源程序

#include <stdio.h>
long mx[10][52],mn[10][52],k,sn,sm;
int sum[102],i,j,l,n,m,ro;
int main(void)
{
    scanf("%d%d",&n,&m);
    sn=2000000000;
    sm=0;
    for (i=1;i<=n;i++)
    {
        scanf("%d",&j);
        sum[i]=sum[i-1]+j;
        sum[i+n]=sum[i];
    }
    for (i=1;i<=n;i++)
        sum[i+n]+=sum[n];
    for (ro=0;ro<n;ro++)
    {
        for (i=1;i<=n;i++)
        {
            k=((sum[ro+i]-sum[ro])%10+10)%10;
            mn[1][i]=k;
            mx[1][i]=k;
        }
        for (i=2;i<=m;i++)
            for (j=i;j<=n;j++)
            {
                mn[i][j]=2000000000;
                mx[i][j]=0;
                for (l=i-1;l<j;l++)
                {
                    k=((sum[j+ro]-sum[l+ro])%10+10)%10;
                    if (mx[i-1][l]*k>mx[i][j])
                        mx[i][j]=mx[i-1][l]*k;
                    if (mn[i-1][l]*k<mn[i][j])
                        mn[i][j]=mn[i-1][l]*k;
                }
            }
        if (mn[m][n]<sn)
            sn=mn[m][n];
        if (mx[m][n]>sm)
            sm=mx[m][n];
    }
    printf("%ld\n%ld\n",sn,sm);
    return 0;
}

相关文章

  • [题解]1016-数字游戏

    题目(状态DP) 丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则...

  • 优质题解:数字游戏

    原题链接:[蓝桥杯][历届试题]数字游戏 解题思路:【1】.首先是明确只能计算主角的数,如果计算了别人的数,那么时...

  • iOS逆向1016-微信抢红包案例(四)

    1016-微信抢红包案例(四) //--------------------逻辑分析 --------// 微信...

  • LC238-动态规划

    题目 题解 数字=左边数乘积*右边数乘积

  • 洛谷 P1043 数字游戏 题解

    思路 我们设为在区间内的答案,这个答案从内个小区间转移而来。那么转移方程就是 要注意的地方 区间类型有关动态规划的...

  • LeetCode 9. 回文数

    题目描述 题解 简单法 反转一半数字

  • PTA[Advanced] 1001 A+B

    题目链接 灰灰公众号的题解 我的题解 研究了一下python版题解 简洁的惊人啊。format()格式化数字str...

  • 数字游戏

    如果“宝贝宝宝贝宝贝贝”对应的数字“84884844”那么“宝宝宝贝贝宝贝贝”对应的数字是以下哪几个? A.888...

  • 数字游戏

    这是第二次玩这个游戏,规则很简单,双数往上,单数往下,在正常语速下接错了旁边的人做俯卧撑第一次5个,第二次10个,...

  • 数字游戏

    亲子记录Day049 2017.4.9,周日,大雨 这个周末因为一直下个不停的大雨,彻底失去了外出的机会,所以只能...

网友评论

      本文标题:[题解]1016-数字游戏

      本文链接:https://www.haomeiwen.com/subject/heinvftx.html