永久打开的传送门

\(\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(小小的并查集啦~)的更多相关文章

  1. 51 nod 1456 小K的技术(强连通 + 并查集)

    1456 小K的技术 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   苏塞克王国是世界上创新技术的领先国家,在王国中有n个城市 ...

  2. K:Union-Find(并查集)算法

    相关介绍:  并查集的相关算法,是我见过的,最为之有趣的算法之一.并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.其相关的实现代码较为简短,实现思想也 ...

  3. 第46届ICPC澳门站 K - Link-Cut Tree // 贪心 + 并查集 + DFS

    原题链接:K-Link-Cut Tree_第46屆ICPC 東亞洲區域賽(澳門)(正式賽) (nowcoder.com) 题意: 要求一个边权值总和最小的环,并从小到大输出边权值(2的次幂):若不存在 ...

  4. poj2492(种类并查集/各种解法)

    题目链接: http://poj.org/problem?id=2492 题意: 有t组测试数据, 对于每组数据,第一行n, m分别表示昆虫的数目和接下来m行x, y, x, y表示教授判断x, y为 ...

  5. 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 ...

  6. 种类并查集——带权并查集——POJ1182;HDU3038

    POJ1182 HDU3038 这两个题比较像(一类题目),属于带权(种类)并查集 poj1182描绘得三种动物种类的关系,按照他一开始给你的关系,优化你的种类关系网络,最后看看再优化的过程中有几处矛 ...

  7. 【bzoj5133】[CodePlus2017年12月]白金元首与独舞 并查集+矩阵树定理

    题目描述 给定一个 $n\times m$ 的方格图,每个格子有 ↑.↓.←.→,表示从该格子能够走到相邻的哪个格子.有一些格子是空着的,需要填上四者之一,需要满足:最终的方格图中,从任意一个位置出发 ...

  8. HDU 5923 Prediction(2016 CCPC东北地区大学生程序设计竞赛 Problem B,并查集)

    题目链接  2016 CCPC东北地区大学生程序设计竞赛 B题 题意  给定一个无向图和一棵树,树上的每个结点对应无向图中的一条边,现在给出$q$个询问, 每次选定树中的一个点集,然后真正被选上的是这 ...

  9. [USACO18JAN] MooTube (离线并查集)

    题目大意:给你一棵边权树,定义两点间距离为它们唯一路径上的最小路权,求与某点距离不大于K(k为已知)的点的数量 带权并查集维护集合内元素总数 路和问题 都按权值大到小排序,枚举问题, 建权值不小于K的 ...

随机推荐

  1. Linux c++ vim环境搭建系列(0)——简介

    vim 学习 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环 ...

  2. SpringBoot项目中容易出现的问题

    SpringBoot项目的配置文件 另外启动文件的位置一定要在其它类的顶层,SpringBoot所在的main函数的同级包或子包在生效 开始做这个的时候最容易把配置文件搞错,造成sql查询异常

  3. 【转】Centos7启动网卡(获取ip地址)

    这里之所以是查看下IP ,是我们后面要建一个Centos远程工具Xshell 连接Centos的时候,需要IP地址,所以我们这里先 学会查看虚拟机里的Centos7的IP地址 首先我们登录操作系统 用 ...

  4. stand up meeting 1-4

    放假归来第一天,组内成员全员到齐,满血复活. 今天主要对下边最后半个月的任务做了规划和分配. UI的优化部分在假期前静雯已经完成在了UI分支上,国庆会在这两天把UI设计的更新merge到master分 ...

  5. JavaScript数据类型 —— 基础语法(2)

    JavaScript基础语法(2) 数据类型 js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object) ...

  6. 【错误】python百分号冲突not enough arguments for format string

    query = "SELECT * FROM devices WHERE devices.`id` LIKE '%{}%'".format("f2333") d ...

  7. PHP代码审计理解(二)----齐博CMS7.0文件覆盖

    0x00 前言 因为我是跟着视频操作的,这回真的没理解为什么定位到了这个存在漏洞的文件... /do/fujsarticle.php 因为没有前文,所以这里无法分析这个$FileName为什么可以$_ ...

  8. python之excel表操作

    python对excel表操作主要用到三个库,xlrd,xlwt,xlutils,分别用于excel表读,写,修改操作,以下将一个简单介绍 一.生成excel表:xlwt类 新建excel表,并写入数 ...

  9. 图数据库的内部结构 (NEO4j)

    What “Graph First” Means for Native Graph Technology Neo4j是一个具有原生处理(native processing)功能和原生图存储(nativ ...

  10. jeecg ant design vue 一些收藏

    1关于 进来清除上次记录 找到src/permission.js下的