洛谷OJ: P1005 矩阵取数游戏

7人阅读 评论(0) 收藏 举报
分类:

今天因为高数模拟考没怎么做题,就睡前做了这么一题,舍友也开始一起在洛谷刷题了,很开心,但是高数只考了63,很不开心,心情复杂。

思路:每一行都是独立的选择,不要因为有多行而被带到错误的思考方向,所以我们开始分析独立的一行数据,那么只有两种选择,1.选择最开头的数字 2.选择最末尾的数字, 而每次增加的分数都是2^i*选择的数字,那么我们稍加思考就可以得到状态转移方程啦。

首先,我们定义dp[i][j]为区间(i,j)可以得到的最大分数那么我们可以得出状态转移方程

dp[i][j] = max{dp[i+1][j]*2+num[i]*2, dp[i][j-1]*2+num[j]*2} (i+1 <= j)

但是通过分析,这题的m给定的数据范围上限是80,也就是说最好的情况也有2^80的大小了!这就超出了longlong的数据大小,所以我们选择用大数类来解决这一题。

因为我的大数类模板有300行左右,太长了,就不放出来了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;

const int maxn = 80+5;
int n, m;
BigNum dp[maxn][maxn], num[maxn], ans;

int main() {
    ios::sync_with_stdio(false);
    cin >> n >> m;
    while(n--) {
        for(int i = 1; i <= m; i++) {
            cin >> num[i];
            dp[i][i] = 2*num[i];
        }
        for(int i = m-1; i >= 1; i--) {
            for(int j = i+1; j <= m; j++) {
                BigNum a = 2 * dp[i+1][j] + 2*num[i];
                BigNum b = 2*dp[i][j-1] + 2 * num[j];
                dp[i][j] = a > b ? a : b;
            }
        }
        ans = ans + dp[1][m];
    }
    cout << ans << endl;
    return 0;
}

查看评论

洛谷 P1005 矩阵取数游戏

高精度+线性dp
  • chai_jing
  • chai_jing
  • 2016-05-28 11:10:29
  • 707

【博弈论】洛谷 P1288 取数游戏II

题目描述有一个取数的游戏。初始时,给出一个环,环上的每条边上都有一个非负整数。这些整数中至少有一个0。然后,将一枚硬币放在环上的一个节点上。两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取...
  • hyj542682306
  • hyj542682306
  • 2017-05-09 12:15:34
  • 168

洛谷 P1123 取数游戏

搜索
  • Rlt1296
  • Rlt1296
  • 2016-11-13 22:42:54
  • 447

noip2007 矩阵取数游戏 (动态规划+高精度)

P1378矩阵取数游戏 Accepted 标签:动态规划高精度NOIP提高组2007 描述 帅帅经常更同学玩一个矩阵取数游戏:对...
  • yuyanggo
  • yuyanggo
  • 2015-09-19 10:23:46
  • 467

洛谷p1005矩阵取数游戏

原题 2^80超int,需要高精度计算,也可以int128. 行和行之间没有联系,所以只要单独求每一行之后取和即可,dp过程中i,j分别表示左端点和右端点。 #include #define l...
  • Tekim
  • Tekim
  • 2017-08-31 11:11:29
  • 80

洛谷P1005 矩阵取数游戏

题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下:1.每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素;2.每次取...
  • stone41123
  • stone41123
  • 2017-07-12 08:07:03
  • 200

wikioi 1166 矩阵取数游戏(2007年NOIP全国联赛提高组)

题目描述 Description 【问题描述】 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均 为非负整数。游戏规则如下: 1. 每次取数...
  • kingzone_2008
  • kingzone_2008
  • 2013-10-11 01:07:43
  • 6650

P1005 矩阵取数游戏

题目描述帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。游戏规则如下:1.每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素;2.每次取...
  • qq_34786702
  • qq_34786702
  • 2016-08-07 21:31:49
  • 181

取数游戏 洛谷p1288

题目描述 有一个取数的游戏。初始时,给出一个环,环上的每条边上都有一个非负整数。这些整数中至少有一个0。然后,将一枚硬币放在环上的一个节点上。两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮...
  • MrTinTin
  • MrTinTin
  • 2017-08-25 16:11:43
  • 97

P1005矩阵取数

区间动规**
  • ivy_uu
  • ivy_uu
  • 2017-07-11 12:35:19
  • 96
    个人资料
    持之以恒
    等级:
    访问量: 713
    积分: 500
    排名: 10万+
    文章存档