比赛 |
国庆欢乐赛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;
}