比赛 顾研NOIP2011模拟赛 评测结果 AAAAAAAAAA
题目名称 项链 最终得分 100
用户昵称 Makazeu 运行时间 0.144 s
代码语言 C++ 内存使用 3.15 MiB
提交时间 2012-10-17 19:12:07
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;
const int MAXN=30;
int bnum[MAXN]={0},N;
int binary[MAXN]={0};
string str; int len,ans=0;
int sta=0,unum=0;
inline void init()
{
	binary[1]=1;
	for(int i=2;i<=26;i++) 
		binary[i]=binary[i-1]*2;
	int now; scanf("%d\n",&N);
	for(int i=1;i<=N;i++)
	{
		cin>>str; now=0;
		len=str.length();
		for(int j=0;j<len;j++)
			now+=binary[str[j]-'A'+1];
		bnum[i]=now;
	}
}
void dfs(int pos)
{
	if(pos==N+1) return;
	dfs(pos+1); int nsta=sta;
	sta=sta^bnum[pos]; unum++;
	if(sta==0 && unum>ans) ans=unum;
	dfs(pos+1); sta=nsta; unum--;
}
int main()
{
	freopen("necklaced.in","r",stdin);
	freopen("necklaced.out","w",stdout);
	init(); dfs(1);
	printf("%d\n",ans);
	return 0;
}