NOIP2015提高組D1T3 鬥地主

2022-05-27 22:51:09 字數 1560 閱讀 2052

問一副排n張,n<=23最少打幾次打完,資料組數t<=100。

面向資料程式設計。。

前30分:亂暴力?沒有順子,把單、對子、炸彈、三張、王炸、三帶一判一次即可。

前70分:狀壓,先預處理哪些狀態能一次出完,用這些狀態來轉移,2^n*n*t。實際得分可能比期望的高一些??

滿分:如果不打順子,最優策略是可以確定的,三和四的能帶走一二的就帶走。所以dfs打順子,然後貪心出剩下的牌。可以把ans做全域性變數,然後搜尋時》ans就退出以剪枝。

1 #include2 #include3 #include4

//#include5//

#include

6 #include7

//#include

8 #include9 #include10

using

namespace

std;

1112

bool isdigit(char c)

13int

qread()

1418

19int

t,n,ans;

20int a[25],cnt[25

];21

intcalc()

2230

31while (cnt[4] && cnt[1]>1) ans++,cnt[4]--,cnt[1]-=2;32

while (cnt[4] && cnt[2]>1) ans++,cnt[4]--,cnt[2]-=2;33

while (cnt[3] && cnt[1]) ans++,cnt[3]--,cnt[1]--;

34while (cnt[3] && cnt[2

])35

39 ans+=cnt[1]+cnt[2]+cnt[3]+cnt[4

];40

return

ans;41}

42void dfs(int

dep)

4358}59

//連對

60for (int i=1;i<=10;i++)

6170}71

//三連對

72for (int i=1;i<=11;i++)

7382}83

}84intmain()

85100

else a[13+y]++;

101}

102 ans=n;dfs(0

);103 printf("

%d\n

",ans);

104}

105return0;

106 }

view code

錯誤!有諸多未考慮到的情況,比如,4張3,4張3,3張5,可以兩次打完;4張3,3張4,3張5,2張6,也可以兩次打完。。。

不過這樣可以滿足網上大部分的資料了。。

資訊傳遞(NOIP2015提高組Day1T2)

題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...

Noip2015提高組總結

總體而言noip還行吧,每天前兩題都穩穩地,但是最後一題做得不好。day1,看完題目後,第一題簽到,第二題很直觀想出來了,又畫了個圖驗證了一下,tarjan雖然可能爆棧,但人工棧就沒問題了。第三題認為是dp一類的東西。畢竟是第一次提高組,還是挺緊張的,一二題打得特別仔細特別慢,對拍,肉眼查錯,搞了接...

NOIP2015提高組解析

題目見此 day1 神奇的幻方 裸裸的模擬 其實也可以發現規律 i 1在i的右上方,如果已經有數了,就填在i的下方 include includeusing namespace std int a 50 50 int nx,ny,n int main else elseelse a tx ty i ...