题解:P11475 [COCI 2024/2025 #3] 红蓝牌 / Karte
xiaoshumiao · · 题解
注意到数据范围很小,因此考虑暴力枚举选哪些红牌。
令
设当前选的红牌集合为
时间复杂度
#include<bits/stdc++.h>
using namespace std;
const int N=30; char s[N][N]; int w[N];
int main() {
ios::sync_with_stdio(false),cin.tie(nullptr);
int n,m,x,y,ans=0; cin>>n>>m>>x>>y;
for(int i=1;i<=n;i++) cin>>(s[i]+1);
for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) if(s[j][i]-'0') w[i]|=(1<<(j-1));
for(int i=0;i<(1<<n);i++) {
int sum=-x*__builtin_popcount(i);
for(int j=1;j<=m;j++) sum+=max(__builtin_popcount(i&w[j])-y,0);
ans=max(ans,sum);
}
cout<<ans;
return 0;
}