noip2003 數字遊戲 (區間動歸)

2021-07-04 22:28:48 字數 1845 閱讀 4162

丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數(一共n個),你要按順序將其分為m個部分,各部分內的數字相加,相加所得的m個結果對10取模後再相乘,最終得到乙個數k。遊戲的要求是使你所得的k最大或者最小。

例如,對於下面這圈數字(n=4,m=2):

24                           -1

3當要求最小值時,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值時,為((2+4+3) mod 10)×(-1 mod 10)=9×9=81。特別值得注意的是,無論是負數還是正數,對10取模的結果均為非負值。

丁丁請你編寫程式幫他贏得這個遊戲。

輸入檔案第一行有兩個整數,n(1≤n≤50)和m(1≤m≤9)。以下n行每行有個整數,其絕對值不大於104

,按順序給出圈中的數字,首尾相接。

輸出檔案有兩行,各包含乙個非負整數。第一行是你程式得到的最小值,第二行是最大值。

4 2 4

3-1 2

7

81

en

題目思路此題是一道環形dp題,不是很難,將環形圈斷開成單鏈,即將線性鏈條*2即可,具體如圖所示

然後從第乙個點1開始,向右方dp,求出以第乙個點為起點的dp最大值,最小值,dp完成後再從第2個點2開始,求出以第2個點為起點的dp最大值、最小值......依次直到起點到達環形終點第五個點5,求出所有最大值中的最最大值,最小值中的最最小值,這裡第i個點為起點的含義是第乙個斷開的地方是第i個點與第i-1個點之間。

下面是**:

[cpp]view plain

copy

print

?#include 

#include 

#define max 10000000

#define min -10000000

intline[200],n,m,min,max,sum[200];  

intf[200][20];

//f[i][j]=第1-i個數分成j份,結果最大值

intg[200][20];

//g[i][j]=第1-i個數分成j份,結果最小值

intmin(

inta,

intb)  

intmax(

inta,

intb)  

void

dp(int

a)  

for(i=1;i<=n;i++)  

f[0][0]=1;  

g[0][0]=1;  

for(j=2;j<=m;j++)  

}  }  }  

max=max(max,f[n][m]);  

min=min(min,g[n][m]);  

}  int

main()  

for(i=0;i

dp(line+i);  

printf("%d\n%d\n"

,min,max);  

return

0;  

}  

數字遊戲 noip2003普及組

題目描述 丁丁最近沉迷於乙個數字遊戲之中。這個遊戲看似簡單,但丁丁在研究了許多天之後卻發覺原來在簡單的規則下想要贏得這個遊戲並不那麼容易。遊戲是這樣的,在你面前有一圈整數 一共n個 你要按順序將其分為m個部分,各部分內的數字相加,相加所得的m個結果對10取模後再相乘,最終得到乙個數k。遊戲的要求是使...

NOIP2003 偵探推理

題二 偵探推理 問題描述 明明同學最近迷上了偵探漫畫 柯南 並沉醉於推理遊戲之中,於是他召集了一群同學玩推理遊戲。遊戲的內容是這樣的,明明的同學們先商量好由其中的乙個人充當罪犯 在明明不知情的情況下 明明的任務就是找出這個罪犯。接著,明明逐個詢問每乙個同學,被詢問者可能會說 證詞中出現的其他話,都不...

普及 NOIP 2003 桌球

題目背景 國際乒聯現在主席沙拉拉自從上任以來就立志於推行一系列改革,以推動桌球運動在全球的普及。其中11分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之後走上了桌球研究工作,意圖弄明白11分制和21分制對選手的不同影響。在開展他的研究之前,他首先需要對...