【codevs1166】【noip07TG】矩阵取数游戏,新的开始
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】矩阵取数游戏,新的开始相关推荐
- 【区间DP+高精】codevs1166 矩阵取数游戏题解
转自: [ametake版权所有]http://blog.csdn.net/ametake欢迎来看 http://blog.csdn.net/ametake/article/details/47664 ...
- 【日常学习】【区间DP+高精】codevs1166 矩阵取数游戏题解
题目来自NOIP2007TG3 如果在考场上我现在已经歇菜了吧 今天一整天的时间全部投在这道题上,收获不小. 先上题目 题目描述 Description [问题描述] 帅帅经常跟同学玩一个矩阵取数游戏 ...
- 矩阵游戏java_矩阵取数游戏JAVA题解
话不多说,先上题目: 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的nm的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: {C}1. 每次取数时须从每行各取走一个元素,共n个.m次后取完矩 ...
- 【每日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 ...
- P1005 矩阵取数游戏(__int128模板/简单dp)
转跳P1005 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n \times mn×m 的矩阵,矩阵中的每个元素 a_{i,j}a i,j 均为非负整数.游戏规则如下: 每次取数时 ...
- 【每日一题】7月10日精讲—矩阵取数游戏
来源:牛客网: 文章目录 题目描述 题解: 代码: 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld ...
- 洛谷1005 【NOIP2007】矩阵取数游戏
问题描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 洛谷P1005 矩阵取数游戏 ACM 大数+区间dp
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n \times mn×m的矩阵,矩阵中的每个元素a_{i,j}ai,j均为非负整数.游戏规则如下: 每次取数时须从每行各取走一个元素,共n ...
- 【NOIP2007提高组】矩阵取数游戏
题目背景 NOIP2007提高组试题3. 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 n*m 的矩阵,矩阵中的每个元素 aij 均为非负整数.游戏规则如下: 1.每次取数时须从每行各取 ...
最新文章
- 10w行级别数据的Excel导入优化记录
- Nhibernate 三种配置方式
- 使用Spring StateMachine框架实现状态机
- 计算机扩展卡,对于电脑来说, 扩展卡是什么?与接口又有什么关系呢?
- Linux oracle(常用命令)启动、停止、监听
- 【Linux】Linux 守护进程的启动方法
- 【手势识别】基于matlab GUI肤色手势识别(带面板)【含Matlab源码 1650期】
- 【Python 语言基础】第一章 Python入门
- 兼容最好的设为首页加入收藏代码
- 使用python创建学员管理系统
- 鲁冠球:冲向世界的打铁匠
- 水泥行业超低排放政策频发,企业如何完成超低排放改造?
- 李宏毅机器学习L6 GAN
- 一步一步教你开发微信扫码联合登录
- 龙迅LT6911GX
- 计算机知识及保密培训目的,二勘院举办保密知识和计算机网络安全专题培训会...
- 访问国内网站提示无法访问
- 米花APP是骗人的吗?具体该如何使用米花APP
- 家用设备搭建VMWARE超融合 NSX HORIZON 及CISCO测试环境
- 软考高级系统架构设计师:数学与经济管理
热门文章
- MacBook配置快捷轻量的C/C++环境
- poj3278 CatchThatCow bfs
- leetcode344题:反转字符串
- dao.php,DAO.php · Dodd/Training Lab - Gitee.com
- 列表是不是python数据类型的是_在Python中,一个列表中的数据类型是否可以不相同?(回答可以or不可以)...
- Java流程控制01 用户交互Scanner
- php4.3.x 5.2.x,XDEBUG for PHP 5.3.0
- 3_python基础—运算符 1
- ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
- python AES使用