詭異的區間dp...
(突然發現自己之前的部落格格式好繁瑣...改進一下...)
alice想讓bob陪他去看《唐山大**》,但由於bob是個很感性的人,怕流淚不想去,但又不好意思以這個作為拒絕的理由,便提出玩乙個遊戲。
n個正整數圍成一圈,規則如下:
•兩個玩家輪流取數;
•最開始先手的玩家可以取任意乙個數x;
•從第二步開始當前玩家只能取x(上一玩家剛剛取的數)左右兩邊相鄰的數;
•直到取完所有的數,遊戲結束;
•取得較多奇數的玩家獲勝。
bob為了顯示大度,讓alice先取,但他忘了自己和alice都是絕頂聰明之人,現在alice請你幫他計算第一步有多少種取法使得最終獲得勝利。
input
第一行包含乙個整數n(1<=n<=100),表示數的個數。第二行包含n個正整數,每個數都在1到1000之間,任意兩個數互不相同。
output
輸出alice第一步有多少種取法。
sample input1)處理「環」:複製一遍陣列接在原陣列後面sample output輸入1:
33 1 5
輸入2:
41 2 3 4
輸入3:
84 10 5 2 9 8 1 7
輸出1:
3輸出2:
2輸出3:
5
2)n^3的區間dp
(特別鳴謝)參考部落格:
3)一些自己總結的要點:(大多都標在**注釋裡了)
還有陣列別開小了,之前maxn=100居然ce,才50分,多不划算是不是...
update——2019.11.2
我看了一下,感覺上面應該打錯了,覺得轉移應該是:f[ l,r ]=s[ l,r ]-min( f[ l+1,r ] , f[ l,r-1 ] )
#include#include#include#include#includeusing namespace std;
const int maxn=500;
int a[maxn+5],s[maxn+5][maxn+5];
int dp[maxn+5][maxn+5];
int n,ans;
int main()
for(int i=1;i<=2*n;i++)
for(int j=i;j<=2*n;j++)
for(int k=1;k<=n;k++)
printf("%d\n",ans);
return 0;
}
2019 遊記 中山紀念中學暑期遊Day3
今天沒有考試,專門講課,聽不懂的同學還可以回機房瞎搞 感覺安排的還可以,至少時間還是挺充裕的,只是講解的內容太多了,消化不完qaq.早上依舊沒有早起.三天過去了,我連有沒有鈴聲都不知道 去食堂吃了乙個椰蓉麵包 學校居然取名 奶皇麵包 是的,我字沒有打錯,看起來就是這樣高大上,然鵝吃起來像批發的 乙個...
2019 遊記 中山紀念中學暑期遊Day6
今天的安排是 聽課!資料結構 專題,花了一早上和一下午,晚上在搞乙個兄弟自己出的題目 賊坑 於是時間又沒了qaq.真心覺得時間怎麼都不夠用啊咧.早上還是沒有早起成功,於是匆匆趕往食堂,居然有公尺漢堡 公尺飯夾雞肉 吃得還算滿意qwq 來到報告廳,座位不出所料的被佔滿了,可是還是get到乙個c位 人品...
2019 遊記 中山紀念中學暑期遊Day9
昨天去珠海玩了下,感覺還不錯誒,就是好熱好曬.很想細寫但是沒時間,故事大多都在 上了 其實現在正在打字的我是10號的我.來填坑了23333.詳情記不到了,直接說考試 這次考試真的考得好炸,都是難以暴力應付的題qwq.第一題 自己想到了是dp,而且和正解的狀態定義都一樣!但是不會打,這就很現實了.暴力...