题意

给定一个字符串\(s\),长度为\(n\),一根项链为一个环,定义一根项链为\(k-beautiful\),则该项链顺时针转\(k\)下后与原项链相等,给出\(k\),请构造一根最长的\(k-beautiful\)项链,项链由\(s\)中的一些字符组成,长度为\(1\)的项链和组成字符全部相等的项链满足任意\(k\)

首先最小的答案是最大的字符个数,然后考虑项链中字符不全相等的情况,一根项链转\(k\)下不变,则\(k\)的某个因子可能也满足,不妨设为\(j\),则\(j-beautiful\)的项链也满足\(k-beautiful\),我们枚举因子\(j\),然后找到可以构造出的最长项链,设项链为字符串\(t\),注意到\(j-beautiful\)的项链有\(t[1]=t[j+1],\cdots ,t[j-1]=t[2*j-1]\),注意到这个等式可以继续下去,那么我们要考虑项链的节数,每节有\(j\)个字符,那么要找到可以满足的最大节数,最长的\(j-beautiful\)项链即为:最大节数乘以\(j\),这个最大节数具有二分性质,二分即可

#pragma GCC optimize(3, "Ofast", "inline")

#include <bits/stdc++.h>

#define start ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
#define int ll
#define ls st<<1
#define rs st<<1|1
#define pii pair<int,int>
#define rep(z, x, y) for(int z=x;z<=y;++z)
#define com bool operator<(const node &b)
using namespace std;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
const int maxn = (ll) 5e6 + 5;
const int mod = 998244353;
const int inf = 0x3f3f3f3f;
int T = 1;
int num[26]; bool check(int each, int jie) {
rep(i, 0, 25) {
each -= num[i] / jie;
if (each <= 0)
return true;
}
return false;
} void solve() {
int n, k;
cin >> n >> k;
string s;
cin >> s;
int ans = 1;
rep(i, 0, 25)num[i] = 0;
rep(i, 0, s.size() - 1)++num[s[i] - 'a'], ans = max(ans, num[s[i] - 'a']);
vector<int> v;
for (int i = 2; i <= k; ++i) {
if (k % i == 0)
v.push_back(i);
}
for (auto &each:v) {
int l = 1, r = n / each;
while (l <= r) {
int mid = (l + r) >> 1;
if (check(each, mid))
ans = max(ans, mid * each), l = mid + 1;
else
r = mid - 1;
}
}
cout << ans << '\n';
} signed main() {
start;
cin >> T;
while (T--)
solve();
return 0;
}

