【莫队】bzoj4866: [Ynoi2017]由乃的商场之旅
莫队的一些套路
Description
Input
Output
Sample Input
zzqzzq
1 6
2 4
3 4
2 3
4 5
1 1
Sample Output
4
2
2
3
1
题目分析
应该是一类常见套路:考虑每加入一个元素对于已知区间的贡献。
那么这里把每个字母看成$2^i$,先预处理出每一个位置的异或前缀和,莫队查询时答案增上全为偶次的字符+枚举为奇数的字母的贡献即可。
注意莫队中加入与删除操作的顺序,这个有些时候是会相互影响的。
然后用unsigned short int卡空间,就好了。
#include<bits/stdc++.h>
#define S(p) cnt[tmp^(1<<p)]
#define Add(val) tmp=c[val],nw+=cnt[tmp],nw+=S(0)+S(1)+S(2)+S(3)+S(4)+S(5)+S(6)+S(7)+S(8)+S(9)+S(10)+S(11)+S(12)+S(13)+S(14)+S(15)+S(16)+S(17)+S(18)+S(19)+S(20)+S(21)+S(22)+S(23)+S(24)+S(25),++cnt[tmp]
#define Del(val) tmp=c[val],--cnt[tmp],nw-=cnt[tmp],nw-=S(0)+S(1)+S(2)+S(3)+S(4)+S(5)+S(6)+S(7)+S(8)+S(9)+S(10)+S(11)+S(12)+S(13)+S(14)+S(15)+S(16)+S(17)+S(18)+S(19)+S(20)+S(21)+S(22)+S(23)+S(24)+S(25)
const int maxn = ;
const int maxp = ; int blk[maxn],size;
struct QRs
{
int l,r,id;
bool operator < (QRs a) const
{
return blk[l]==blk[a.l]?(blk[l]&?r < a.r:r > a.r):blk[l] < blk[a.l];
}
}q[maxn];
int n,m,c[maxn],ans[maxn],L,R,nw,tmp;
unsigned short cnt[maxp];
char s[maxn]; int read()
{
char ch = getchar();
int num = , fl = ;
for (; !isdigit(ch); ch=getchar())
if (ch=='-') fl = -;
for (; isdigit(ch); ch=getchar())
num = (num<<)+(num<<)+ch-;
return num*fl;
}
int main()
{
n = read(), m = read(), scanf("%s",s+);
size = std::min(*(int)sqrt(n+0.5), n)+;
for (int i=; i<=n; i++) blk[i] = i/size, c[i] = c[i-]^(<<(s[i]-'a'));
for (int i=; i<=m; i++) q[i].l = read()-, q[i].r = read(), q[i].id = i;
std::sort(q+, q+m+);
L = , R = ;
for (int i=; i<=m; i++)
{
while (L > q[i].l) --L, Add(L);
while (R < q[i].r) ++R, Add(R);
while (L < q[i].l) Del(L), ++L;
while (R > q[i].r) Del(R), --R;
ans[q[i].id] = nw;
}
for (int i=; i<=m; i++) printf("%d\n",ans[i]);
return ;
}
END
【莫队】bzoj4866: [Ynoi2017]由乃的商场之旅的更多相关文章
- BZOJ4866 Ynoi2017由乃的商场之旅(莫队)
显然能重排为回文串相当于出现次数为奇数的字母不超过一个.考虑莫队,问题在于如何统计添加/删除一位的贡献.将各字母出现次数奇偶性看做二进制数,做一个前缀和一个后缀和.在右端添加一位时,更新区间的前缀.后 ...
- [bzoj4866] [Ynoi2017]由乃的商场之旅
来自FallDream的博客,未经允许,请勿转载,谢谢, 由乃有一天去参加一个商场举办的游戏.商场派了一些球王排成一行.每个人面前有几堆球.说来也巧,由乃和你一样,觉得这游戏很无聊,于是决定换一个商场 ...
- 【BZOJ4866】[YNOI2017] 由乃的商场之旅(莫队)
点此看题面 大致题意: 给你一个字符串,每次给你一段区间,问这段区间内有多少个字符串在重新排列后可以变成一个回文串. 关于莫队 详见这篇博客:莫队算法学习笔记(一)--普通莫队. 关于回文 要使一个字 ...
- bzoj 4866: [Ynoi2017]由乃的商场之旅
设第i个字母的权值为1<<i,则一个可重集合可以重排为回文串,当且仅当这个集合的异或和x满足x==x&-x,用莫队维护区间内有多少对异或前缀和,异或后满足x==x&-x,这 ...
- bzoj4810 [Ynoi2017]由乃的玉米田 bitset优化+暴力+莫队
[Ynoi2017]由乃的玉米田 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 917 Solved: 447[Submit][Status][Di ...
- 【BZOJ4810】[Ynoi2017]由乃的玉米田 bitset+莫队
[BZOJ4810][Ynoi2017]由乃的玉米田 Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.由乃认为玉米田不美,所 ...
- BZOJ4810 Ynoi2017由乃的玉米田(莫队+bitset)
多组询问不强制在线,那么考虑莫队.bitset维护当前区间出现了哪些数,数组记录每个数的出现次数以维护bitset.对于乘法,显然应有一个根号范围内的因子,暴力枚举即可.对于减法,a[i]-a[j]= ...
- BZOJ 4810 [Ynoi2017]由乃的玉米田(莫队+bitset)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4810 [题目大意] 给出一个数列,有三种区间查询, 分别查询区间是否存在两个数乘积为x ...
- 【BZOJ4810】[YNOI2017] 由乃的玉米田(莫队+bitset)
点此看题面 大致题意: 给你一段序列,每次询问一段区间内是否存在两个数的差或和或积为\(x\). 莫队算法 看到区间询问+可以离线,首先想到了莫队啊. 但是,在较短的时间内更新信息依然比较难以实现. ...
随机推荐
- 我的省选 Day -15
Day -15 23:22:45 还有十几天就要去参加省选啦~,今天开始写日记记录一下,所以今天是第负十五天. 今天是阶段考的第二天(由于奥赛不用考试的我7:30才慢悠悠地到机房 早上学习动态DP, ...
- linux查找工具(find,locate,whrers)
find whereis locate 一.whereis whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数, ...
- JS高级学习历程-7
[面向(基于)对象] 1 创建对象 在php里边,需要先找到一个类别,在通过类创建具体对象 在javascript里边,可以直接创建具体对象,后期可以再给对象丰富许多属性或方法. 1. 字面量方式创建 ...
- Django配置文件解释
"""Django settings for first project. Generated by 'django-admin startproject' using ...
- Codeforces 190C(模拟)
坑点 不记它难解我心头之恨-- WA1:不要读错题Orz,顺序是按它给定的.那就是个类似栈的东西,重点在于输出. 然而我输出很快就模拟对了-- WA2:数据:1 int.我日了不看数据我真的去de模拟 ...
- 引擎基本服务接口API介绍
Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍 https://www.cnblogs.com/slickflow/p/4807227.html 工作流术语 ...
- 项目协作管理平台-teambition和tapd--深度体验
一.分析目的 通过分析2B产品中的团队协作管理软件的对比分析,用于为公司团队协作软件的选型做产考. 二.竞品归属市场概况 2.1.目标用户群及需求 主要面向企业用户,用于解决企业不同地域以及不同职 ...
- 使用centos7的wall防火墙可能存在失效问题
centos7有自己新的防火墙,但是仍然带有centos6.5的iptable防火墙,当新防火墙不稳定,失效时,可以采用老防火墙 以上都是在vm虚拟机上发现的问题 参考文章 https://www.c ...
- IIS访问网站出错[要求输入用户名密码]的解决方案
症状: 1.HTTP 500 - 内部服务器错误 2.您不具备使用所提供的凭据查看该目录或页的权限 3.基于所提供的凭据,您没有权限查看此目录或网页.HTTP 错误 401.3 - 访问被资源 ACL ...
- Redis集群批量操作
Redis在3.0版正式引入了集群这个特性,扩展变得非常简单.然而当你开心的升级到3.0后,却发现有些很好用的功能现在工作不了了, 比如我们今天要聊的pipeline功能等批量操作. Redis集群是 ...