題目大意:
麻將是中國傳統的娛樂工具之一。麻將牌的牌可以分為字牌(共有東、南、西、北、中、發、白七種)和序數牌(分為條子、餅子、萬子三種花色,每種花色各有一到九的九種牌),每種牌各四張。在麻將中,通常情況下一組和了的牌(即完成的牌)由十四張牌組成。十四張牌中的兩張組成對子(即完全相同的兩張牌),剩餘的十二張組成三張一組的四組,每一組須為順子(即同花色且序數相連的序數牌,例如條子的
三、四、五)或者是刻子(即完全相同的三張牌)。一組聽牌的牌是指一組十三張牌,且再加上某一張牌就可以組成和牌。那一張加上的牌可以稱為等待牌。在這裡,我們考慮一種特殊的麻將。在這種特殊的麻將裡,沒有字牌,花色也只有一種。但是,序數不被限制在一到九的範圍內,而是在1到n的範圍內。同時,也沒有每一種牌四張的限制。一組和了的牌由3m + 2張牌組成,其中兩張組成對子,其餘3m張組成三張一組的m組,每組須為順子或刻子。現給出一組3m + 1張的牌,要求判斷該組牌是否為聽牌(即還差一張就可以和牌)。如果是的話,輸出所有可能的等待牌。
思路:
列舉每一種牌是不是等待牌,每次判斷的時候,列舉對子,然後其他的能組成刻子就組成刻子,不能的話只能組成順子,按照這樣的原則去判斷。(注意,題目中沒有每一種牌只有4張的限制)
1 #include2#define ios ios::sync_with_stdio(false);//
不可再使用scanf printf
3#define max(a, b) ((a) > (b) ? (a) : (b))//
禁用於函式,會超時
4#define min(a, b) ((a) < (b) ? (a) : (b))
5#define mem(a) memset(a, 0, sizeof(a))
6#define dis(x, y, x1, y1) ((x - x1) * (x - x1) + (y - y1) * (y - y1))
7#define mid(l, r) ((l) + ((r) - (l)) / 2)
8#define lson ((o)<<1)
9#define rson ((o)<<1|1)
10#define accepted 0
11#pragma comment(linker, "/stack:102400000,102400000")//
棧外掛程式12
using
namespace
std;
13 inline int
read()
1417
while (ch>='
0'&&ch<='9')
18return x*f;19}
20 typedef long
long
ll;21
const
int maxn = 2000 + 10;22
const
int mod = 1000000007;//
const引用更快,巨集定義也更快
23const
int inf = 1e9 + 7;24
const
double eps = 1e-6;25
inta[maxn];
26int
b[maxn];
27int
n, m;
28bool
judge()
2939
if(b[n - 1] >= 3)b[n - 1] %= 3;40
if(b[n] >= 3)b[n] %= 3;41
if(b[n - 1] == 0 && b[n] == 0)return
true;42
return
false;43
}44bool
ok()
4554 a[i] += 2;55
}56return
false;57
}58intmain()
5970
if(ans.size() == 0)puts("no"
);71
else
7278
return
accepted;
79 }
BZOJ 1177 Oil 特技列舉
對於三個正方形的位置一共有六種情況。預處理出 i,j 左上角,左下角,右上角,右下角區域內最大權值的正方形。列舉分界線更新答案。剛開始想了乙個錯誤的dp也是蠢啊。include include include include include include include include inclu...
BZOJ 1088 掃雷Mine 列舉初始狀態
題目大意 現在棋盤是n 2的,第一列裡面某些格仔是雷,而第二列沒有雷,如下圖 由於第一列的雷可能有多種方案滿足第二列的數的限制,你的任務即根據第二列的資訊確定第一列雷有多少種擺放方案。思路 只需要列舉第一行是否有雷就ok了。判斷的時候除了判斷相等,還要判斷每a個f i 範圍必須在0 1之間 1 in...
BZOJ 1295 最長距離 BFS 列舉
題目大意 windy有一塊矩形土地,被分為 n m 塊 1 1 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就為兩個格仔中心的歐幾里德距離。如果從格仔a不可以走到格仔b,就沒有距離。如果格仔x和格仔y有公共邊,並且x和y均不含有障礙物,就可以從x走到y。如果windy...