题目描述

帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n×mn \times mn×m的矩阵,矩阵中的每个元素ai,ja_{i,j}ai,j​均为非负整数。游戏规则如下:

  1. 每次取数时须从每行各取走一个元素,共nnn个。经过mmm次后取完矩阵内所有元素;
  2. 每次取走的各个元素只能是该元素所在行的行首或行尾;
  3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值×2i\times 2^i×2i,其中iii表示第iii次取数(从111开始编号);
  4. 游戏结束总得分为mmm次取数得分之和。

帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。

输入输出格式

输入格式:

输入文件包括n+1n+1n+1行:

第111行为两个用空格隔开的整数nnn和mmm。

第2∽n+12\backsim n+12∽n+1行为n×mn \times mn×m矩阵,其中每行有mmm个用单个空格隔开的非负整数。

输出格式:

输出文件仅包含111行,为一个整数,即输入矩阵取数后的最大得分。

输入输出样例

输入样例#1: 复制

2 3
1 2 3
3 4 2
输出样例#1: 复制

82

说明

NOIP 2007 提高第三题

数据范围:

60%的数据满足:1≤n,m≤301\le n, m \le 301≤n,m≤30,答案不超过101610^{16}1016
100%的数据满足:1≤n,m≤801\le n, m \le 801≤n,m≤80,0≤ai,j≤10000 \le a_{i,j} \le 10000≤ai,j​≤1000

分析:这道题主要是用来练习dp ,没有涉及高精的问题,因此代码是不能AC的,但是也学习了一下dp的思想,在洛谷上能够过六个点。。。

我们用dp[i][j]代表区间变为【i,j】时,获得的最大分数当区间变为[i][j]时,一定是由【i-1,j】或者是[i,j-1]这两个符合条件的方程式中转移过来的,在第m-(j-i)-1次i取走了当前值。。。

因此状态转移方程就是 dp[i][j]=max(dp[i-1][j]+a[t][i-1]*mypow(len),dp[i][j+1]+a[t][j+1]*mypow(len));

在这要注意一下,当区间长度为1时,它是没有办法把最后一个数字取出来的。因此在这里要在重新加上。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define ll unsigned long long
const int maxn = ;
ll mypow(int k){
ll sum=;
for(int i=; i<=k; i++ ){
sum*=;
}
return sum;
} int n,m;
ll ans=; int main(){
cin>>n>>m;
int a[maxn][maxn];
memset(a,,sizeof(a));
ll dp[maxn][maxn];
for( int i=; i<=n; i++ ){
for( int j=; j<=m; j++ ){
scanf("%d",&a[i][j]);
}
}
int t=; while(t++<n){
memset(dp,,sizeof(dp));
for( int i=; i<=m; i++ ){
for( int j=m; j>=i; j-- ){
int len =m-(j-i)-; }
}
// for( int i=1; i<=m; i++ ){
// for( int j=1; j<=m; j++ ){
// cout<<dp[i][j]<<" ";
// }
// cout<<endl;
// }
ll rev=;
int i;
for( i=; i<=m; i++ ){
ll r=dp[i][i]+a[t][i]*mypow(m);
if(r>rev) rev=r;
}
// cout<<"rev="<<rev<<endl;
ans+=rev;
}
cout<<ans<<endl;
return ;
}

矩阵取数问题(dp,高精)的更多相关文章

  1. [P1005][NOIP2007] 矩阵取数游戏 (DP+高精)

    我不会高精…… 也不会DP…… 这道题即考高精又考DP…… 我要死了 给一个不是高精的代码(当然不能满分) #include<cstdio> #include<iostream> ...

  2. [LuoguP1005]矩阵取数游戏 (DP+高精度)

    题面 传送门:https://www.luogu.org/problemnew/show/P1005 Solution 我们可以先考虑贪心 我们每一次都选左右两边尽可能小的数,方便大的放在后面 听起来 ...

  3. 1083 矩阵取数问题(DP)

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走 ...

  4. HDU 1176 免费馅饼 矩阵取数, dp + 滚动数组

    http://acm.hdu.edu.cn/showproblem.php?pid=1176 首先可以处理出整张地图的状态. book[T][POS]表示第T秒,在第pos个地方有多少个馅饼. dp[ ...

  5. 矩阵取数游戏 2007年NOIP全国联赛提高组(dp+高精)

    矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description [问题描述]帅帅经常跟 ...

  6. 1166 矩阵取数游戏[区间dp+高精度]

    1166 矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description [ ...

  7. NOIP2007矩阵取数[DP|高精度]

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

  8. 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)

    1083 矩阵取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 一个N*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,从左上走到右下,只能向下 ...

  9. P1005 矩阵取数游戏 区间dp 高精度

    题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j​均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n ...

随机推荐

  1. kettle 6.1 按时间循环增量抽取数据

    场景:假设有一张表数据量很大,需要按一个时间来循环增量抽取 方法:主要是通过JOB自身调用,实现循环调用,类似于 函数自调用 的循环. 1.JOB全图: 2.获取增量时间,并设置增量时间环境变量 3. ...

  2. 我的第一个正式react demo

    以前在看深入浅出react和redux的时候, 那个demo 总是用creat-react-app 创建的, 现在终于可以实现自己手动搭建一个简单的demo了. 1.首先新建一个文件夹, 执行npm ...

  3. 9 月份 GitHub 上最火的 JavaScript 开源项目!

    推荐 GitHub 上9 月份最受欢迎的 10 个 JavaScript 开源项目,在这些项目中,你有在用或用过哪些呢? 1.基于 Promise 的 HTTP 客户端 Axios https://g ...

  4. A Sample Linker Script

    from:http://www.hertaville.com/a-sample-linker-script.html A sample script file that will work with ...

  5. MFC通过button控制编辑框是否显示系统时间

    在dlg.h中public bool flag; 在构造函数中 flag=false; 在button的生成函数中 if(flag) { flag=false; //m_showtime.SetWin ...

  6. Docker Mysql数据库主从同步配置方法

    一.背景 最近在做内部平台架构上的部署调整,顺便玩了一下数据库的主从同步,特此记录一下操作- 二.具体操作 1.先建立数据存放目录(-/test/mysql_test/) --mysql --mast ...

  7. mac关闭占用某个端口的进程

    在启动项目的时候有时候会提示端口被占用,但是怎么都找不到那个关闭进程的地方,可以直接通过命令行关闭这个进程: 比如要关闭:8000端口的进程: 1. 查找端口进程: lsof -i: 会把所有的占用8 ...

  8. [HDFS Manual] CH3 HDFS Commands Guide

    HDFS Commands Guide HDFS Commands Guide 3.1概述 3.2 用户命令 3.2.1 classpath 3.2.2 dfs 3.2.3 envvars 3.2.4 ...

  9. npm WARN React-native@0.35.0 requires a peer of react@~15.3.1 but none was installed.

    解决方案: 方法一: npm install -save react@~15.3.1 方法二:在package.json中可以添加依赖 "dependencies": { &quo ...

  10. Codeforces Round #313 (Div. 2) C. Gerald&#39;s Hexagon(补大三角形)

    C. Gerald's Hexagon time limit per test 2 seconds memory limit per test 256 megabytes input standard ...