AtCoder Beginner Contest 306(4/8)
2023-06-17 23:20 作者:Pinkword777 | 我要投稿
A.簽到

把一個字符串翻倍,每個字符輸出兩次即可。
B.模擬

模擬二進(jìn)制乘法,每次輸入一個數(shù)(0或1),1就乘上當(dāng)前2的次方,記錄總和即可。(我開了unsigned long long)
C.模擬

從頭到尾,按順序輸出出現(xiàn)正好兩次的數(shù)即可。
D.DP

題意:
一個人從頭到尾走完1~n格,每個格上有個吃的,有毒或無毒,并且有一定美味度,他每走到一個格子上可以選擇吃或不吃。
一個人有兩個狀態(tài),健康或不健康。
健康狀態(tài)下,吃完有毒的,會變得不健康。
不健康狀態(tài)下,吃完有毒的會直接死掉,吃完沒毒的會解毒變成健康的。
那么狀態(tài)轉(zhuǎn)移方程為:
(0表示健康,1表示不健康)
食物無毒:
f[i][0]=max({f[i-1][0]+a[i].second,f[i-1][1]+a[i].second,f[i-1][0]});
//健康只能從 健康+吃/不吃 或者 不健康+吃
f[i][1]=f[i-1][1];
//不健康只能從 不健康來
食物有毒:
f[i][0]=f[i-1][0];
//健康只能從 健康來
f[i][1]=max(f[i-1][0]+a[i].second,f[i-1][1]);
//不健康只能從 健康+吃或者 不健康+不吃來
代碼截圖:
A.

B.

C.

D.

碎碎念:
E題沒看懂題,跟隊友一起打的,聽他們說是樹狀數(shù)組,不太熟,題意也不太懂,然后就沒看了
今天狀態(tài)還不錯
C題讀假題浪費了十幾分鐘,可惜
總之放假前不會再經(jīng)常打了,偶爾打打這種簡單的還可以