����λ�ã���ҳ > �����̳� > �̳� > �㷨�����ݽṹ 1 - ģ��
� ���� ����������˵��ģ������Ϣѧѧ������Ӵ���Ҳ���Ѷȿ������֪ʶ�㡣���硶A+B ���⡷��У������������ż�ɽ��û���κ��̵�����Σ������硶����ɱ�����������ϵĿ�ս��ͬ�����ż�ɽ����Ë��Ëͷ�ۡ� ��ˣ�����ѡ����ģ����Ϊ���㷨�����ݽṹ���ĵ�һ�¡� ���� ������������ʾ�ģ�ģ��ĺ���˼��
����������˵��ģ������Ϣѧѧ������Ӵ���Ҳ���Ѷȿ������֪ʶ�㡣����
��A+B ���⡷
�����������
���ż�ɽ��û���κ��̵�����Σ�������
������ɱ��
���������ϵĿ�ս��
ͬ�����ż�ɽ����Ë��Ëͷ�ۡ�
��ˣ�����ѡ����ģ����Ϊ���㷨�����ݽṹ���ĵ�һ�¡�
������������ʾ�ģ�ģ��ĺ���˼����ǡ�����ճ������������Ŀ�ṩ����Ϣ��������Ŀ�Ľ������ģ��������ܹ��õ����յĽ���������� ��[CSP-S 2023] �������� Ϊ�����н��ܣ�
С Y ��һ�������Ȧ������������ͼ��ʾ��ÿ����Ȧ���Ǵ� \(0\) �� \(9\) �����֡�ÿ����Ȧ���Ǵ� \(0\) �� \(9\) ��Ñ������ \(9\) ����һ��λ�ú���Ա�� \(0\) �� \(8\) ��
![]()
��ΪУ԰��Ƚϰ�ȫ��С Y ���õ�������ʽ�ǣ�����ȷ���뿪ʼ�����ת����������һ�Σ�ÿ�ζ�����ij�����Ƚ�ת��һ����Ȧ����ͬʱת���������ڵIJ�Ȧ��
��С Y ѡ��ͬʱת���������ڲ�Ȧʱ��������Ȧת���ķ�����ͬ����С Y ���Խ��������� \(\tt{0\;0\;1\;1\;5}\) ת�� \(\tt{1\;1\;1\;1\;5}\) ��������ת�� \(\tt{1\;2\;1\;1\;5}\) ��
ʱ����ˣ�С Y Ҳ������ô�����İ�ȫ�ԣ�����С Y �������Լ��������������� \(n\) ��״̬��ע���� \(n\) ��״̬��������ȷ���롣
Ϊ�˼�����ô�����İ�ȫ�ԣ�С Y �ж����ֿ��ܵ���ȷ���룬ʹ��ÿ����ȷ���붼�ܹ������������õ�������ʽ������������������ȫ�� \(n\) ��״̬��
���ѷ�����Ŀ�е�������ֻ�� \(5\) λ�������Կ���ֱ�Ӷ�ÿһ�����ܵ����� \(x\) �� \(x \in \mathbb{Z}\) �� \(00000 \le x \le 99999\) �������жϡ��ж�ʱ�ֱ��� \(n\) ��״̬�Ϳ������벻ͬ��λ����ֻ�� \(1\) λ��ͬ����Ȼ���У��������� \(2\) λ��ͬ������λ��״̬�IJ�ֵ�̶�������������ͬ�ķ��ȣ�Ҳ�ǿ��еġ�Ȼ��ֱ��ͳ�Ƽ��ɡ�
#include
using namespace std;
int n;
int a[10][10];
int ans = 0;
int b[10];
bool cmp(int x) {
int cnt = 0, pos;
for (int i = 1; i <= 5; i++) {
if (b[i] != a[x][i]) {
cnt++;
pos = i;
}
if (cnt > 2) return true; // ��ͬ��λ̫��
}
if (cnt == 0) return true; // û��
if (cnt == 1) return false; // ֻ������һλ
if (b[pos - 1] == a[x][pos - 1]) return true; // �������������
// ������λ�ķ���
int f = (b[pos] + 10 - a[x][pos]) % 10;
int g = (b[pos - 1] + 10 - a[x][pos - 1]) % 10;
return f != g;
}
bool test() {
for (int i = 1; i <= n; i++) {
if (cmp(i)) {
return false;
}
}
return true;
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 5; j++) {
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i <= 9; i++) {
b[1] = i;
for (int j = 0; j <= 9; j++) {
b[2] = j;
for (int k = 0; k <= 9; k++) {
b[3] = k;
for (int l = 0; l <= 9; l++) {
b[4] = l;
for (int m = 0; m <= 9; m++) {
b[5] = m;
if (test()) {
ans++; // ֱ��ͳ��
}
}
}
}
}
}
printf("%d\n", ans);
return 0;
}
���������������ֱ�ף������κ����Ρ�
�Ѷ���������Ҳû�����١�ֻҪ�󵨿�д��С�ĵ��ԣ�һ�н��п��ܣ�
�������룺
�������˿��ơ���Texas Hold'em��
��
һ���˿��Ƴ�ȥ��С������Ͷ��ֱַ��� \(2\) ����֪���ƣ������������� \(3\) ����֪�����ƺ� \(2\) ��δ֪�����ơ�
���� 2 ��δ֪�����ƣ������� \(5\) �Ź����ƣ���Ͷ��ֱַ�ӵ�� \(2\) �����ƣ��� \(9\) ���ơ��㲻����ѡ����ֵ����ƣ�����Ҳ������ѡ��������ơ������Լ������ƺ͹������У�ѡȡ \(5\) ��������͡�����ͬ����˫�����Ϳ������ظ��Ĺ����ơ�
��Ͷ��ֶ�Ҫѡ�������ϣ���������δ֪�Ƶ����п�������У���Ļ�ʤ�����Ƕ��١�ƽ�ֲ����ڻ�ʤ��
���͵ıȽϷ����ο��±�����С�´󣩣�
![]()
��Ŀ�ı�����������Ǽ�����ʡ�������֪��ö��ÿ�ֿ��ܵ�������ÿ��з����������ܷ��������Ǹ��ʡ�����ֱ��ö��ʣ�µ� \(2\) �Ź����ƾ����ˡ�ʣ�µ�ʱ�佻��д����͵��ԣ�
// �����е�ע�ͳ��� ��Chinglish�� ��ƴ������Ϊ֮ǰ��̨������֧���������뷨�����ȴպ��ſ��ɡ�
#include
using namespace std;
struct card {
int c, n;
/*
c:
0 -> Spades
1 -> Hearts
2 -> Diamonds
3 -> Clubs
n:
A -> 14 / 1
K -> 13
Q -> 12
J -> 11
T -> 10
9-2
*/
};
map vis;
bool operator == (card &x, card &y) {
return x.c == y.c && x.n == y.n;
}
card me[2], en[2], pu[9]; // me, enemy, public(last 2 for users)
card a[5] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, b[5] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, c[5] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // compare a and b. a->me, b->enemy; c for the best choice
int s1, s2, s3; // judge kind of card
/*
9 -> huang jia tong hua shun
8 -> tong hua shun
7 -> si tiao
6 -> mam tang hong
5 -> tong hua
4 -> shun zi
3 -> san tiao
2 -> liang dui
1 -> yi dui
0 -> gao pai
*/
bool ok(int i, int j, int k, int l) {
return !vis[i*20+ j] && !vis[k*20+l] && i * 20 + j != k * 20 + l;
}
bool cmp(card &x, card &y) {
return (x.n != y.n) ? (x.n > y.n) : (x.c < y.c);
}
bool cmpa() {
/*
return value:
1 -> win
0 -> lost / draw
*/
// diff kind
if (s1 != s3) return s1 > s3;
if (s1 == 9) return 0;
if (s1 == 8) {
return a[0].n > c[0].n;
}
if (s1 == 7) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
return a[4].n > c[4].n;
}
if (s1 == 6) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
return a[4].n > c[4].n;
}
if (s1 == 5) {
for (int i = 0; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
if (s1 == 4) {
return a[0].n > c[0].n;
}
if (s1 == 3) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
if (a[3].n != c[3].n) return a[3].n > c[3].n;
return a[4].n > c[4].n;
}
if (s1 == 2) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
if (a[3].n != c[3].n) return a[3].n > c[3].n;
return a[4].n > c[4].n;
}
if (s1 == 1) {
if (a[0].n != c[0].n) return a[0].n > c[0].n;
for (int i = 2; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0;
}
for (int i = 0; i < 5; i++) {
if (a[i].n != c[i].n) return a[i].n > c[i].n;
}
return 0; // default
}
bool cmpb() {
/*
return value:
1 -> win
0 -> lost / draw
*/
// diff kind
if (s2 != s3) return s2 > s3;
if (s2 == 9) return 0;
if (s2 == 8) {
return b[0].n > c[0].n;
}
if (s2 == 7) {
if (b[0].n != c[0].n) return b[0].n > c[0].n;
return b[4].n > c[4].n;
}
if (s2 == 6) {
if (b[0].n != c[0].n) return b[0].n > c[0].n;
return b[4].n > c[4].n;
}
if (s2 == 5) {
for (int i = 0; i < 5; i++) {
if (b[i].n != c[i].n) return b[i].n > c[i].n;
}
return 0;
}
if (s2 == 4) {
return b[0].n > c[0].n;
}
if (s2 == 3) {
if (b[0].n != c[0].n) return b[0].n > c[0].n;
if (b[3].n != c[3].n) return b[3].n > c[3].n;
return b[4].n > c[4].n;
}
if (s2 == 2) {
if (b[0].n != c[0].n) return b[0].n > c[0].n;
if (b[3].n != c[3].n) return b[3].n > c[3].n;
return b[4].n > c[4].n;
}
if (s2 == 1) {
if (b[0].n != c[0].n) return b[0].n > c[0].n;
for (int i = 2; i < 5; i++) {
if (b[i].n != c[i].n) return b[i].n > c[i].n;
}
return 0;
}
for (int i = 0; i < 5; i++) {
if (b[i].n != c[i].n) return b[i].n > c[i].n;
}
return 0; // default
}
bool check() {
/*
return value:
1 -> win
0 -> lost / draw
*/
// diff kind
if (s1 != s2) return s1 > s2;
if (s1 == 9) return 0;
if (s1 == 8) {
return a[0].n > b[0].n;
}
if (s1 == 7) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
return a[4].n > b[4].n;
}
if (s1 == 6) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
return a[4].n > b[4].n;
}
if (s1 == 5) {
for (int i = 0; i < 5; i++) {
if (a[i].n != b[i].n) return a[i].n > b[i].n;
}
return 0;
}
if (s1 == 4) {
return a[0].n > b[0].n;
}
if (s1 == 3) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
if (a[3].n != b[3].n) return a[3].n > b[3].n;
return a[4].n > b[4].n;
}
if (s1 == 2) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
if (a[3].n != b[3].n) return a[3].n > b[3].n;
return a[4].n > b[4].n;
}
if (s1 == 1) {
if (a[0].n != b[0].n) return a[0].n > b[0].n;
for (int i = 2; i < 5; i++) {
if (a[i].n != b[i].n) return a[i].n > b[i].n;
}
return 0;
}
for (int i = 0; i < 5; i++) {
if (a[i].n != b[i].n) return a[i].n > b[i].n;
}
return 0; // default
}
void judgec() {
// (huang jia) tong hua shun
if (c[0].c == c[1].c && c[1].c == c[2].c && c[2].c == c[3].c && c[3].c == c[4].c) {
if (c[0].n == 14 && c[1].n == 13 && c[2].n == 12 && c[3].n == 11 && c[4].n == 10) { // AKQJT
s3 = 9;
return;
}
if (c[0].n == c[1].n + 1 && c[1].n == c[2].n + 1 && c[2].n == c[3].n + 1 && c[3].n == c[4].n + 1) { // shun zi
s3 = 8;
return;
}
if (c[0].n == 14 && c[1].n == 5 && c[2].n == 4 && c[3].n == 3 && c[4].n == 2) { // A2345
swap(c[0], c[1]);
swap(c[1], c[2]);
swap(c[2], c[3]);
swap(c[3], c[4]);
c[4].n = 1;
s3 = 8;
return;
}
}
// 4 tiao
if (c[0].n == c[1].n && c[1].n == c[2].n && c[2].n == c[3].n) {
s3 = 7;
return;
}
if (c[1].n == c[2].n && c[2].n == c[3].n && c[3].n == c[4].n) {
swap(c[0], c[4]);
s3 = 7;
return;
}
// 3 dai 2
if (c[0].n == c[1].n && c[1].n == c[2].n && c[3].n == c[4].n) {
s3 = 6;
return;
}
if (c[0].n == c[1].n && c[2].n == c[3].n && c[3].n == c[4].n) {
s3 = 6;
// tiao zheng pai de shun xu
swap(c[0], c[4]);
swap(c[1], c[3]);
return;
}
// tong hua
if (c[0].c == c[1].c && c[1].c == c[2].c && c[2].c == c[3].c && c[3].c == c[4].c) {
s3 = 5;
return;
}
// shun zi
if (c[0].n == c[1].n + 1 && c[1].n == c[2].n + 1 && c[2].n == c[3].n + 1 && c[3].n == c[4].n + 1) { // shun zi
s3 = 4;
return;
}
if (c[0].n == 14 && c[1].n == 5 && c[2].n == 4 && c[3].n == 3 && c[4].n == 2) { // A2345
s3 = 4;
c[0].n = 1;
swap(c[0], c[1]);
swap(c[1], c[2]);
swap(c[2], c[3]);
swap(c[3], c[4]);
return;
}
// 3 tiao
if (c[0].n == c[1].n && c[1].n == c[2].n) {
s3 = 3;
return;
}
if (c[1].n == c[2].n && c[2].n == c[3].n) {
s3 = 3;
c[3] = c[0];
c[0] = c[1];
if (c[3].n < c[4].n) swap(c[3], c[4]);
return;
}
if (c[2].n == c[3].n && c[3].n == c[4].n) {
s3 = 3;
swap(c[1], c[2]);
swap(c[2], c[3]);
swap(c[3], c[4]);
swap(c[0], c[1]);
swap(c[1], c[2]);
swap(c[2], c[3]);
return;
}
// 2 dui
if (c[0].n == c[1].n) {
if (c[2].n == c[3].n) {
s3 = 2;
return;
}
if (c[3].n == c[4].n) {
s3 = 2;
swap(c[2], c[3]);
swap(c[3], c[4]);
return;
}
}
if (c[1].n == c[2].n) {
if (c[3].n == c[4].n) {
s3 = 2;
swap(c[0], c[1]);
swap(c[1], c[2]);
swap(c[2], c[3]);
swap(c[3], c[4]);
return;
}
}
// 1 dui
if (c[0].n == c[1].n) {
s3 = 1;
return;
}
if (c[1].n == c[2].n) {
s3 = 1;
swap(c[2], c[0]);
return;
}
if (c[2].n == c[3].n) {
s3 = 1;
swap(c[0], c[2]);
swap(c[1], c[3]);
return;
}
if (c[3].n == c[4].n) {
s3 = 1;
swap(c[0], c[3]);
swap(c[1], c[4]);
swap(c[2], c[3]);
swap(c[3], c[4]);
return;
}
// san pai
s3 = 0;
return;
}
int main() {
string s;
while (cin >> s) {
if (s == "#") break;
{
int num, cd;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
me[0] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
me[1] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
en[0] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
en[1] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
pu[0] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
pu[1] = {cd, num};
cin >> s;
if (s[0] == 'S') cd = 0;
if (s[0] == 'H') cd = 1;
if (s[0] == 'D') cd = 2;
if (s[0] == 'C') cd = 3;
if (s[1] == 'A') num = 14;
else if (s[1] == 'T') num = 10;
else if (s[1] == 'J') num = 11;
else if (s[1] == 'Q') num = 12;
else if (s[1] == 'K') num = 13;
else num = s[1] - '0';
pu[2] = {cd, num};
} // input
vis[me[0].c * 20 + me[0].n] = vis[me[1].c * 20 + me[1].n] = vis[en[0].c * 20 + en[0].n] = vis[en[1].c * 20 + en[1].n] = vis[pu[0].c * 20 + pu[0].n] = vis[pu[1].c * 20 + pu[1].n] = vis[pu[2].c * 20 + pu[2].n] = 1;
int ans = 0, cnt = 0;
for (int i = 0; i < 4; i++) {
for (int j = 2; j <= 14; j++) {
for (int k = 0; k < 4; k++) {
for (int l = 2; l <= 14; l++) {
pu[3] = {i, j};
pu[4] = {k, l};
if (!ok(i, j, k, l)) continue;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
s3 = s1 = s2 = 0;
card t = {0, 0};
for (int i = 5; i < 9; i++) pu[i] = t;
// select card
for (int m = 0; m < 7; m++) {
for (int n = m + 1; n < 7; n++) {
for (int o = n + 1; o < 7; o++) {
for (int p = o + 1; p < 7; p++) {
for (int q = p + 1; q < 7; q++) {
pu[5] = me[0];
pu[6] = me[1];
c[0] = pu[m];
c[1] = pu[n];
c[2] = pu[o];
c[3] = pu[p];
c[4] = pu[q];
sort(c, c + 5, cmp);
judgec();
if (!cmpa()) {
for (int i = 0; i < 5; i++) a[i] = c[i];
s1 = s3;
}
pu[5] = en[0];
pu[6] = en[1];
c[0] = pu[m];
c[1] = pu[n];
c[2] = pu[o];
c[3] = pu[p];
c[4] = pu[q];
sort(c, c + 5, cmp);
judgec();
if (!cmpb()) {
for (int i = 0; i < 5; i++) b[i] = c[i];
s2 = s3;
}
}
}
}
}
}
// cnt win
ans += check();
cnt++;
}
}
}
}
double pwin = (double)ans / cnt;
cout << fixed << setprecision(20) << pwin << endl;
vis[me[0].c * 20 + me[0].n] = vis[me[1].c * 20 + me[1].n] = vis[en[0].c * 20 + en[0].n] = vis[en[1].c * 20 + en[1].n] = vis[pu[0].c * 20 + pu[0].n] = vis[pu[1].c * 20 + pu[1].n] = vis[pu[2].c * 20 + pu[2].n] = 0;
}
return 0;
}
���Կ�����ģ������������Ⲣ���ѣ���Ҫ�������ǵ������Խ�˼��ת��Ϊ���롣
ֻҪ�����ϰ�����ѵ�ģ���ⶼ����������
ʹ��Blender���ɳ���ģ��
�Ķ�ȫ����������ERA5�����ط���
�Ķ�Xpath���������﷨
�Ķ�����ѧϰ�������繹�����£�
�Ķ���ΪMateƷ��ʢ�䣺HarmonyOS NEXT�ӳ�����Ϸ���ܵõ�����ͷ�
�Ķ�ʵ�ֶ��󼯺���DataTable���໥ת��
�Ķ�Ӳ�̵Ļ���֪ʶ��ѡ��ָ��
�Ķ�������й��ƶ��ı�ͼ��ײ�
�Ķ�����NEXTԪ�����������ѿ����ϼ���Ʒ
�Ķ��ᳲ���С������������Ƽ��رշ���
�Ķ������ArcMap�����н���դ��ͼ���ز�������
�Ķ��㷨�����ݽṹ 1 - ģ��
�Ķ���Ѷ�����߿ͷ���Ӫ��ϵͳ����
�Ķ���Ѷ��Ƶҹ��ģʽ���ý̳�
�Ķ����ں���NEXT��Ѫ���Ŵ���������������
�Ķ�5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��
�Ķ�Java����ģʽ����̬�����Ͷ�̬�����ĶԱȷ���
�Ķ�Win11�ʼDZ����Զ�����Ӧ�õ���ɫ����ʾ����
�Ķ�˼�� V1.5.6 ��׿��
��ս�귨 V7.5.0 ��׿��
У��������������׵������� V1.0 ��׿��
��˸֮�� V1.9.7 ��׿��
������Ե����� v1.0.4 ��׿��
������֮ŠV5.2.3 ��׿��
��������������Դ V1.0 ��׿��
���֮Ϣ V1.0 ��׿��
��ħ������������䣩 V1.0 ��׿��
���ں�������ϵ�����������������վ�����������������Ƽ�����
Ƶ�� ����Ƶ��������ר������������׿�������app����
�Ƽ� ��Ô���������°��������ܿ������ز���
���� ����ɫ������������ ���������ս������������
ɨ��ά�����������ֻ��汾��
ɨ��ά����������΢�Ź��ںţ�
��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]
��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������