AcWing 1875. 贝茜的报复------------------------------------DFS枚举每个字母选的是奇数还是偶数
原题链接
简单
作者:
古德古德
,
2022-03-31 20:51:22
,
所有人可见
,
阅读 145
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int ans;
map<char,int> mj,mo,a;
string s = "BIGOESM";
void dfs(int u,int fas)
{
if(u == 7)
{
if((a['B'] + a['E']+a['S'] + a['S']+ a['I']+a['E']) % 2 == 1
&& (a['G']+a['O']+a['E'] +a['S'])%2 == 1
&& (a['M']+a['O']+a['O'])%2 == 1) return;
ans += fas;
return;
}
//第u个字母选择奇数
//第u个字母选择偶数
char c = s[u];
a[c] = 1 ;dfs(u+1,fas* mj[c]);
a[c] = 0 ;dfs(u+1,fas * mo[c]);
}
int main()
{
int n; cin >> n;
for(int i = 0; i < n ; i++)
{
char c; int x; cin >> c >> x;
if(x % 2 == 0) mo[c]++;
else mj[c]++;
}
dfs(0,1);
cout << ans;
return 0;
}