1166 矩阵取数游戏 2007年NOIP全国联赛提高组
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题解
题目描述 Description
【问题描述】
帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m 的矩阵,矩阵中的每个元素aij均
为非负整数。游戏规则如下:
1. 每次取数时须从每行各取走一个元素,共n个。m次后取完矩阵所有元素;
2. 每次取走的各个元素只能是该元素所在行的行首或行尾;
3. 每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分= 被取走的元素值*2i,
其中i 表示第i 次取数(从1 开始编号);
4. 游戏结束总得分为m次取数得分之和。
帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。

输入描述 Input Description
第1行为两个用空格隔开的整数n和m。
第2~n+1 行为n*m矩阵,其中每行有m个用单个空格隔开的非负整数。

输出描述 Output Description
输出 仅包含1 行,为一个整数,即输入矩阵取数后的最大得分。

样例输入 Sample Input
2 3
1 2 3
3 4 2

样例输出 Sample Output
82

数据范围及提示 Data Size & Hint
样例解释

第 1 次:第1 行取行首元素,第2 行取行尾元素,本次得分为1*21+2*21=6
第2 次:两行均取行首元素,本次得分为2*22+3*22=20
第3 次:得分为3*23+4*23=56。总得分为6+20+56=82

【限制】
60%的数据满足:1<=n, m<=30, 答案不超过1016
100%的数据满足:1<=n, m<=80, 0<=aij<=1000

写在前面:我脱黄金坑了!我脱黄金坑了!我脱黄金坑了!我脱黄金坑了!我脱黄金坑了!我脱黄金坑了!
—————————钻石の分界线————————
解题思路:正确的做法是DP+高精,但是我们都知道高精这个东西是非常恶心的存在,所以我们可以试着把它分成两个部分存储(因为数据比较小,两个longlong足够),至于砖姨方程网上基本一致,我的也差不多(实际上是自己想到一半不想想了然后就。。。)
代码:

#include<cstdio>
#include<iostream>
using namespace std;
long long maxnn(long long x,long long y,long long c,long long d)
{if (c>d) return x;if (d>c) return y;if (x>y) return x;else  return y;
}
long long a[100][100],n,m;
long long f[101][101][101][2];
main()
{long long p=1;for (int i=1;i<=15;i++) p*=10;//这里如果直接写10^15去取位的话,貌似codevs不认。。scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)for (int j=1;j<=m;j++)scanf("%d",&a[i][j]);for (int i=1;i<=n;i++)for (int j=m;j>=1;j--)for (int k=j;k<=m;k++){f[i][j][k][1]*=2;f[i][j][k][0]=2*maxnn(f[i][j+1][k][0]+a[i][j],f[i][j][k-1][0]+a[i][k],f[i][j+1][k][1],f[i][j][k-1][1]);//先判断高位(15位以前的)大小,相等再判断低位。f[i][j][k][1]+=2*max(f[i][j+1][k][1],f[i][j][k-1][1]);//高位的增加long long tt=f[i][j][k][0]/p;if (tt!=0) {f[i][j][k][1]+=tt;f[i][j][k][0]%=p;}//如果低位大于等于15位,就进位}long long ans=0;for (int i=1;i<=n;i++){f[0][1][m][1]+=f[i][1][m][1];f[0][1][m][0]+=f[i][1][m][0];long long tt=f[0][1][m][0]/p;if (tt!=0) {f[0][1][m][1]+=tt;f[0][1][m][0]%=p;}}if (f[0][1][m][1]!=0)printf("%lld %lld",f[0][1][m][1],f[0][1][m][0]);else printf("%lld",f[0][1][m][0]);
}

【codevs1166】【noip07TG】矩阵取数游戏,新的开始相关推荐

  1. 【区间DP+高精】codevs1166 矩阵取数游戏题解

    转自: [ametake版权所有]http://blog.csdn.net/ametake欢迎来看 http://blog.csdn.net/ametake/article/details/47664 ...

  2. 【日常学习】【区间DP+高精】codevs1166 矩阵取数游戏题解

    题目来自NOIP2007TG3 如果在考场上我现在已经歇菜了吧 今天一整天的时间全部投在这道题上,收获不小. 先上题目 题目描述 Description [问题描述] 帅帅经常跟同学玩一个矩阵取数游戏 ...

  3. 矩阵游戏java_矩阵取数游戏JAVA题解

    话不多说,先上题目: 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的nm的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: {C}1. 每次取数时须从每行各取走一个元素,共n个.m次后取完矩 ...

  4. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★

    P1005 矩阵取数游戏 输入 2 3 1 2 3 3 4 2 输出 82 说明/提示 NOIP 2007 提高第三题. 数据范围: 60%60\%60% 的数据满足:1≤n,m≤301\le n,m ...

  5. P1005 矩阵取数游戏(__int128模板/简单dp)

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

  6. 【每日一题】7月10日精讲—矩阵取数游戏

    来源:牛客网: 文章目录 题目描述 题解: 代码: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld ...

  7. 洛谷1005 【NOIP2007】矩阵取数游戏

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

  8. 洛谷P1005 矩阵取数游戏 ACM 大数+区间dp

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

  9. 【NOIP2007提高组】矩阵取数游戏

    题目背景 NOIP2007提高组试题3. 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n*m 的矩阵,矩阵中的每个元素 aij 均为非负整数.游戏规则如下: 1.每次取数时须从每行各取 ...

最新文章

  1. 10w行级别数据的Excel导入优化记录
  2. Nhibernate 三种配置方式
  3. 使用Spring StateMachine框架实现状态机
  4. 计算机扩展卡,对于电脑来说, 扩展卡是什么?与接口又有什么关系呢?
  5. Linux oracle(常用命令)启动、停止、监听
  6. 【Linux】Linux 守护进程的启动方法
  7. 【手势识别】基于matlab GUI肤色手势识别(带面板)【含Matlab源码 1650期】
  8. 【Python 语言基础】第一章 Python入门
  9. 兼容最好的设为首页加入收藏代码
  10. 使用python创建学员管理系统
  11. 鲁冠球:冲向世界的打铁匠
  12. 水泥行业超低排放政策频发,企业如何完成超低排放改造?
  13. 李宏毅机器学习L6 GAN
  14. 一步一步教你开发微信扫码联合登录
  15. 龙迅LT6911GX
  16. 计算机知识及保密培训目的,二勘院举办保密知识和计算机网络安全专题培训会...
  17. 访问国内网站提示无法访问
  18. 米花APP是骗人的吗?具体该如何使用米花APP
  19. 家用设备搭建VMWARE超融合 NSX HORIZON 及CISCO测试环境
  20. 软考高级系统架构设计师:数学与经济管理

热门文章

  1. MacBook配置快捷轻量的C/C++环境
  2. poj3278 CatchThatCow bfs
  3. leetcode344题:反转字符串
  4. dao.php,DAO.php · Dodd/Training Lab - Gitee.com
  5. 列表是不是python数据类型的是_在Python中,一个列表中的数据类型是否可以不相同?(回答可以or不可以)...
  6. Java流程控制01 用户交互Scanner
  7. php4.3.x 5.2.x,XDEBUG for PHP 5.3.0
  8. 3_python基础—运算符 1
  9. ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
  10. python AES使用