记录编号 |
45196 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[顾研NOIP] 项链 |
最终得分 |
100 |
用户昵称 |
Makazeu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.134 s |
提交时间 |
2012-10-22 20:12:18 |
内存使用 |
3.15 MiB |
显示代码纯文本
#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;
}