NOIp2007提高組 矩陣取數遊戲

2022-05-22 02:00:11 字數 1192 閱讀 7404

oj題號:洛谷1005

思路:動態規劃。

不難發現每行能夠取得的最大值僅與當前行的資料有關,因此本題可以對每行的資料分別dp,最後求和。

設$f_$表示左邊取$i$個、右邊取$j$個的最大值,則dp方程為$f_=max(f_+a_*2^,f_+a_*2^)$。

然而資料規模較大,使用 int 只有40分,用 unsigned long long 只有60分。所以需要高精度,不過實現起來並不複雜。

另外有一些小小的優化,比如壓位、預處理二的冪。

1 #include2 #include3 #include4

class

bigint

13 bigint(const

int len,const

intnum)

17 bigint operator + (const bigint &x) const

24if(ans.num[ans.len+1]) ans.len++;

25return

ans;26}

27 bigint operator * (const

int &x) const

34if(ans.num[ans.len+1]) ans.len++;

35return

ans;36}

37bool

operator

< (const bigint &x) const

44return

false;45

}46 bigint& operator = (const bigint &x)

51void

print()

56 printf("\n"

);57}58

};59

const

int m=81

;60 bigint pow[m]=;

61void calcpow(const

intx)

64int

main()

80 max=std::max(max,f[i][m-i]);81}

82 ans=ans+max;83}

84ans.print();

85return0;

86 }

NOIP2007提高組 矩陣取數遊戲

本題dp 高精度即可。首先我們可以發現它的貢獻只與行有關係,於是就分成n行,每行都做dp,然後將max加起來即可。ps 用高精度實現 上標 include include include define mo 100000 define ll long long using namespace std...

提高組NOIP2007 矩陣取數遊戲

題目描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m的矩陣,矩陣中的每個元素a i,j 均為非負整數。遊戲規則如下 每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素 每次取走的各個元素只能是該元素所在行的行首或行尾 每次取數都有乙個得分值,為每行取數的得分之和,每行取數的...

NOIP2007提高組 矩陣取數遊戲

本題dp 高精度即可。首先我們可以發現它的貢獻只與行有關係,於是就分成n行,每行都做dp,然後將max加起來即可。ps 用高精度實現 上標 include include include define mo 100000 define ll long long using namespace std...