【DP】hihocoder #1159:포커
2416 단어 dp
#include <iostream>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <climits>
#include <cstdlib>
#include <cmath>
#include <time.h>
#define maxn 10005
#define maxm 100005
#define eps 1e-7
#define mod 10007
#define INF 0x3f3f3f3f
#define PI (acos(-1.0))
#define lowbit(x) (x&(-x))
#define mp make_pair
//#define ls o<<1
//#define rs o<<1 | 1
//#define lson o<<1, L, mid
//#define rson o<<1 | 1, mid+1, R
#define pii pair<int, int>
#pragma comment(linker, "/STACK:16777216")
typedef long long LL;
typedef unsigned long long ULL;
//typedef int LL;
using namespace std;
LL qpow(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base;base=base*base;b/=2;}return res;}
LL powmod(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base%mod;base=base*base%mod;b/=2;}return res;}
// head
ULL dp[6][66][66][66][66];
int a[105];
int c[105];
char s[105];
int n;
ULL dfs(int now, int a1, int a2, int a3, int a4)
{
if(dp[now][a1][a2][a3][a4] != 0) return dp[now][a1][a2][a3][a4];
if(a1 == 0 && a2 == 0 && a3 == 0 && a4 == 0) {
if(now == 0) return 1;
else return 0;
}
ULL ans = 0;
if(a1) ans += dfs(0, a1-1, a2, a3, a4) * (now == 1 ? a1-1 : a1);
if(a2) ans += dfs(1, a1+1, a2-1, a3, a4) * 2 * (now == 2 ? a2-1 : a2);
if(a3) ans += dfs(2, a1, a2+1, a3-1, a4) * 3 * (now == 3 ? a3-1 : a3);
if(a4) ans += dfs(3, a1, a2, a3+1, a4-1) * 4 * (now == 4 ? a4-1 : a4);
return dp[now][a1][a2][a3][a4] = ans;
}
void work(int _)
{
memset(a, 0, sizeof a);
memset(c, 0, sizeof c);
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%s", s);
int t = s[0] - '0';
if(s[0] == 'T') t = 10;
if(s[0] == 'J') t = 11;
if(s[0] == 'Q') t = 12;
if(s[0] == 'K') t = 13;
if(s[0] == 'A') t = 1;
c[t]++;
}
for(int i = 1; i <= 13; i++) a[c[i]]++;
printf("Case #%d: %llu
", _, dfs(5, a[1], a[2], a[3], a[4]));
}
int main(void)
{
int _;
scanf("%d", &_);
for(int i = 1; i <= _; i++) work(i);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.