题目链接

  yeah终于过辣!

  DP,f[i][j]表示每行还剩i到j这个区间的数没取的时候的值。借这个题我也把高精度的短板弥补了一下,以后高精加高精乘应该是没问题了。

  哇终于不怂高精了……

  放上代码。

  

#include<cstdio>
#include<cctype>
#include<iostream>
#include<cstring> inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} struct BigInteger{
int s[],len;
BigInteger(){ len=; memset(s,,sizeof(s)); } bool operator >(BigInteger a){
if(len!=a.len) return len>a.len;
for(int i=len;i;--i){
if(s[i]!=a.s[i]) return s[i]>a.s[i];
}
return ;
} bool operator ==(BigInteger a){
if(len!=a.len) return ;
for(int i=;i<=len;++i)
if(s[i]!=a.s[i]) return ;
return ;
} bool operator <(BigInteger a){
return (!(*this>a)&&!(*this==a));
} BigInteger operator =(char* d){
int size=strlen(d+);
(*this).len=size;
for(int i=size,tot=;tot<size;--i) (*this).s[++tot]=d[i]-'';
return *this;
} BigInteger operator =(int num){
char d[];
sprintf(d+,"%d",num);
*this=d;
return *this;
} inline void out(){
for(register int i=len;i;--i) printf("%d",s[i]);
} BigInteger operator +(BigInteger a){
BigInteger ans;
ans.len=;
int size=std::max(len,a.len);
for(int i=,g=;g||i<=size;++i){
int now=s[i]+a.s[i]+g;
ans.s[++ans.len]=now%;
g=now/;
}
return ans;
} BigInteger in(){
char d[];
scanf("%s",d+);
*this=d;
return *this;
} BigInteger operator *(BigInteger a){
BigInteger ans;
ans.len=;
int size=len+a.len;
for(int i=;i<=len;++i)
for(register int j=;j<=a.len;++j)
ans.s[i+j-]+=s[i]*a.s[j];
for(int i=;i<size;++i){
ans.s[i+]+=ans.s[i]/;
ans.s[i]%=;
}
while(size>&&!ans.s[size]) size--;
ans.len=size;
return ans;
} }; BigInteger Pow(BigInteger a,int b){
if(b==) return a;
BigInteger ret;
ret=;
while(b){
if(b&) ret=ret*a;
a=a*a;
b>>=;
}
return ret;
} BigInteger f[][];
BigInteger d[][];
BigInteger ans;
BigInteger two;
int main(){
two=;ans=;
int n=read(),m=read();
for(int i=;i<=n;++i)
for(int j=;j<=m;++j) d[i][j]=read();
for(int T=;T<=n;++T){
memset(f,,sizeof(f));
for(int len=m;len;--len){
BigInteger Powval;Powval=Pow(two,m-len);
for(int i=;i+len-<=m;++i){
int j=i+len-;
if(j<m&&f[i][j+]+Powval*d[T][j+]>f[i][j]) f[i][j]=f[i][j+]+Powval*d[T][j+];
if(i>&&f[i-][j]+Powval*d[T][i-]>f[i][j]) f[i][j]=f[i-][j]+Powval*d[T][i-];
}
}
BigInteger Max;Max=;
BigInteger Powval=Pow(two,m);
for(int i=;i<=m;++i)
if(Max<f[i][i]+Powval*d[T][i]) Max=f[i][i]+Powval*d[T][i];
ans=ans+Max;
}
ans.out();
return ;
}

【Luogu】P1005矩阵取数游戏(高精度+DP)的更多相关文章

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

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

  2. P1005 矩阵取数游戏[区间dp]

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

  3. 洛谷P1005 矩阵取数游戏

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

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

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

  5. TYVJ 矩阵取数 Label:高精度+dp

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

  6. [NOIP2007] 提高组 洛谷P1005 矩阵取数游戏

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

  7. 洛谷 P1005 矩阵取数游戏

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

  8. 洛谷 P1005 矩阵取数游戏 (区间dp+高精度)

    这道题大部分时间都在弄高精度-- 还是先讲讲dp吧 这道题是一个区间dp,不过我还是第一次遇到这种类型的区间dp f[i][j]表示取了数之后剩下i到j这个区间的最优值 注意这里是取了i之前和j之后的 ...

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

    题目链接:传送门 题目大意: 给定长度为m的数列aj,每次从两端取一个数,得到2k * aj的价值(k为当前的次数,从1开始到m),总共有n行这样的数列,求最大价值总和. 1 ≤ n, m ≤ 80, ...

随机推荐

  1. freebsd自动获取ip地址

    最小化安装完成freebsd后,ifconfig查看不到ip地址 修改/etc/rc.conf 添加ifconfig_网卡名称="DHCP" 重启服务器或者sh /etc/rc.c ...

  2. 洛谷 P1309 瑞士轮

    题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...

  3. mohout安装

    安装完成之后的环境变量的配置如下: JAVA_HOME=/usr/local/jdk1.8.0_144JRE_HOME=/usr/java/jdk1.8.0_144/jreCLASSPATH=.:$J ...

  4. 数据倾斜是多么痛?spark作业调优秘籍

    目录视图 摘要视图 订阅 [观点]物联网与大数据将助推工业应用的崛起,你认同么?      CSDN日报20170703——<从高考到程序员——我一直在寻找答案>      [直播]探究L ...

  5. 怎么在webstorm中设置代码模板

    大家都知道webstorm对程序员来说是一个很好用的IDE.我们输入几个关键字,webstorm就会给出提示,大大提高了我们的开发效率,可有时候webstorm的默认设置不能满足我们的个性化代码模板的 ...

  6. 参考别人的代码写的aes加密,记录一下(AES,ECB模式,填充PKCS5Padding,数据块128位,偏移量无,以hex16进制输出)

    package org.jimmy.autosearch2019.test; import java.security.SecureRandom; import javax.crypto.Cipher ...

  7. 国庆集训 || Wannafly Day1

    网址:https://www.nowcoder.com/acm/contest/201#question A.签到 手速石头剪刀布 #include <cstdio> #include & ...

  8. web框架 http协议

    http 协议是超文本传输协议,位于osi七层的应用层,协议规定的就是请求与响应双方的一个消息格式,请求(请求行,请求头,空行,请求数据,请求行--请求方式URL协议版本\r\n请求头--user-a ...

  9. 设置tableview的滚动范围--iOS开发系列---项目中成长的知识三

    设置tableview的滚动范围 有时候tableview的footerview上的内容需要向上拖动界面一定距离才能够看见, 项目中因为我需要在footerviw上添加一个按钮,而这个按钮又因为这个原 ...

  10. URAL1765 Error 404

    题目描述: vjudge 题解: STO ljx OTZ 下面这个算法是这位贡献的. 不妨将删去改为加入. 那么对于$n=p^k$,即只有一个质因子的$n$来说,若$i$已选,那么$i+n/p$.$i ...