國慶七連測(六)德克薩斯撲克

2021-08-28 18:12:02 字數 1642 閱讀 8478

【簡化題目描述】

簡化德州撲克的規則,從七張牌中選取五張牌。在忽略花色的情況下,我們把牌型分為七類,大小依次遞減。

1、四帶一 2、三帶對 3、順子 4、三帶二(兩張牌不要求相同)5、兩對帶一張單牌 6、只有一對 7、什麼也不是。牌型相同則輸出最大的排序。

注意通常情況下a>k>q>j>10>9>8>7>6>5>4>3>2。只有順子時可以組成5、4、3、2、a。

輸出一行5個數字或者字母(從大到小輸出)

【分析】

先排序,再dfs暴力選取五張牌。用桶來統計每種牌的數量和「幾張牌」的數量。按牌型的等級從大到小列舉,更新答案。盡量寫的規整一點,既便於理解,又便於除錯。(機房某大佬不用函式只用if和ctrl+c硬生生地敲了435行**,。。。)

code:

#include

#include

#include

#include

using

namespace std;

const

int n=

7,m=5;

char s[

100]

;int a[

100]

,used[

100]

;int p[

100]

,b[100

],lv_p,lv_b;

inline

bool

check()

inline

void

exchange()

inline

bool

shunzi()

if(b[1]

==b[2]

+1&&b[2]

==b[3]

+1&&b[3]

==b[4]

+1&&b[4]

==b[5]

+1)return1;

return0;

}int cnt[20]

,num[10]

;inline

void

solve()

if(num[4]

)if(num[3]

&&num[2]

)if(shunzi()

)if(num[3]

)if(num[2]

==2)if

(num[2]

) lv_b=1;

if(check()

)exchange()

;return;}

void

dfs(

int u,

int p)

for(

int i=p;i<=n;i++)if

(!used[i])}

inline

voidpc(

int x)

inline

void

print()

}bool

cmp(

int x,

int y)

intmain()

sort

(a+1

,a+n+

1,cmp)

;dfs(1

,1);

print()

;return0;

}

國慶七連測(一)divide

好了關於多重揹包的討論就此打住,讓我們來考慮一下正確的解法。模擬01揹包時我們轉二維空間為一維空間,我們可以利用上述定義中的f i 所存的值。重新定義f j 表示到達位置j最多還可以剩下f j 個價值為i的物品可以利用,如果不能到達就用 1表示。狀態轉移上,如果f j 原來大於 1,則賦值為a i ...

國慶七連測(一)cmi

一句話題意 求長度為n的序列,排序的最少元素移動次數。分析 轉化一下題意,由於n一定,我們轉而求最大的不移動元素個數。於是 就是lcs啊 就是lcs啊 就是lcs啊 裸題啊。code include include include include using namespace std const ...

HGOI 國慶七連測 day3

講道理,真的很譴責這種掛著羊頭賣著恐龍肉的操作。標題寫著普及訓練難度結果是noi ctsc的題orz 真的爆零,我一道題都不會寫orz,出題人是江蘇高考415的dalao 題目描述 include include include include define ll long long using n...