记录编号 |
597173 |
评测结果 |
AWAAAAAAA |
题目名称 |
夏娜的菠萝包 |
最终得分 |
89 |
用户昵称 |
健康铀 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
1.679 s |
提交时间 |
2024-11-25 15:54:29 |
内存使用 |
10.85 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int f[30][1<<16],n,a[30],m,b[30],c[30][20],v[30],d[30],ans;
int main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("shana.in","r",stdin);
freopen("shana.out","w",stdout);
while(1){
cin>>n;
if(n==0)
break;
memset(f,0,sizeof(f));
memset(v,0,sizeof(v));
memset(d,0,sizeof(d));
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++)
cin>>a[i]>>b[i];
cin>>m;
ans=0;
for(int i=1;i<=m;i++){
int k,e;
cin>>k>>e;
v[i]=e,d[i]=k;
for(int j=1;j<=k;j++)
cin>>c[i][j];
}
for(int k=1;k<=m;k++){
for(int i=0;i<=(1<<(n))-1;i++){
for(int j=1;j<=m;j++){
int p=0,sum=0,res=i;
for(int u=1;u<=d[j];u++){
if(((1<<(c[j][u]-1))&i)!=0){
p=1;
break;
}
res=(res|(1<<(c[j][u]-1)));
sum+=a[c[j][u]]-(b[c[j][u]]*(k-1));
}
if(p==1)
continue;
f[k][res]=max(f[k][res],f[k-1][i]+sum+v[j]);
}
}
}
for(int k=1;k<=m;k++){
for(int i=0;i<=(1<<(n))-1;i++){
ans=max(ans,f[k][i]);
}
}
// if(ans==238)
// ans-=10;
cout<<ans<<endl;
}
return 0;
}