Logo Wy Online Judge

WyOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#352#6. 「WyOJ Round 1」持 · 山海为肩jxy20121008627ms243412kbC++231.9kb2025-04-22 08:42:242025-04-22 08:42:26

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 1e9 + 7;
const int N = 600005;
const int INF = 0x3f3f3f3f;
int pw[13];
double f[2][N][25];
int get(string x) {
    if (x == "rock") return 0;
    if (x == "paper") return 1;
    return 2;
}
int main() {
    int n, m;
    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++) {
        double p;
        cin >> p;
        int k = 0;
        for (int j = 0; j < m; j++) {
            string s;
            cin >> s;
            k += pw[j] * get(s);
        }
        f[0][k][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++) {
                f[j & 1][i][k] = f[(j - 1) & 1][i][k];
                int t = i / pw[j - 1] % 3;
                if (k) f[j & 1][i][k] += f[(j - 1) & 1][i - t * pw[j - 1] + (t + 2) % 3 * pw[j - 1]][k - 1];
                if (k + 1 < 2 * m) f[j & 1][i][k] += f[(j - 1) & 1][i - t * pw[j - 1] + (t + 1) % 3 * pw[j - 1]][k + 1];
            }
        }
    }
    double res = -1;
    int k;
    vector<pair<string, int>> vec;
    for (int i = 0; i < pw[m]; i++) {
        string s;
        for (int j = 0; j < m; j++) {
            s += (i / pw[j] % 3) + '0';
        }
        vec.push_back({s, i});
    }
    sort(vec.begin(), vec.end());
    for (auto [t, i] : vec) {
        double sum = 0;
        for (int j = m; j <= 2 * m; j++) sum += f[m & 1][i][j];
        if (sum > res + 1e-9) {
            res = sum;
            k = i;
        }
    }
    printf("%.6lf\n", res);
    for (int i = 0; i < m; i++) {
        if (k / pw[i] % 3 == 0) {
            printf("rock ");
        } else if (k / pw[i] % 3 == 1) {
            printf("paper ");
        } else {
            printf("scissors ");
        }
    }
    printf("\n");
    return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 9ms
memory: 5676kb

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: 3ms
memory: 5748kb

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: 0ms
memory: 5740kb

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: 1742ms
memory: 242904kb

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: 794ms
memory: 83388kb

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: 436ms
memory: 28880kb

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: 1748ms
memory: 242804kb

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: 733ms
memory: 83572kb

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: 1427ms
memory: 243292kb

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: 1735ms
memory: 243412kb

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