1 条题解

  • 0
    @ 2025-8-24 21:45:31

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Expecto
    **

    搬运于2025-08-24 21:45:31,当前版本为作者最后更新于2016-09-11 11:36:38,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    啊这道题首先读入的时候膜一下,记录每个数出现的次数,然后7^7暴力枚举下,方案数乘起来。

    [/color][codec ]#include<bits/stdc++.h>
    using namespace std;
    int g[10][10];
    int x[10];long long ans=0;
    int v[233][8]={0};
    void dfs(int now){
        if (now==7){
            long long sum=1ll*(x[0]+x[1]+x[2]+x[2]+x[3]+x[1])*(x[4]+x[5]+x[1]+x[2])*(x[6]+x[5]*2);
            if (sum%7==0){
                long long tmp=1;
                for (int i=0;i<7;i++)
                    tmp*=g[i][x[i]];
                ans+=tmp;
            }
            return ;
        }
        for (int i=0;i<7;i++){
            if (!g[now][i]) continue;
            x[now]=i;
            dfs(now+1);
        }
    }
    int main(){
        int n;
        cin>>n;
        for (int i=1;i<=n;i++){
            char c;int l;
            cin>>c>>l;
            l=(l%7+7)%7;
            if (c=='B') g[0][l]++;
            if (c=='E') g[1][l]++;
            if (c=='S') g[2][l]++;
            if (c=='I') g[3][l]++;
            if (c=='G') g[4][l]++;
            if (c=='O') g[5][l]++;
            if (c=='M') g[6][l]++;        
        }
        dfs(0);
        cout<<ans;
        return 0;
    }[/codec ]
    
    • 1

    信息

    ID
    2187
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者