ACon #1 #9 #11 #12 其他全WA```cpp #include<bits/stdc++.h> using namespace std; #define ll long long
ll dp[101][(1<<11)]; ll sum[(1<<11)]; ll n,m,size,res; ll s[101];
int main(){ cin>>m>>n; size=(1<<n);
for(int i=1;i<=m;i++){
string str;
cin>>str;
for(int j=0;j<n;j++)
if(str[j]=='H')
s[i]+=(1<<j);
}
for(int i=0;i<size;i++)
for(int j=i;j>0;j>>=1)
if(j&1){
sum[i]++;
if(((j>>1)&1)||((j>>2)&1)){
sum[i]=-1;
break;
}
}
for(int i=1;i<=m;i++)
for(int j=0;j<size;j++){
if(sum[j]==-1) continue;
if(j&s[i]) continue;
if(i>=2) for(int k=0;k<size;k++){
if(sum[k]==-1) continue;
if(k&s[i-1]) continue;
if(k&j) continue;
if(i>=3) for(int h=0;h<size;h++){
if(sum[h]==-1) continue;
if(h&s[i-2]) continue;
if(h&j) continue;
if(h&k) continue;
dp[i][j]=max(dp[i][j],dp[i-2][h]+sum[k]+sum[j]);
}
else dp[i][j]=max(dp[i][j],dp[i-1][k]+sum[j]);
}
else dp[i][j]=sum[j];
}
for(int i=0;i<size;i++)
res=max(res,dp[m][i]);
cout<<res;
return 0;
}