2023年noip全國聯賽提高組
時間限制: 1 s
空間限制: 128000 kb
題目等級 : ** gold
題解【問題描述】
帥帥經常跟同學玩乙個矩陣取數遊戲:對於乙個給定的n*m 的矩陣,矩陣中的每個元素aij均
為非負整數。遊戲規則如下:
1. 每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素;
2. 每次取走的各個元素只能是該元素所在行的行首或行尾;
3. 每次取數都有乙個得分值,為每行取數的得分之和,每行取數的得分= 被取走的元素值*2i,
其中i 表示第i 次取數(從1 開始編號);
4. 遊戲結束總得分為m次取數得分之和。
帥帥想請你幫忙寫乙個程式,對於任意矩陣,可以求出取數後的最大得分。
輸入描述 input description
第1行為兩個用空格隔開的整數n和m。
第2~n+1 行為n*m矩陣,其中每行有m個用單個空格隔開的非負整數。
輸出描述 output description
輸出 僅包含1 行,為乙個整數,即輸入矩陣取數後的最大得分。
樣例輸入 sample input
2 31 2 3
3 4 2
樣例輸出 sample output
資料範圍及提示 data size & hint
樣例解釋
第 1 次:第1 行取行首元素,第2 行取行尾元素,本次得分為1*21+2*21=6
第2 次:兩行均取行首元素,本次得分為2*22+3*22=20
第3 次:得分為3*23+4*23=56。總得分為6+20+56=82
【限制】
60%的資料滿足:1<=n, m<=30, 答案不超過1016
100%的資料滿足:1<=n, m<=80, 0<=aij<=1000
分類標籤 tags 點此展開
動態規劃
區間型dp
高精度大陸地區
noip全國聯賽提高組
2023年
題解:個人覺得拿到60分就好,ac需要用高精度處理(特別噁心)。
60分**(long long即可)
//ac**:2016/04/02 16:36:32
#include#define ref(i,x,y) for(long long i=x;i<=y;i++)
using
namespace
std;
long
long f[100][100
];long
long a[100][100
];long
long xm[37
];long
long
n,m,sum,ans;
intmain()
sum+=ans;
}cout
return0;
}
1。inf進製版高精度+dp
#include #define ref(i,x,y) for(int i=x;i<=y;i++)2。 10進製版高精度 +dp#define inf 10000000000000000ll//
考慮到long long 後邊有011,19位數必須是素數
#define n 81
using
namespace
std;
struct nodes,f[n][n],w,r;//
w r 左右邊
inta[n][n],n,m;
intmain()
ref(i,1
,m) f[i][i].num[
0]=a[l][i];
ref(i,2
,m)
ref(j,1,m-i+1
) s.num[
0]+=f[1][m].num[0
]; s.num[
1]+=f[1][m].num[1
];
if(s.num[0]>=inf)
s.num[
0]%=inf,s.num[1]++;
}if(s.num[1])//
是否高於19位
printf("
%lld%lld\n
",s.num[1],s.num[0
]);
else
printf(
"%lld\n
",s.num[0
]);
return0;
}
#includeusing對比:namespace
std;
#define n 90
int n,m;bool
b;int
a[n],f[n][n][n];
int le[n],ri[n],s[n];//
高精度處理陣列
intmain()
else
if(le[q]
if(b)
for(int q=t1;q>=0;q--) f[j][j+i-1][q]=le[q];
else
for(int q=t2;q>=0;q--) f[j][j+i-1][q]=ri[q];
}for(int i=0;i1
][m][i];
}for(int i=0;i2
;
for(int i=0;i1;i++)
int w=n-1
;
while(s[w]==0&&w) w--;
for(int j=w;j>=0;j--) printf("%d"
,s[j]);
return0;
}
區間DP 矩陣取數遊戲
試題 noip2007 提高組 問題描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的 n m的矩陣,矩陣中的每個元素 aij均為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共 n個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有...
天梯 區間型動態規劃 1166 矩陣取數遊戲
題目描述 description 問題描述 帥帥經常跟同學玩乙個矩陣取數遊戲 對於乙個給定的n m 的矩陣,矩陣中的每個元素aij均 為非負整數。遊戲規則如下 1.每次取數時須從每行各取走乙個元素,共n個。m次後取完矩陣所有元素 2.每次取走的各個元素只能是該元素所在行的行首或行尾 3.每次取數都有...
wikioi 1166矩陣取數遊戲
本質上就是乙個在一行中頭尾取數情況下求出分數最大值。設d i,j 表示該行從i到j的合併分數 則d i,j 2 max 由於時間比較晚了,可能不夠時間寫高精度,先存普通版本演算法 include include include define maxn 100 int map maxn maxn in...