EZOJ #387字符串
2024-10-07 10:48:02
分析
似乎ttl的模拟赛t3总是折半搜索?
先把所有串转化为每个字母的0/1状态
之后我们将所有字符串分为两半
分别枚举状态
我们发现只有左右两边的字母状态相等才能保证这个集合合法
所以我们在搜左半边的时候每次加入一个pair
表示异或值为x用了y个数
搜完后先将它排序
然后搜右边的时候每次lower_bound一下即可
似乎ttl的数据比较强我的代码常数又很大,所以要开O2才能过/kk
代码
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pi pair<int,int>
#define int long long
pi a[(<<)+];
int ans,wh[],n,m,sum[],cnt1,mx;
char s[];
inline void dfs1(int p,int lim,int now,int tot){
if(p>lim){
a[++cnt1]=mp(now,tot);
return;
}
dfs1(p+,lim,now^wh[p],tot+);
dfs1(p+,lim,now,tot);
return;
}
inline void dfs2(int p,int lim,int now,int tot){
if(p>lim){
pi *le=lower_bound(a+,a+cnt1+,mp(now,-1ll));
pi *ri=lower_bound(a+,a+cnt1+,mp(now+,-1ll));
ans+=(ri-le);
ri--;
if((ri->fi)==now)mx=max(mx,(ri->se)+tot);
return;
}
dfs2(p+,lim,now^wh[p],tot+);
dfs2(p+,lim,now,tot);
return;
}
signed main(){
int i,j,k;
scanf("%lld",&n);
for(i=;i<=n;i++){
memset(sum,,sizeof(sum));
scanf("%s",s);
m=strlen(s);
for(j=;j<m;j++)sum[s[j]-'a']^=;
for(j=;j<;j++)
wh[i]|=((<<j)*sum[j]);
}
dfs1(,n/,,);
sort(a+,a+cnt1+);
dfs2(n/+,n,,);
printf("%lld %lld\n",ans-1ll,mx);
return ;
}
最新文章
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
- 处理ios webview 更新缓存本地css、js后webview缓存无法更新的问题
- Linux简介及常用命令使用1--linux环境搭建
- ubuntu手贱改了sudoers权限之后的恢复
- Log4net使用笔记
- (转)反射发送实战(-)InvokeMember
- java.lang.OutOfMemoryError: GC overhead limit exceeded 问题分析和解决(转)
- android上下文
- 创建ListView控件
- Android studio 安装的安装一些问题
- 在jQuery中使用canvas时遇到的问题
- Hibernate HQL ②
- centos7下安装docker(17.3docker监控---cAdvisor)
- 第25月第26天 dispatch_group_t dispatch_semaphore_t
- 用法:node模块都具备的方法(exports、module、require、__filename、__dirname)
- Oracle ____Undo
- Makefile 中 ifeq ifneq 等用法
- 关于ARMv8指令的几个问题
- C# 时间比较方法DateTime.Compare
- SpringBoot之mongoTemplate的使用
热门文章
- Java WebService 参考文档
- vscode怎么修改颜色主题里的某种颜色
- java_第一年_JavaWeb(15)
- HDU-3665 Seaside
- (三:NIO系列) Java NIO Channel
- 给定两个list A ,B,请用找出 A ,B中相同的元素,A ,B中不同的元素 ??
- 洛谷 - P4008 - 文本编辑器 - 无旋Treap
- [ASP.NET Core 3框架揭秘] 依赖注入:依赖注入模式
- Log4Net 之走进Log4Net (四)
- C# 委托和事件 实现窗体间的通信