比赛 国庆欢乐赛2 评测结果 TTTTEETETTTTTTTTTTTT
题目名称 魔法卡片 最终得分 0
用户昵称 zhyn 运行时间 34.718 s
代码语言 C++ 内存使用 15.94 MiB
提交时间 2025-10-04 11:03:37
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define maxn 100005
ll n,m,ans=0;
int q;

bool vis[maxn];
vector<int>e[maxn];
vector<int>f[maxn];

void solv(int l,int r,int s){
    bool t[maxn];
    if(s>r){
        ll sum=0;
        for(int i=1;i<=m;i++){
            if(vis[i]){
                sum+=i*i;
            }
        }
        ans=max(ans,sum);
        return;
    }
    for(int i=1;i<=m;i++){
        t[i]=vis[i];
    }
    for(int i=0;i<e[s].size();i++){
        vis[e[s][i]]=true;
    }
    solv(l,r,s+1);
    
    for(int i=1;i<=m;i++){
        vis[i]=t[i];
    }
    for(int i=0;i<f[s].size();i++){
        vis[f[s][i]]=true;
    }
    solv(l,r,s+1);
    for(int i=1;i<=m;i++){
        vis[i]=t[i];
    }
} 

int main(){
    
    freopen("magic.in","r",stdin);
    freopen("magic.out","w",stdout);
    
    
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    cin>>n>>m>>q;
    
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            vis[j]=true;
        }
        int x,u;
        cin>>x;
        for(int j=1;j<=x;j++){
            cin>>u;
            vis[u]=false;
            e[i].push_back(u);
        }
        for(int j=1;j<=m;j++){
            if(vis[j]){
                f[i].push_back(j);
            }
        }
    }
    
    
    while(q--){
        int l,r;
        for(int i=1;i<=m;i++){
            vis[i]=false;
        }
        ans=0;
        cin>>l>>r;
        solv(l,r,l);
        cout<<ans<<"\n";
    }
    
    
    
    return 0;
}