QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#325289 | #5607. Cribbage On Steroids | ape_pack | WA | 0ms | 3868kb | C++14 | 2.8kb | 2024-02-11 07:13:28 | 2024-02-11 07:13:28 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define FOR(i, a, b) for (int i=a; i<(b); i++)
#define F0R(i, a) for (int i=0; i<(a); i++)
#define FORd(i,a,b) for (int i = a; i >= b; i--)
#define F0Rd(i,a) for (int i = a; i >= 0; i--)
#define FORit(it,a) for (auto it = a.begin(); it != a.end(); it++)
#define trav(a,x) for (auto& a: x)
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
#define alla(arr, sz) arr, arr + sz
const int dx[4] = { 1,0,-1,0 }, dy[4] = { 0,1,0,-1 }; // for every grid problem!!
const ll linf = 4*1e18;
const int inf = 1000000007;
namespace io {
void setIn(string s) { freopen(s.c_str(),"r",stdin); }
void setOut(string s) { freopen(s.c_str(),"w",stdout); }
void setIO(string s = "") {
ios_base::sync_with_stdio(0); cin.tie(0); // fast I/O
if (sz(s)) { setIn(s+".in"), setOut(s+".out"); } // for USACO
}
}
using namespace io;
#define DEBUG 0
void solve() {
int n; cin >> n;
map<char, int> m_sum, m;
FOR(i,2,10) m_sum[i+'0'] = i;
m_sum['A'] = 1;
m_sum['T'] = 10;
m_sum['J'] = 10;
m_sum['Q'] = 10;
m_sum['K'] = 10;
FOR(i,2,10) m[i+'0'] = i;
m['A'] = 1;
m['T'] = 10;
m['J'] = 11;
m['Q'] = 12;
m['K'] = 13;
vi v;
map<int, int> freq_sum, freq;
F0R(i,n) {
char c; cin>> c;
v.pb(m_sum[c]);
// freq_sum[m_sum[c]]++;
freq[m[c]]++;
}
int ans = 0;
FORit(it,freq) {
ans += (it->second -1)*it->second/2;
}
ans *= 2;
for (auto it = freq.begin(); it != freq.end(); ) {
auto tmp = it; tmp++;
int cur = it->second, val = it->first+1;
int cnt = 1;
if (tmp == freq.end()) cur = 0;
while(tmp != freq.end()) {
if (tmp->first != val) {
if (cnt <= 2) cur = 0;
it = tmp;
break;
}
else {
cur *= tmp->second;
val++;
cnt++;
tmp++;
if (tmp == freq.end() && cnt <= 2) cur = 0;
}
}
if (tmp == freq.end()) it = freq.end();
ans += cur*cnt;
}
int dp[n+1][16]; memset(dp,0,sizeof dp);
dp[0][0] = 1;
FOR(i,1,n+1) F0R(j,16) {
dp[i][j] += dp[i-1][j];
if (j-v[i-1] >= 0) dp[i][j] += dp[i-1][j-v[i-1]];
}
cout << ans + dp[n][15]*2;
}
int main() {
#if DEBUG
setIn("test.in");
#else
setIO();
#endif
int t;
t= 1;
//cin >> t;
while (t--)
solve();
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3508kb
input:
5 4 5 6 5 5
output:
23
result:
ok single line: '23'
Test #2:
score: 0
Accepted
time: 0ms
memory: 3556kb
input:
13 A 2 3 4 5 6 7 8 9 T J Q K
output:
71
result:
ok single line: '71'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
10 2 2 3 4 5 8 9 T J Q
output:
45
result:
ok single line: '45'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3868kb
input:
5 5 5 5 5 J
output:
28
result:
ok single line: '28'
Test #5:
score: 0
Accepted
time: 0ms
memory: 3632kb
input:
5 5 5 5 5 5
output:
40
result:
ok single line: '40'
Test #6:
score: 0
Accepted
time: 0ms
memory: 3568kb
input:
11 A 2 3 5 6 7 8 T J Q K
output:
41
result:
ok single line: '41'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
20 A 2 3 4 5 A 2 3 4 5 A 2 3 4 5 A 2 3 4 5
output:
20308
result:
ok single line: '20308'
Test #8:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
7 9 6 5 A 4 7 8
output:
16
result:
ok single line: '16'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3864kb
input:
11 Q K 2 2 2 3 3 3 A A 4
output:
224
result:
ok single line: '224'
Test #10:
score: -100
Wrong Answer
time: 0ms
memory: 3572kb
input:
100 A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
output:
-1316781844
result:
wrong answer 1st lines differ - expected: '506676942699987180', found: '-1316781844'