問一副排n張,n<=23最少打幾次打完,資料組數t<=100。
面向資料程式設計。。
前30分:亂暴力?沒有順子,把單、對子、炸彈、三張、王炸、三帶一判一次即可。
前70分:狀壓,先預處理哪些狀態能一次出完,用這些狀態來轉移,2^n*n*t。實際得分可能比期望的高一些??
滿分:如果不打順子,最優策略是可以確定的,三和四的能帶走一二的就帶走。所以dfs打順子,然後貪心出剩下的牌。可以把ans做全域性變數,然後搜尋時》ans就退出以剪枝。
1 #include2 #include3 #include4view code//#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 }
錯誤!有諸多未考慮到的情況,比如,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 ...