比赛 国庆欢乐赛2 评测结果 TTEEWWWWTTTTTTTTTTTT
题目名称 魔法卡片 最终得分 0
用户昵称 梦那边的美好WA 运行时间 28.356 s
代码语言 C++ 内存使用 5.76 MiB
提交时间 2025-10-04 11:52:45
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,q,l,r;
int x[1003][1003];
int a[1000006];
long long ans=0;
void dfs(int t){
    if(t==r+1){
        long long now=0;
        for(int i=1;i<=m;i++){
            if(a[i]){
                now+=i*i;
//                cout<<i; 
            }
        }
//        cout<<endl;
        ans=max(ans,now);
        return;
    }
    for(int i=1;i<=m;i++){
        if(x[t][i]) a[i]++;
    }
//    cout<<t<<"z:";
//    for(int i=1;i<=m;i++){
//        cout<<a[i];
//    }cout<<endl;
    dfs(t+1);
    for(int i=1;i<=m;i++){
        if(x[t][i]) a[i]--;
        else a[i]++;
    }
//    cout<<t<<"f:";
//    for(int i=1;i<=m;i++){
//        cout<<a[i];
//    }cout<<endl;
    dfs(t+1);
    for(int i=1;i<=m;i++){
        if(!x[t][i]) a[i]--;
    }
}
int main(){
    freopen("magic.in","r",stdin);
    freopen("magic.out","w",stdout);
//    cout<<__cplusplus;
    cin>>n>>m>>q;
//    cout<<q<<endl;
    for(int i=1;i<=n;i++){
        cin>>x[i][0];
        int t;
        for(int j=1;j<=x[i][0];j++){
            cin>>t;
            x[i][t]=1;
        }
    }
//    cout<<q<<endl;
    while(q--){
        cin>>l>>r;
        ans=0;
        dfs(l);
        cout<<ans<<endl;
    }
    return 0;
}