ID | 提交记录ID | 题目 | Hacker | Owner | 结果 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|
#49 | #201 | #6. 「WyOJ Round 1」持 · 山海为肩 | __vector__ | __vector__ | Success! | 2025-04-18 18:33:43 | 2025-04-18 18:33:43 |
详细
Extra Test:
Wrong Answer
time: 4ms
memory: 5792kb
input:
10 5 0.097 paper rock rock rock scissors 0.139 rock paper paper rock paper 0.021 scissors paper pape...
output:
1.000000 scissors paper paper paper paper
result:
wrong answer 2nd words differ - expected: 'paper', found: 'scissors'
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#201 | #6. 「WyOJ Round 1」持 · 山海为肩 | __vector__ | 97 | 4964ms | 211284kb | C++23 | 1.5kb | 2025-04-18 08:10:22 | 2025-04-18 18:33:55 |
answer
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
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;
for (int i = 0; i < pw[m]; i ++) {
double sum = 0;
for (int j = m; j <= 2 * m; j ++)
sum += dp[m & 1][i][j];
if (sum > res)
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;
}