点我》》
题目链接
稳定串
Time Limit:
1000ms
Memory Limit:
65536KB
64-bit integer IO format:
%lld Java class name:
Main
Type:
None 图论 2-SAT 割点/桥/双连通分量 环/拓扑排序/强连通分量 最短路 Bellman Ford Dijkstra/Floyd Warshall 欧拉回路/路径 差分约束 最小生成树 稳定婚姻问题 树 最小树形图 网络流/匹配 一般图匹配 二分匹配 Hopcroft–Karp算法 Weighted Bipartite Matching/匈牙利算法 网络流 最大流/最小割 最小费用最大流 搜索 基础递归 BFS/DFS 回溯剪枝/分支限界 IDA* Search Parsing/Grammar Advanced Search Techniques 二分查找/二分 三分查找 几何 基础几何 计算几何 凸包 Pick定理 旋转卡壳 半平面交 博弈 Green Hackenbush/Colon Principle/Fusion Principle Nim SG函数 矩阵 高斯消元 矩阵快速幂 数据结构 基础数据结构 树状数组 二叉搜索树 Hashing Orthogonal Range Search RMQ/LCA 线段树 字典树 排序 并查集 字符串 KMP AC自动机 后缀数组/后缀树 Manacher 数学 基础数学 大整数运算 数论 中国剩余定理 扩展欧几里德算法 容斥原理 模运算 排列组合 Group Theory/Burnside's lemma Counting 概率/期望 欧拉函数 乘法逆元 莫比乌斯反演 快速傅里叶变换 调和级数 快速幂 动态规划 基础DP 背包问题 区间DP 概率DP 状压DP 数位DP 树形DP 插头DP 斜率优化 Others Tricky Hardest Unusual Brute Force Implementation Constructive Algorithms Two Pointer Bitmask Beginner Discrete Logarithm/Shank's Baby-step Giant-step Algorithm 贪心 分治法 Tag it!
一个字符串被称为稳定串当且仅当它包含的字母出现的次数全是偶数次。现在小王遇到一个难题,他手中有一个字符长度不大于10W的字符串,你能帮助他判断是否为稳定串吗?
Input
首先输入一个t,代表t组数据,每组数据输入一个字符串s(1≤strlen(s)≤105,仅包含小写字母和大写字母),之后再输入一个m,代表着m次询问,每次询问输入两个数l,r,代表以l位置开头r位置结尾的字符串。(1≤m≤105,1≤l≤r≤105)。
Output
对于每次询问,如果该串是稳定串,输出"Yes",否则输出"No"。
Sample Input
2 aaaabbbb 2 1 8 1 7 aaAA 2 1 4 2 3
Sample Output
Yes No Yes No
Source
Author
skymiange
不错哟~
卡掉了前缀和;
然后各种方法?
QAQ:
比如子树的字母能不能凑成一个回文,树上的链能不能打乱凑一个回文。
这里就是利用二进制的异或和奇偶对应起来搞;
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+10;
map<int,LL>mp;
LL f[55];
char str[N];
LL vis[N];
int sum[N];
void init()
{
f[0]=1;
for(LL i=1;i<=52;i++)
f[i]=f[i-1]*2;
int num=0;
for(int i='a';i<='z';i++)
mp[i]=f[num++];
for(int i='A';i<='Z';i++)
mp[i]=f[num++];
}
int main()
{
init();
int T,len;
scanf("%d",&T);
while(T--)
{
scanf("%s",str+1);
len=strlen(str+1);
LL temp=0;
vis[0]=0;
for(int i=1;i<=len;i++)
{
temp=temp^mp[str[i]];
vis[i]=temp;
}
int Q,u,v;
scanf("%d",&Q);
while(Q--)
{
scanf("%d%d",&u,&v);
if(u>v)
swap(u,v);
if(vis[v]==vis[u-1])
puts("Yes");
else
puts("No");
}
}
return 0;
}