1574:矩陣取數遊戲
時間限制: 1000 ms 記憶體限制: 524288 kb
提交數: 618 通過數: 248
【題目描述】
經常和同學玩乙個矩陣取數遊戲:對於給定的 n×m 的矩陣,矩陣中每個元素 aij 均為非負整數。遊戲規則如下:
1、每次取數時必須從每行各取走乙個元素,共 n 個,m 次取完所有元素。
2、每次取走的各個元素只能是該元素所在行行首或行尾。
3、每次取數都有乙個的分值,為每行取數得分之和,每行取數得分==被取走元素值×2i ,其中 i 表示第 i 次取數,從 1 開始計數。
4、遊戲結束時,總得分為 m 次取數得分之和。
想讓你幫忙寫乙個程式,對於任意矩陣,可以求出取數後的最大得分。
【輸入】
輸入包括 n+1 行。 第一行兩個空格隔開的正整數 n,m 接下來 n 行每行 m 個用空格隔開的整數。
【輸出】
輸出為乙個整數,為所輸入矩陣取數後的最大得分
【輸入樣例】
2 31 2 3
3 4 2
【輸出樣例】
82【提示】
樣例解釋 1
第一次:第一行取行首元素,第二行取行尾元素,本次得分為 1×21+2×21=6;
第二次:兩行均取行首元素,本次得分為 2×22+3×22=20;
第三次:本次得分為 3×23+4×23=56,總得分為 6+20+56=82。
樣例輸入 2
1 44 5 0 5
樣例輸出 2
122樣例輸入 3
2 10
96 56 54 46 86 12 23 88 80 43
16 95 18 29 30 53 88 83 64 67
樣例輸出 3
對於 60% 的資料,1≤n,m≤30,答案不超過 1016 ;
對於 100% 的資料,1≤n,m≤80,0≤ai,j≤1000。
思路:有點思維含量的區間dp,與其他模板區間dp不同的是,這個題我們要對每一行進行區間dp處理,並且要高精度w(゚д゚)w
未加高精:
#include
#define ull unsigned long long
#define maxn 105
using
namespace std;
ull a[maxn]
[maxn]
,f[maxn]
[maxn]
;ull p[maxn]
,ans=
0,n,m;
void
work
(ull tmp)}
ans+
=f[1
][m];}
intmain()
p[1]=
2;for(
int i=
2;i<=m;i++
) p[i]
=p[i-1]
*2;for
(int i=
1;i<=n;i++
)work
(i);
//對於每一行進行一次dp
cout<'\n'
;}
加高精:
#include
using
namespace std;
const
int n=85;
const
int l=
105,power=
4,base=
10000
;int n,m,a[n]
;struct bignum
bignum
(int x)
return;}
inline
void
print()
puts(""
);return;}
inline
void
init()
}bin[n]
,dp[n]
[n];
inline
bool
operator
<
(const bignum &p,
const bignum &q)
return0;
}inline bignum max
(bignum p,bignum q)
inline bignum operator+(
const bignum &p,
const bignum &q)
}while
(ans.a[ans.a[0]
+1]) ans.a[0]
++;return ans;
}inline bignum operator*(
const bignum &p,
const bignum &q)}}
while
(!ans.a[ans.a[0]
]) ans.a[0]
--;return ans;
}inline bignum operator*(
const bignum &p,
const
int&q)
}while
(!ans.a[ans.a[0]
]) ans.a[0]
--;return ans;
}inline bignum solve()
}// dp[1][m].print();
return dp[1]
[m];
}int
main()
// puts("");
for(i=
1;i<=n;i++
) ans.
print()
;return0;
}
矩陣取數遊戲
帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m的矩陣,矩陣中的每個元素a 均為非負整數。遊戲規則如下 每次取數時須從每行各取走乙個元素,共n個。經過m次後取完矩陣內所有元素 每次取走的各個元素只能是該元素所在行的行首或行尾 每次取數都有乙個得分值,為每行取數的得分之和,每行取數的得分 被取走...
17 11 4 矩陣取數遊戲
描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n行 m列的矩陣,矩陣中的每個元素aij均為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有的元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有乙個得分值,為每行取數的得分之和 每...
矩陣取數遊戲 NOIP
題目描述 description 問題描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m 的矩陣,矩陣中的每個元素aij均 為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有...