AC日记——矩阵取数游戏 洛谷 P1005
思路:
dp+高精;
代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
struct Int {
int len;
char ai[];
Int()
{
len=,ai[]=;
}
void Count(int pos)
{
len++;
if(pos/) Count(pos/);
}
void operator=(int pos_)
{
int pos=pos_;
len=,Count(pos);
for(int i=;i<len;i++) ai[i]=pos%,pos/=;
}
bool operator<(const Int pos)const
{
if(len<pos.len) return true;
else if(len>pos.len) return false;
for(int i=len-;i>=;i--)
{
if(ai[i]<pos.ai[i]) return true;
else if(ai[i]>pos.ai[i]) return false;
}
return false;
}
Int operator*(const int pos)const
{
ll tmp=;Int res;res.len=len;
for(int i=;i<len;i++) tmp+=ai[i]*pos,res.ai[i]=tmp%,tmp/=;
while(tmp) res.ai[res.len++]=tmp%,tmp/=;
return res;
}
Int operator+(const Int pos)const
{
ll tmp=;Int res;res.len=max(len,pos.len);
for(int i=;i<res.len;i++) tmp+=(i<len?ai[i]:)+(i<pos.len?pos.ai[i]:),res.ai[i]=tmp%,tmp/=;
while(tmp) res.ai[res.len++]=tmp%,tmp/=;
return res;
}
void print()
{
for(int i=len-;i>=;i--) putchar(ai[i]+'');
}
};
Int dp[][],ans,ci[][];
int ai[][],n,m;
Int max(Int a,Int b)
{
if(a<b) return b;
else return a;
}
int main()
{
freopen("data.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
for(int v=;v<=m;v++) scanf("%d",&ai[i][v]),ci[i][v]=ai[i][v];
}
for(int i=;i<=n;i++)
{
for(int v=;v<=m;v++) dp[v][v]=ai[i][v]*;
for(int k=;k<m;k++)
{
for(int v=;v+k<=m;v++)
{
int l=v,r=v+k;
dp[l][r]=max((dp[l+][r]+ci[i][l])*,(dp[l][r-]+ci[i][r])*);
}
}
ans=dp[][m]+ans;
}
ans.print();
return ;
}
AC日记——矩阵取数游戏 洛谷 P1005的更多相关文章
- 矩阵取数游戏洛谷p1005
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 洛谷 P1005 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 【洛谷P1005】矩阵取数游戏
矩阵取数游戏 题目链接 每行分别跑一趟区间DP即可 这道题区间DP是非常裸的,按套路来即可 但是很毒瘤的是需要高精度, “我王境泽就是爆零,从这跳下去,也不会用__int128的!” #include ...
- 洛谷P1005 矩阵取数游戏
P1005 矩阵取数游戏 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次 ...
- [NOIP2007] 提高组 洛谷P1005 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 洛谷1005 【NOIP2007】矩阵取数游戏
问题描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- NOIP2007 矩阵取数游戏
题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...
- 1166 矩阵取数游戏[区间dp+高精度]
1166 矩阵取数游戏 2007年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description [ ...
- 矩阵取数游戏 NOIP 2007
2016-05-31 17:26:45 题目链接: NOIP 2007 矩阵取数游戏(Codevs) 题目大意: 给定一个矩阵,每次在每一行的行首或者行尾取一个数乘上2^次数,求取完最多获得的分数 解 ...
随机推荐
- HDU 1596 floyd
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- tp查找某字段,排除某字段,不用一次写那么多
更多的情况下我们都是查询某些字段,但有些情况下面我们需要通过字段排除来更方便的查询字段,例如文章详细页,我们可能只需要排除status和update_time字段,这样就不需要写一堆的字段名称了(有些 ...
- SqlServer中循环和条件语句示例!
-- ╔════════╗ -- =============================== ║ if语句使用示例 ║ -- ╚════════╝ declare @a int set @a=12 ...
- Android 命名规范 (转)
刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间.如果就是我一个人 ...
- 可能是国内最火的开源项目 —— C/C++ 篇
程序员们,在北上广你还能买房吗? >>> 推荐阅读: 可能是最火的开源项目 -- Java 篇 可能是国内最火的开源项目 -- PHP 篇 可能是国内最火的开源项目 -- Pyt ...
- git高级用法
1.git未保存的代码怎么切换分支? 2.两个分支的代码怎么合并?怎么解决冲突? 常见报错: 1.Merge failed : Some unreacked working tree files wo ...
- 【Dream Counting, 2006 Dec-数数的梦】数位dp
题意:给定两个数,问区间[A,B]中0~9分别出现了多少次.A,B<=10^18 题解:应该是最裸的数位dp吧..一开始没有记忆化tle了TAT 我们可以求出区间[0,B]的,再减去区间[0,A ...
- 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial
[题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...
- python初步学习-python数据类型之strings(字符串)
数据类型-字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号(''或者"")来创建字符串 var1 = 'Hello World!' var2 = "P ...
- margin 居中
左右auto加个宽度.margin-left: auto; margin-right: auto; width:640px;