AcWing 1875. 贝茜的报复 枚举+dfs

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 1875. 贝茜的报复 枚举+dfs相关的知识,希望对你有一定的参考价值。

AcWing 1875. 贝茜的报复
打卡

这题的dfs太妙了。

#include<bits/stdc++.h>
using namespace std;
#define fir(i,a,n) for(int i=a;i<=n;i++)
typedef long long ll;
const int N=1e5+10;
map<char,int>ji,ou,mp;
//存某个字母变量的奇偶个数
//mp存枚举的是奇数还是偶数 1代表奇数 2代表偶数 
int n;
string str="BESIGOM";
int ans;
//B+I G+O+E+S M
void dfs(int u,int sum)

	if(u==7)
	
		if((mp['B']+mp['I'])%2&&(mp['G']+mp['O']+mp['E']+mp['S'])%2&&mp['M']%2) return;
		ans+=sum;
		return;
	
	
	char ch=str[u];
	mp[ch]=1;dfs(u+1,sum*ji[ch]);//选这个字母的奇数 
	mp[ch]=2;dfs(u+1,sum*ou[ch]);//偶数 

int main()

	cin>>n;
	while(n--)
	
		char ch;int t;cin>>ch>>t;
		if(abs(t)%2) ji[ch]++;
		else ou[ch]++;
	
	
	dfs(0,1);
	cout<<ans; 
	return 0;

以上是关于AcWing 1875. 贝茜的报复 枚举+dfs的主要内容,如果未能解决你的问题,请参考以下文章

ACwing92 递归实现指数型枚举 dfs

USACO 2004 DEC网络破坏Tree Cutting(DFS)

AcWing 递归实现组合型枚举 dfs

AcWing 带分数 dfs

Acwing 题解 [acwing-2041-干草堆] (Cpp)

AcWing 1934. 贝茜放慢脚步(二路归并)