关于我的CSP-S2023 T1是如何挂分的

47次阅读
一条评论

今天心血来潮调了一下60分的CSP-ST1,我发现统计的时候有一组情况第二位的下标打成了3(第30行),居然还有60分。然后还有几个点RE,于是把数组的10改成了11,轻松秒杀()()((考试的时候确实烧糊涂了)

原代码

int mp[10][10];
int mp2[10][10][10][10][10];
bool vis[10][10][10][10][10];
int n;
int main()
{
    //freopen("lock.in", "r", stdin);
    //freopen("lock.out", "w", stdout);
    scanf("%d", &n);
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= 5; j++) {
            scanf("%d", &mp[i][j]);
        }
    }
    if(n == 1) {
        printf("81\n");
        exit(0);
    }
    else {
        memset(mp2, 0, sizeof(mp2));

        for(int i = 1; i <= n; i++) {
            memset(vis, 0, sizeof(vis));
            for(int j = 1; j <= 9; j++) {

                mp2[(mp[i][1] + j) % 10][(mp[i][2]) + j % 10][mp[i][3]][mp[i][4]][mp[i][5]] += pow(3, i);
                mp2[mp[i][1]][(mp[i][2] + j) % 10][(mp[i][3] + j) % 10][mp[i][4]][mp[i][5]] += pow(3, i);
                mp2[mp[i][1]][mp[i][2]][(mp[i][3] + j) % 10][(mp[i][4] + j) % 10][mp[i][5]] += pow(3, i);
                mp2[mp[i][1]][mp[i][2]][mp[i][3]][(mp[i][4] + j) % 10][(mp[i][5] + j) % 10] += pow(3, i);
                mp2[(mp[i][1] + j) % 10][mp[i][3]][mp[i][3]][mp[i][4]][mp[i][5]] += pow(3, i);//问题在这行
                mp2[mp[i][1]][(mp[i][2] + j) % 10][mp[i][3]][mp[i][4]][mp[i][5]] += pow(3, i);
                mp2[mp[i][1]][mp[i][2]][(mp[i][3] + j) % 10][mp[i][4]][mp[i][5]] += pow(3, i);
                mp2[mp[i][1]][mp[i][2]][mp[i][3]][(mp[i][4] + j) % 10][mp[i][5]] += pow(3, i);
                mp2[mp[i][1]][mp[i][2]][mp[i][3]][mp[i][4]][(mp[i][5] + j) % 10] += pow(3, i);
            }
        }
        int ans = 0;
        int cmpr = 0;
        for(int i = 1; i <= n; i++) {
            cmpr += pow(3, i);
        }
        for(int i = 0; i <= 9; i++) {
            for(int j = 0; j <= 9; j++) {
                for(int k = 0; k <= 9; k++) {
                    for(int x = 0; x <= 9; x++) {
                        for(int y = 0; y <= 9; y++) {
                            if(mp2[i][j][k][x][y] == cmpr) {
                                ans++;
                                // printf("%d%d%d%d%d\n", i, j, k, x, y);
                            }
                        }
                    }
                }
            }
        }
        printf("%d\n", ans);
    }
正文完
 0
THEzsc
版权声明:本站原创文章,由 THEzsc 于2023-11-02发表,共计1403字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
zsc
2023-11-10 11:42:20 回复

聪明

 Windows  Opera  美国加利福尼亚旧金山