1. 程式人生 > >NOIp2007 矩陣取數遊戲

NOIp2007 矩陣取數遊戲

stream class body include 轉移 cstring post out string

Luogu

像我這種小蒟蒻怎麽可能會寫高精呢?int128墜好啦

轉移方程太顯然不寫。

#include <cstdio>
#include <cstring>
#include <iostream>

const int max_n=80+4;

int N,M;

__int128 Ans;
__int128 A[max_n],dp[max_n][max_n],Pow[max_n];

inline int read()
{
    register int x=0;
    register char ch=getchar();
    while(!isdigit(ch))
        ch=getchar();
    while
(isdigit(ch)) { x=(x<<1)+(x<<3)+ch-‘0‘; ch=getchar(); } return x; } inline void out(__int128 x) { if(x>9) out(x/10); putchar(x%10+‘0‘); } int main() { N=read(),M=read(); Pow[0]=1; for(int i=1;i<=M;++i) Pow[i]=Pow[i-1]<<1; while
(N--) { memset(dp,0,sizeof(dp)); for(int i=1;i<=M;++i) A[i]=read(); for(int l=M;l>=1;--l) for(int r=l;r<=M;++r) dp[l][r]=std::max(dp[l+1][r]+A[l]*Pow[M-r+l],dp[l][r-1]+A[r]*Pow[M-r+l]); Ans+=dp[1][M]; } out(Ans); return
0; }

NOIp2007 矩陣取數遊戲