CodeForces 1367E Necklace Assembly
题意
给定一个字符串\(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的更多相关文章
- Codeforces Round #650 (Div. 3) E. Necklace Assembly (暴力)
题意:有一个字符串,要求使用其中字符构造一个环(不必全部都用),定义一个环是k美的,如果它转\(k\)次仍是原样,现在给你\(k\),要求最长的k美环的长度. 题解:我们首先看\(k\),如果一个环转 ...
- Codeforces 614E - Necklace
614E - Necklace 思路:如果奇数超过1个,那么答案是0:否则,所有数的gcd就是答案. 构造方案:每个数都除以gcd,如果奇数个仍旧不超过1个,找奇数个那个在中间(如果没有奇数默认a), ...
- CF1367E Necklace Assembly
题目传送门 思路 提供一种比现有的两篇题解都简单的方法. 我们枚举答案,发现最终的答案数组一定是由多个完全相同的块组成的,并且块长必定是 \(k\) 的因数. 然后我们考虑枚举答案 \(i\),那么此 ...
- Codeforces Round #339 (Div. 1) C. Necklace 构造题
C. Necklace 题目连接: http://www.codeforces.com/contest/613/problem/C Description Ivan wants to make a n ...
- Codeforces 526D - Om Nom and Necklace 【KMP】
ZeptoLab Code Rush 2015 D. Om Nom and Necklace [题意] 给出一个字符串s,判断其各个前缀是否是 ABABA…ABA的形式(A和B都可以为空,且A有Q+1 ...
- 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 ...
- 【Codeforces 526D】Om Nom and Necklace
Codeforces 526 D 题意:给一个字符串,求每个前缀是否能表示成\(A+B+A+B+\dots+A\)(\(k\)个\(A+B\))的形式. 思路1:求出所有前缀的哈希值,以便求每个子串的 ...
- 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 ...
- [CodeForces - 614E] E - Necklace
E - Necklace Ivan wants to make a necklace as a present to his beloved girl. A necklace is a cyclic ...
- 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 ...
随机推荐
- Python从零到壹丨图像增强的顶帽运算和底帽运算
摘要:这篇文章详细介绍了顶帽运算和底帽运算,它们将为后续的图像分割和图像识别提供有效支撑. 本文分享自华为云社区<[Python从零到壹] 四十九.图像增强及运算篇之顶帽运算和底帽运算>, ...
- Golang 协程/线程/进程 区别以及 GMP 详解
Golang 协程/线程/进程 区别详解 转载请注明来源:https://janrs.com/mffp 概念 进程 每个进程都有自己的独立内存空间,拥有自己独立的地址空间.独立的堆和栈,既不共享堆,亦 ...
- R 语言主成分分析(PCA)实战教程
作者:落痕的寒假原文:https://blog.csdn.net/LuohenYJ/article/details/97950522 声明:本文章经原作者同意后授权转载. 主成分分析 Principa ...
- S32DS---make: *** No rule to make target 'clean'. Stop和make: *** No rule to make target 'all'. Stop的一个解决方法
问题: 最近在用S32DS调试代码的时候,遇到一个稀奇古怪的问题: and 折腾了半天,发现从这个页面导入工程编译就不会出现这个问题???? file-->import projects fro ...
- Devexpress如何获取RadioGroup选中项的值和显示值
分享一个小技巧,如题目所示,DEV控件如何获取RadioGroup选中项的值和显示值.也是在网上找了很久,看了大家都是通过SelectIndex的值定位选中的按钮,并没有说取选中项的值,所以自己研究了 ...
- python3使用pjsua进行呼叫测试
环境:CentOS 7.6_x64 Python版本 :3.9.12 pjsip版本:2.13 之前写过一篇CentOS7环境编译python3.9版本pjsua的文章: https://w ...
- PlayWright(十二)- PO模式
1.PO模式是什么? PO,即Page Object,直译为页面对象,代表 Web 应用程序的一部分 具体什么意思呢,通俗来讲,一个页面有输入.点击.搜索功能,而且有很多页面,这时候我们就采用每个 ...
- AI重塑千行百业,华为云发布盘古大模型3.0和昇腾AI云服务
[中国,东莞,2023年7月7日]华为开发者大会2023(Cloud)7月7日在中国东莞正式揭开帷幕,并同时在全球10余个国家.中国30多个城市设有分会场,邀请全球开发者共聚一堂,就AI浪潮之下的产业 ...
- 【Redis】字符串sds
sds,即 Simple Dynamic Strings,是Redis中存储绝大部分字符串所采用的数据结构. typedef char *sds; 一.类型 sds的类型包括SDS_TYPE_5, S ...
- Federated Learning001
联邦学习--笔记001 2022.11.16周三 今天学习了联邦学习的开山之作---Communication-Efficient Learning of Deep Networks from Dec ...