真.游戏
作者:互联网
题目:矩阵取数游戏P1005 [NOIP2007 提高组] 矩阵取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这道题没啥好说的
区间dp+高精
懒人的话也可以写int128(比如本蒟蒻QAQ)
状态转移方程为f[i][j]=max(2f[i+1][j]+2a[i],2f[i][j-1]+2a[j])
I'll speak no more nonsense.
代码:
(严禁代码复制,共创美好洛谷)
#include<bits/stdc++.h>
#define l __int128
using namespace std;
l n,m;
l _map[101][101];
l ans=0;
l f[101][101];
l i,j,x,y;
int k=1;
inline void ip(l &s)
{
s=0;
char c='\0';
while(c>57||c<48) c=getchar();
while(c>=48&&c<=57)
{
s=s*10+c-'0';
c=getchar();
}
}
void op(l x)
{
if(x>9)
op(x/10);
putchar(x%10+48);
}
l solution(l map1[])
{
memset(f,0,sizeof(f));
for(int len=0;len<=m;len++)
for(int i=1;i+len<=m;i++)
f[i][i+len]=max(2*f[i+1][i+len]+2*map1[i],2*f[i][i+len-1]+2*map1[i+len]);
return f[1][m];
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ip(_map[i][j]);
for(int i=1;i<=n;i++)
{
ans+=solution(_map[i]);
}
op(ans);
return 0;
}
(别问我为啥这篇题解写这么短,我tm卡在一道绿题上了*******)
标签:10,洛谷,游戏,48,int,len,101 来源: https://www.cnblogs.com/xiaosize-1/p/16507838.html