CodeForces 1367E Necklace Assembly的更多相关文章

  1. Codeforces Round #650 (Div. 3) E. Necklace Assembly (暴力)

    题意:有一个字符串,要求使用其中字符构造一个环(不必全部都用),定义一个环是k美的,如果它转\(k\)次仍是原样,现在给你\(k\),要求最长的k美环的长度. 题解:我们首先看\(k\),如果一个环转 ...

  2. Codeforces 614E - Necklace

    614E - Necklace 思路:如果奇数超过1个,那么答案是0:否则,所有数的gcd就是答案. 构造方案:每个数都除以gcd,如果奇数个仍旧不超过1个,找奇数个那个在中间(如果没有奇数默认a), ...

  3. CF1367E Necklace Assembly

    题目传送门 思路 提供一种比现有的两篇题解都简单的方法. 我们枚举答案,发现最终的答案数组一定是由多个完全相同的块组成的,并且块长必定是 \(k\) 的因数. 然后我们考虑枚举答案 \(i\),那么此 ...

  4. Codeforces Round #339 (Div. 1) C. Necklace 构造题

    C. Necklace 题目连接: http://www.codeforces.com/contest/613/problem/C Description Ivan wants to make a n ...

  5. Codeforces 526D - Om Nom and Necklace 【KMP】

    ZeptoLab Code Rush 2015 D. Om Nom and Necklace [题意] 给出一个字符串s,判断其各个前缀是否是 ABABA…ABA的形式(A和B都可以为空,且A有Q+1 ...

  6. Codeforces - ZeptoLab Code Rush 2015 - D. Om Nom and Necklace:字符串

    D. Om Nom and Necklace time limit per test 1 second memory limit per test 256 megabytes input standa ...

  7. 【Codeforces 526D】Om Nom and Necklace

    Codeforces 526 D 题意:给一个字符串,求每个前缀是否能表示成\(A+B+A+B+\dots+A\)(\(k\)个\(A+B\))的形式. 思路1:求出所有前缀的哈希值,以便求每个子串的 ...

  8. Codeforces 526D Om Nom and Necklace (KMP)

    http://codeforces.com/problemset/problem/526/D 题意 给定一个串 T,对它的每一个前缀能否写成 A+B+A+B+...+B+A+B+A+B+...+B+A ...

  9. [CodeForces - 614E] E - Necklace

    E - Necklace Ivan wants to make a necklace as a present to his beloved girl. A necklace is a cyclic ...

  10. Codeforces 526.D Om Nom and Necklace

    D. Om Nom and Necklace time limit per test 1 second memory limit per test 256 megabytes input standa ...

随机推荐

  1. flutter系列之:做一个下载按钮的动画

    目录 简介 定义下载的状态 定义DownloadButton的属性 让DownloadButton的属性可以动态变化 定义downloadController 定义DownloadButton的细节 ...

  2. openlayers Text字体大小设置

    今做一个app版的ol地图,发现区域太小显示拥挤,于是想把字体改小,看起来匀称点,于是盯紧了font属性使劲改 老是不听咋整呢?网上找大佬 于是找到了得到了各路大神鼎力相助 如: 赶紧跑去试试,原来这 ...

  3. ol设置最佳可视范围和限制缩放

    目前随着科技发展,智慧城市的不断发展,GIS方面的技术也是层出不穷,如市场流行的 OPENLAYERS, CESIUM, THREE等,但是也会有很多棘手的问题,比如不同分辨率下,图层的显示范围,禁止 ...

  4. 在树莓派上使用numpy实现简单的神经网络推理,pytorch在服务器或PC上训练好模型保存成numpy格式的数据,推理在树莓派上加载模型

    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是mlp识别mnist手写数字识别 训练代码在电脑上,cpu就能训练,很快的: 1 import torch 2 ...

  5. 预测 motif 的计算原理

    本文章来源于简书,作者小潤澤,已获原作者授权:部分内容有调整. 前言 蛋白质中功能的基本单元是 domain,是一种特殊的三维结构,不同结构的 domain 与其他分子特异性结合从而发挥功能.与此类似 ...

  6. JavaWeb编程面试题——Spring Boot

    引言 面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待.不以刷题进大厂为目的,而是以学习为目的.这里的知识点会持续更新,目录也会随时进行调整. 关注公众号:编 ...

  7. python 爬虫某东网商品信息 | 没想到销量最高的是

    哈喽大家好,我是咸鱼 好久没更新 python 爬虫相关的文章了,今天我们使用 selenium 模块来简单写个爬虫程序--爬取某东网商品信息 网址链接:https://www.jd.com/ 完整源 ...

  8. 有关 python 切片的趣事

    哈喽大家好,我是咸鱼 今天来讲一个我在实现 python 列表切片时遇到的趣事 在正式开始之前,我们先来了解一下切片(slice) 切片操作是访问序列(列表.字符串......)中元素的另一种方法,它 ...

  9. 前后端是怎么交互的呢?(Jvav版)

    一.什么是前端 在网上,我也去找了一些观点,其实都是应用层面的,什么使用一个地址,回车以后就能拿到 .html文件等等 说的也没问题,前端简单点说呢,就是负责展示和美化的页面,大部分在网上我们所看到的 ...

  10. in用不用索引,啥时候能用啥时候不能用,一文说清

    in/or到底能不能用索引应该是肯定的,但有时生效有时不生效,这个能不能量化计算?这是本文想讨论和解答的问题. in到底用不用索引感觉像一桩悬疑片!古早时期的面经,统一说不走索引,在一些程序员脑海中从 ...