ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#211 | #6. 「WyOJ Round 1」持 · 山海为肩 | Pigsyy | 100 | 7152ms | 240984kb | C++14 | 1.7kb | 2025-04-18 13:10:08 | 2025-04-18 18:34:14 |
answer
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
const double eps = 1e-10;
int n, m;
int pw[13];
double dp[2][531441][25];
int get(string x) {
if (x == "rock") return 0;
else if (x == "paper") return 1;
else return 2;
}
int main() {
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
cin >> n >> m;
pw[0] = 1;
for (int i = 1; i <= m; i ++)
pw[i] = pw[i - 1] * 3;
for (int i = 1; i <= n; i ++) {
string out;
double p;
cin >> p;
int mask = 0;
for (int j = 0; j < m; j ++)
cin >> out, mask += pw[j] * get(out);
dp[0][mask][m] += p;
}
for (int j = 1; j <= m; j ++)
for (int i = 0; i < pw[m]; i ++)
for (int k = 0; k <= 2 * m; k ++) {
dp[j & 1][i][k] = dp[(j - 1) & 1][i][k]; // 第 j 轮平局
int out = i / pw[j - 1] % 3;
// 第 j 轮获胜
if (k) dp[j & 1][i][k] += dp[(j - 1) & 1][i - out * pw[j - 1] + (out + 2) % 3 * pw[j - 1]][k - 1];
// 第 j 轮失败
if (k + 1 < 2 * m) dp[j & 1][i][k] += dp[(j - 1) & 1][i - out * pw[j - 1] + (out + 1) % 3 * pw[j - 1]][k + 1];
}
double res = -1;
int mask;
vector<pair<string, int>> ord;
for (int i = 0; i < pw[m]; i ++) {
string temp;
for (int j = 0; j < m; j ++)
temp += char((i / pw[j] % 3) + '0');
ord.push_back({temp, i});
}
sort(ord.begin(), ord.end());
for (auto [t, i] : ord) {
double sum = 0;
for (int j = m; j <= 2 * m; j ++)
sum += dp[m & 1][i][j];
if (sum > res + eps)
res = sum, mask = i;
}
printf("%.6lf\n", res);
for (int i = 0; i < m; i ++)
if (mask / pw[i] % 3 == 0) printf("rock ");
else if (mask / pw[i] % 3 == 1) printf("paper ");
else printf("scissors ");
printf("\n");
return 0;
}
这程序好像有点Bug,我给组数据试试?
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 2ms
memory: 5692kb
input:
841 5 0.002262 paper rock rock scissors scissors 0.000665 rock paper paper scissors paper 0.001132 s...
output:
0.689135 paper paper rock rock paper
result:
ok 6 tokens
Test #2:
score: 10
Accepted
time: 1ms
memory: 5640kb
input:
320 1 0.001734 rock 0.000432 rock 0.003306 scissors 0.000322 paper 0.000380 rock 0.000817 scissors 0...
output:
0.728099 rock
result:
ok 2 tokens
Test #3:
score: 10
Accepted
time: 1ms
memory: 5576kb
input:
19 2 0.086520 scissors rock 0.028985 rock rock 0.056406 rock scissors 0.010732 scissors rock 0.04471...
output:
0.836348 scissors rock
result:
ok 3 tokens
Test #4:
score: 10
Accepted
time: 1470ms
memory: 240984kb
input:
100000 12 0.000008 rock rock rock scissors paper scissors paper paper paper scissors paper scissors ...
output:
0.578764 rock rock paper paper paper paper scissors paper scissors rock paper rock
result:
ok 13 tokens
Test #5:
score: 10
Accepted
time: 588ms
memory: 83700kb
input:
82918 11 0.000009 paper rock rock scissors scissors paper rock paper rock rock paper 0.000000 scisso...
output:
0.582727 paper rock paper paper paper scissors rock paper scissors scissors rock
result:
ok 12 tokens
Test #6:
score: 10
Accepted
time: 242ms
memory: 31040kb
input:
63157 10 0.000004 rock scissors paper scissors paper scissors rock paper rock scissors 0.000007 rock...
output:
0.587712 rock scissors rock paper rock rock rock paper rock paper
result:
ok 11 tokens
Test #7:
score: 10
Accepted
time: 1459ms
memory: 240408kb
input:
100000 12 0.000003 rock rock rock paper paper rock paper paper paper rock rock scissors 0.000001 pap...
output:
0.578665 paper rock scissors scissors rock paper scissors rock scissors scissors rock paper
result:
ok 13 tokens
Test #8:
score: 10
Accepted
time: 522ms
memory: 83688kb
input:
72055 11 0.000006 rock scissors scissors rock scissors scissors scissors scissors rock scissors scis...
output:
0.584229 paper rock paper rock rock rock paper scissors scissors rock scissors
result:
ok 12 tokens
Test #9:
score: 10
Accepted
time: 1381ms
memory: 240916kb
input:
49463 12 0.000024 rock paper scissors paper rock scissors rock paper paper paper paper paper 0.00000...
output:
0.584658 rock paper scissors scissors paper scissors rock rock paper scissors rock paper
result:
ok 13 tokens
Test #10:
score: 10
Accepted
time: 1486ms
memory: 240180kb
input:
100000 12 0.000007 rock paper scissors paper paper scissors rock rock scissors rock scissors paper 0...
output:
0.578092 rock scissors paper scissors paper paper paper rock rock paper paper rock
result:
ok 13 tokens
Extra Test:
score: 0
Extra Test Passed