C. K-Complete Word(小小的并查集啦~)
\(\color{Pink}{-------------分割-------------}\)
\(n最大有2e5,那么暴力一定不行,找规律\)
\(我们发现第i位的字符一定和第i+k位相等(周期)\)
\(第i位的字符一定和第n-i+1位字符相等(回文)\)
\(那么每次把i,i+k,n-i+1合并到一个集合(并查集)\)
\(最后一定是分成了若干个集合,集合中的元素要相等\)
\(那我们再统计每个集合的元素个数和集合里出现字符最多的字母\)
\(于是我们规定这个集合都变成出现次数最多的那个字母,就好啦\)~~~
\(最后是233ms,还不算太慢吧......\)
#include <bits/stdc++.h>
using namespace std;
const int maxn=2e5+9;
int pre[maxn],n,k,t,vis[maxn][26];
char s[maxn];
int find(int x){
return x==pre[x]?pre[x]:pre[x]=find(pre[x]);
}
void join(int q,int w){
pre[find(q)]=find(w);
}
inline int max(int a,int b){return a>b?a:b;}
int main()
{
cin>>t;
while(t--)
{
int ans=0;
cin>>n>>k>>(s+1);
for(int i=0;i<=n;i++) pre[i]=i;
for(int i=1;i<=n/2;i++)
{
if(i+k<=n) join(i,i+k);
join(i,n-i+1);
}
for(int i=1;i<=n;i++)
{
int num=s[i]-'a';
vis[find(i)][num]++;
}
for(int i=1;i<=n;i++)
{
if(pre[i]!=i) continue;
int he=0,maxx=0;
for(int j=0;j<=25;j++)
{
he+=vis[i][j];
maxx=max(maxx,vis[i][j]);
vis[i][j]=0;//清空为下次做准备
}
ans+=(he-maxx);
}
cout<<ans<<endl;
}
}
C. K-Complete Word(小小的并查集啦~)的更多相关文章
- 51 nod 1456 小K的技术(强连通 + 并查集)
1456 小K的技术 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 苏塞克王国是世界上创新技术的领先国家,在王国中有n个城市 ...
- K:Union-Find(并查集)算法
相关介绍: 并查集的相关算法,是我见过的,最为之有趣的算法之一.并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.其相关的实现代码较为简短,实现思想也 ...
- 第46届ICPC澳门站 K - Link-Cut Tree // 贪心 + 并查集 + DFS
原题链接:K-Link-Cut Tree_第46屆ICPC 東亞洲區域賽(澳門)(正式賽) (nowcoder.com) 题意: 要求一个边权值总和最小的环,并从小到大输出边权值(2的次幂):若不存在 ...
- poj2492(种类并查集/各种解法)
题目链接: http://poj.org/problem?id=2492 题意: 有t组测试数据, 对于每组数据,第一行n, m分别表示昆虫的数目和接下来m行x, y, x, y表示教授判断x, y为 ...
- Educational Codeforces Round 7 C. Not Equal on a Segment 并查集
C. Not Equal on a Segment 题目连接: http://www.codeforces.com/contest/622/problem/C Description You are ...
- 种类并查集——带权并查集——POJ1182;HDU3038
POJ1182 HDU3038 这两个题比较像(一类题目),属于带权(种类)并查集 poj1182描绘得三种动物种类的关系,按照他一开始给你的关系,优化你的种类关系网络,最后看看再优化的过程中有几处矛 ...
- 【bzoj5133】[CodePlus2017年12月]白金元首与独舞 并查集+矩阵树定理
题目描述 给定一个 $n\times m$ 的方格图,每个格子有 ↑.↓.←.→,表示从该格子能够走到相邻的哪个格子.有一些格子是空着的,需要填上四者之一,需要满足:最终的方格图中,从任意一个位置出发 ...
- HDU 5923 Prediction(2016 CCPC东北地区大学生程序设计竞赛 Problem B,并查集)
题目链接 2016 CCPC东北地区大学生程序设计竞赛 B题 题意 给定一个无向图和一棵树,树上的每个结点对应无向图中的一条边,现在给出$q$个询问, 每次选定树中的一个点集,然后真正被选上的是这 ...
- [USACO18JAN] MooTube (离线并查集)
题目大意:给你一棵边权树,定义两点间距离为它们唯一路径上的最小路权,求与某点距离不大于K(k为已知)的点的数量 带权并查集维护集合内元素总数 路和问题 都按权值大到小排序,枚举问题, 建权值不小于K的 ...
随机推荐
- 钩子函数 Function类
Function 为 com.google.common.base包下接口类: public interface Function<F, T> { @Nullable T apply(@N ...
- 一个spring 基本知识的微博(怎么加载多个xml、多个property文件、aop配置、监视器)
http://blog.sina.com.cn/s/blog_61c5866d0100ev44.html
- JDK安装详细步骤
JDK的下载与安装 在java实际编程的道路上,迈出的第一步必定是JDK的安装,因为JDK是一切java的基础,这里给出在Windows10 x64版本下的JDK1.8的详细安装步骤,其他的Windo ...
- 概率专题_概率/ 数学_基础题_ABEI
上周三讲了概率和概率dp.如果没有涉及其他综合算法,概率这种题主要是思维,先把这部分的东西写完 给个题目链接:https://vjudge.net/contest/365300#problem Hea ...
- Docker-Bridge Network 03 自定义网络
本节介绍自定义bridge network的自定义网络. 1.前言2.创建自定义网络2.1 创建网络2.2 指定网段创建网络3.创建容器3.1 指定网络创建容器3.2 指定IP创建容器4.通信4.1 ...
- B - How Many Equations Can You Find dfs
Now give you an string which only contains 0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9.You are asked to add the sig ...
- G - Number Transformation BFS
In this problem, you are given an integer number s. You can transform any integer number A to anothe ...
- redis和memcache列出所有key
//redis $redis = new Redis(); $redis->connect("host", "port"); $redis->sel ...
- 微信小程序画布(1)
wxml: <view catchtouchmove="preventTouchMove" wx:if="{{canvas_haoBao}}"> ...
- PHP Callable强制指定回调类型的方法
如果一个方法需要接受一个回调方法作为参数,我们可以这样写 <?php function dosth($callback){ call_user_func($callback); } functi ...