首页 > 其他分享 >* Dytechlab Cup 2022 A. Ela Sorting Books

* Dytechlab Cup 2022 A. Ela Sorting Books

时间:2023-09-09 20:33:30浏览次数:39  
标签:std 字符 cnt Sorting frac Cup int Ela mex

\(n\) 本书必须分成 \(k\) 部分在书架(\(k \mid n\)),每本书用一个小写的拉丁字母 \([a, y]\) 表示。每部分必须有严格 \(\frac{n}{k}\) 本书。

当所有书分配完成后,对于每个部分编号为 \(1, 2, \cdots, k\) ,每部分的有 \(\frac{n}{k}\) 本书,他们的 \(MEX\) 表示这个部分,作为代表字符。希望从 \(1\) 至 \(k\) 部分的代表字符构成的字符串字典序最大。

输出这个代表字符。

贪心的结合:字典序思维结合 \(MEX\) 思维。

先按字典序思维考虑,从 \(1\) 到 \(k\) 考虑。希望 越前面得到的字符 字典序越大。

假设当前位置为 \(i\) ,再按 \(MEX\) 思维考虑。希望当前的 \(MXE\) 尽可能大。即能够连续得到的字符尽可能多。

我们直接从贡献角度考虑。统计出 \(cnt_0 \sim cnt_{25}\) 。

遍历 \(1 \sim k\) 个部分。对于每个部分,存在 \(\frac{n}{k}\) 个字符,即连续字符串最后一个的取值可能为 \(0 \sim \frac{n}{k} - 1\) ,在这个区域枚举。

  • 用指针 \(j\) 在 \(0 \sim \frac{n}{k} - 1\) 从小到大枚举字符,连续放入。\(cnt_j--\) 。
  • 当出现 \(cnt_j = 0\) ,即连续中断。可以确定此时 \(mex = j\) 。枚举可以结束。
    • 提前结束导致后一段空余的空间,在整体程序结束后可以随意填入,不影响结果。
  • 所有字符都可以连续出现,则 \(mex = \frac{n}{k}\) ,不妨初始化成它。
view
#include <bits/stdc++.h>
void solve() {
	int n, k; std::cin >> n >> k;
	int cnt[26] = {0};
	std::string str; std::cin >> str;
	for (int i = 0; i < n; i++) cnt[str[i] - 'a'] += 1;
	std::string ans = "";
	for (int i = 1; i <= k; i++) {
		int mex = n / k;
		for (int j = 0; j < n / k; j++) {
			if (cnt[j] > 0) cnt[j]--;
			else { mex = j; break; }
		}
		ans += (char)('a' + mex);
	}
	std::cout << ans << '\n';
}
signed main() {
	int _ = 1; std::cin >> _;
	while (_--) solve();
	return 0;
} 

标签:std,字符,cnt,Sorting,frac,Cup,int,Ela,mex
From: https://www.cnblogs.com/zsxuan/p/17690011.html

相关文章

  • Windows中安装Elasticsearch
    链接:https://pan.baidu.com/s/1-EsuGaw0_9ubw5_9AhRS2Q提取码:1hp4一,Elasticsearch环境准备elasticsearch-5.6.8.zip进行解压(安装目录随意)启动服务:   访问http://127.0.0.1:9200,显示如下:表明elasticsearch启动......
  • ElasticSearch的常规增删改查操作
    一、Restful简介RESTFul:RepresentationalStateTransfer,中文意思:表现层状态转化。变现层指的是资源的表现层,这里的资源是指网络上的信息,比如一张图片,一段文本,一步电影,那么每个资源在网络上都有一个标识,可以理解为一个ID,每个资源都有一个ID去表示它,这个ID就称之为URL。当我们给了......
  • ElasticSearch系列——查询、Python使用、Django/Flask集成、集群搭建,数据分片、位置
    @目录Elasticsearch之-查询一基本查询1.1match查询1.2term查询1.3terms查询1.4控制查询的返回数量(分页)1.5match_all查询1.6match_phrase查询1.7multi_match1.8指定返回的字段1.9sort结果排序1.10range范围查询1.11wildcard查询二组合查询2.1bool查询2.2简单过滤......
  • Elasticsearch环境搭建
    一、安装elasticsearch--拉取镜像dockerpulldocker.elastic.co/elasticsearch/elasticsearch:8.9.1--创建docker网络dockernetworkcreateelastic--启动容器,-m设置内存大小dockerrun--namees01--netelastic-p9200:9200-p9300:9300-it-m1GBdoc......
  • Elasticsearch7.8集群实践记录之下线节点
    1.背景:由于机房迁移需要将elasticsearch集群进行跨机房搬迁,采取先扩容再收缩的方式进行,已有效减小对业务环境的影响。当前需要将老的节点有序下线。2.操作步骤:  1.检查集群配置,保证主节点的可用性;   #设置minimum_master_nodes为2curl-XPUT'http://hostname:9......
  • Elasticsearch7.8集群实践记录
    1.背景:当需要开发团队搭建自有elasticsearch集群时候,需要先明确具体的应用场景,进而对可用性,性能以及容量进行评估。当前实践记录主要应用场景在于业务日志记录短暂保存以便提供近期数据查询,并选择elasticsearch版本7.8.0,可用性要求三个9,每日数据量月1.5T,数据保存大约1周;2.配置项......
  • Elasticsearch
    ES(分布式、开源、查询)传统数据一般会分三个方向:结构化数据、非结构化数据、半结构化数据结构化数据:一般每个字段之间都是有关系的,例如mysql的主键唯一id代表了该条数据的唯一定位(mysql、mongodb)非结构化数据:无法用二维表结构来设计,文章、日志、视频、图片等等(mongodb、redis)......
  • ArcGIS Map SDK FeatureLayer点击查询要素与弹框展示
    ArcGISMapSDKFeatureLayer点击查询要素与弹框展示代码如下:<htmllang="en"><head><metacharset="utf-8"/><metaname="viewport"content="initial-scale=1,maximum-scale=1,user-scalable=no&quo......
  • Elasticsearch系列
    Elasticsearch介绍Elasticsearch系列之-linux.docker安装和基础操作Elasticsearch系列之-windows安装和基础操作Elasticsearch系列之-查询......
  • 喜讯!极限科技再次中标中国移动云 Elasticsearch 自研版技术开发服务项目!
    喜讯!极限科技再次中标中国移动云Elasticsearch自研版技术开发服务项目!近日,极限科技再次成功中标中国移动苏州研发中心《云能力中心2023—2024年移动云Elasticsearch自研版技术开发服务项目》。实现了个性化搜索及聚合分析,更稳定可靠地支持万亿级数据规模,为移动云系统提供......