NOIP2015提高組 鬥地主

2021-08-30 17:55:00 字數 1518 閱讀 9973

noip2015 提高組 day1 t3

牛牛最近迷上了一種叫鬥地主的撲克遊戲。鬥地主是一種使用黑桃、紅心、梅花、方片的a到k加上大小王的共54張牌來進行的撲克牌遊戲。在鬥地主中,牌的大小關係根據牌的數碼表示如下:3<4<5<6<7<8<9<10第一行包含用空格隔開的 2 個正整數 t ,n ,表示手牌的組數以及每組手牌的張數。

接下來 t 組資料,每組資料 n 行,每行乙個非負整數對 ai,bi ,表示一張牌,其中 ai 表示牌的數碼,bi 表示牌的花色,中間用空格隔開。特別的,我們用 1 來表示數碼 a,11 表示數碼 j,12 表示數碼 q ,13 表示數碼 k ;黑桃、紅心、梅花、方片分別用 1~4 來表示;小王的表示方法為 0 1,大王的表示方法為 0 2 。

輸出共 t 行,每行乙個整數,表示打光第 i 組手牌的最少次數。

樣例資料 1

輸入

1 8

7 48 4

9 110 4

11 1

5 11 4

1 1

輸出

樣例資料 2

輸入

1 17

12 3

4 32 3

5 410 2

3 312 2

0 11 3

10 1

6 212 1

11 3

5 212 4

2 27 2

輸出

備註

【樣例1說明】

共有 1 組手牌,包含 8 張牌:方片7,方片8,黑桃9,方片10,黑桃j,黑桃5,方片a以及黑桃a。可以通過打單順子(方片7,方片8,黑桃9,方片10,黑桃j),單張牌(黑桃5)以及對子牌(黑桃a以及方片a)在3次內打光。

【資料範圍】

對於不同的測試點,我們約定手牌組數 t 與張數 n 的規模如下:

資料保證:所有的手牌都是隨機生成的。

大模擬?不不不,普通搜尋就行了。

考慮沒有順子的情況,那麼就可以貪心的進行出牌,出牌優先順序為順子》四帶二》四帶一》三帶二》三帶一》對子》單牌。因為出一次優先順序大的組合一定有多個優先順序小的組合組成的,所以貪心一定是是對的。

但是有了順子後,就不能證明貪心是對的,就直接搜尋順子是哪些,然後更新答案,必要的剪枝是肯定要加的。

#include

using

namespace std;

const

int card[5]

=;const

int max=16;

int n,m,ans,x,y,t;

int a[max]

,sum[max]

;inline

intcalc()

inline

void

dfs(

int step)

}int

main()

return0;

}

NOIP 提高組2015 鬥地主

題意 按照鬥地主出牌規則,給定手牌求出完的最少步數。演算法 模擬 搜尋 題解 可以發現除了順子,其它的出牌規則都和點數無關,只與同點數的牌數有關。所以可以先暴力列舉要出哪些順子,然後每乙個出完順子後手牌的情況處理成b 4 表示牌數為1 4的點數有多少個,然後進行dfs。為了方便,將a接在14,然後注...

NOIP2015提高組Day1鬥地主

仔細看,這道題著實想不到什麼優美的演算法,那麼基本確定方向 dfs。先分析,這題的花色是沒用的 我們再分析,會發現這題的出牌順序是不影響答案的 那麼我們便可以先出牌多的 因為這樣答案便會先便小,那麼便可以方便後面的剪枝 也就是我們先打順子再打帶牌!順子是沒有什麼技巧的,便直接暴搜 當然也是先暴搜長度...

NOIP2015提高組Day1 鬥地主

這道題做的時候讓我幾近崩潰,因為如果要打暴力的話太煩了不想打 但是我們發現 這樣只要判斷前六種方法就行了,打幾個判斷,30 首先,做一下基本處理 簡化題目 因為一般的鬥地主除了大王小王,沒有花色的大小區別,但這裡也不是讓你贏,只是自己乙個人快速打光牌。我們發現花色並沒有什麼用,可以免去。所以我們我們...