记录编号 606985 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 4084.魔法卡片 最终得分 100
用户昵称 Gravatar健康铀 是否通过 通过
代码语言 C++ 运行时间 6.080 s
提交时间 2025-10-04 20:28:53 内存使用 99.32 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define il inline
#define LL long long
#define _(d) while(d(isdigit(ch=getchar())))
using namespace std;
const int N=2e6+5;
int x,y,z,b[N],K;
LL s,tmp[N];
vector<int> c[N];
vector<LL> res[N];
il int in(){
    int a,f=1;char ch;
    _(!)ch=='-'?f=-1:f;a=ch^48;
    _()a=(a<<1)+(a<<3)+(ch^48);
    return f*a;
}
int main(){
    freopen("magic.in","r",stdin);
    freopen("magic.out","w",stdout);
    
    x=in();y=in();z=in();K=0;
    while((1<<K)<=y)K++;K++;
    for(int i=1;i<=y;i++)s+=1ll*i*i;
    for(int i=1;i<=x;i++){
        c[i].resize(y+2);
        int t=in();
        for(int j=1;j<=t;j++)c[i][in()]=1;
    }
    
    for(int l=1;l<=x;l++){
        res[l].resize(K+1);
        for(int i=1;i<=y;i++)b[i]=0;
        for(int r=l;r<=min(x,l+K-1);r++){
            int len=r-l+1;
            for(int i=1;i<=y;i++)b[i]=(b[i]<<1)|c[r][i],tmp[b[i]]+=1ll*i*i;
            LL mn=s;
            for(int i=0;i<(1<<len);i++)mn=min(mn,tmp[i]),tmp[i]=0;
            res[l][len-1]=s-mn;
        }
    }
    while(z--){
        int l=in(),r=in();
        int len=r-l+1;
        if(len>=K)printf("%lld\n",s);
        else printf("%lld\n",res[l][len-1]);
    }
    return 0;
}