CF848A From Y to Y

题目概要

对于给定的一个长度为 n n n 的字符串,初始时,我们将它视作 n n n 个长度为 1 1 1 的字符串的可重集,然后重复下列操作 n − 1 n-1 n1 次:

  • 从这些字符串中任取两个字符串 s , t s,t s,t,将它们删除,将 s + t s+t s+t 加入集合。注意这里的 + + + 是指字符串拼接。

操作的成本被定义为 ∑ c ∈ { a , b , ⋯ , z } f ( s , c ) × f ( t , c ) \sum_{c\in\left\{\texttt{a},\texttt{b},\cdots,\texttt{z}\right\}}f\left(s,c\right)\times f\left(t,c\right) c{a,b,,z}f(s,c)×f(t,c),其中 f ( s , c ) f\left(s,c\right) f(s,c) 是字符 c c c s s s 中出现的次数。更通俗地说,每次操作的成本为每个小写字母在两个字符串中出现次数的积

现在给定一个非负整数 k ( 0 ⩽ k ⩽ 1 0 5 ) k\left(0\leqslant k\leqslant 10^5\right) k(0k105),请你构造一个不超过 1 0 5 10^5 105 个字符的可重集,使得操作成本的最小值为 k k k。可以证明,这样的解一定是存在的。

思路概述

我觉得话这一道题目就是一个简单的构造题目,随便取一段字符串来看看,就不难发现就是一个等差数列,所以说最小的合并应该就是按字典序排列以后的顺序合并。所以代码的结构差不多就是直接循环走一遍,然后如果可以输出就输出,不然就不输出。
然后我们证明一下:
考虑对于每一对 ( i , j ) \left(i,j\right) (i,j) 满足 s i = s j s_i=s_j si=sj 计算贡献,然后我们可以每次合并看一下,他到底想让我们干什么东西,所以不难得出:如果合并 s , t s,t s,t,本质就是计算有多少 ( x , y ) \left(x,y\right) (x,y) 满足 s x = t y s_x=t_y sx=ty。所以我们就可以等到两个东西合并后再计算答案。所以最后就跟上面的一样,就是贪心。

代码部分

#include<bits/stdc++.h>
using namespace std;
int k,f[10005];
char ans='a';
signed main()
{cin>>k;if(k==0) cout<<ans;int i=1; for(i=1;f[i-1]<=k;i++) f[i]=f[i-1]+i;for(int j=i-1;j>=1;j--){while(k>=f[j]){k-=f[j];int t=j+1;   while(t--) cout<<ans;ans++;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天分享一个FPGA开源代码(2)- spi 读写Flash

Flash的用途主要是用于存储主控制器的程序&#xff0c;SPI -Flash芯片就是支持SPI通讯协议的flash芯片。 在FPGA开发中&#xff0c;一般有这两种方式下载程序到板子上&#xff1a; &#xff08;1&#xff09;通过 JTAG下载程序到FPGA中直接运行&#xff0c;下载速度快&#xff…

k8s-pod 实战四 什么是 Kubernetes Pod?如何在生产环境中使用它?(学习专场,实战就看这一篇就够了)

一、pod概念 Kubernetes Pod 是 Kubernetes 中最小的部署单元。每个 Pod 包含一个或多个容器,这些容器共享相同的网络命名空间和存储卷。以下是 Pod 的详细介绍和一个生产实例的使用示例。 Pod 概述 定义:Pod 是 Kubernetes 中可以创建、调度和管理的最小单元,通常包含一个…

新手c语言讲解及题目分享(十四)--函数专项练习(二)

新手c语言讲解及题目分享&#xff08;十四&#xff09;--函数专项练习&#xff08;一&#xff09;-CSDN博客 目录 前言 一.函数调用中的参数传递 1&#xff0e;普通变量作为函数的参数 2&#xff0e;数组元素作为参数 3&#xff0e;数组名作为函数的参数 4&#xff0e;指…

从误删到重生:2024年数据恢复软件市场新趋势与精选工具

现在科技发展越来越先进&#xff0c;大部分的办公内容也都是通过电脑来进行操作的。但是总免不了偶尔会遇到电脑蓝屏或者其他原因导致数据丢失的情况。那辛辛苦苦做好的材料不见了一定很恼火。这次我分享几个电脑数据恢复工具来解决这个问题。 1.福晰数据恢复 连接直达&#…

江苏省地图大屏展示

Html部分绘制echarts图 <div id"chart3" style"width: 100%;height: 100%;"></div>Js部分引入地图数据data.js <script th:src"{/js/geoJson/data.js}"></script> <script type"text/javascript">var…

Nginx负载均衡中的变量使用:动态配置与实践

Nginx是一款功能丰富的Web服务器和反向代理&#xff0c;其负载均衡能力尤为突出。在Nginx的配置中&#xff0c;变量的使用允许实现更灵活和动态的负载均衡策略。本文将详细介绍如何在Nginx负载均衡中使用变量&#xff0c;包括变量的基本概念、使用方法、以及如何通过变量实现高…

docker实战基础五(Dockerfile)

编写高效的 Dockerfile 是确保容器化应用成功的关键步骤。以下是关于如何在 Dockerfile 中创建用户、添加环境变量、使用 ENTRYPOINT、理解 CMD 和 ENTRYPOINT 的区别,以及 ADD 和 COPY 指令的区别的详细说明。 一、创建用户 在Docker容器中运行应用程序时,为了安全性,通常…

C++ | Leetcode C++题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {int n s.size(), m t.size();vector<vector<int> > f(m 1, vector<int>(26, 0));for (int i 0; i < 26; i) {f[m][i] m;}for (int i m - 1; …

操作系统面试真题总结(五)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 线程切换要保存哪些上下文&#xff1f; 当发生线程切换时&#xf…

【论文阅读】Stealing Image-to-Image Translation Models With a Single Query(2024)

摘要 Training deep neural networks(训练深度神经网络) requires(需要) significant computational resources(大量计算资源) and large datasets(大型数据集) that are often confidential(机密的) or expensive(昂贵的) to collect. As a result(因此), owne…

sed awk 第二版学习(二)—— 正则表达式语法

目录 一、表达式 二、成行的字符 1. 反斜杠 2. 通配符 3. 编写正则表达式 4. 字符类 &#xff08;1&#xff09;字符的范围 &#xff08;2&#xff09;排除字符类 &#xff08;3&#xff09;POSIX 字符类补充 5. 重复出现的字符 6. 匹配单词 7. gres 替换脚本 8. …

使用 Rust 和 Bevy 创建你的第一个三维渲染应用程序

为什么选择 Rust 进行三维开发&#xff1f; Rust 的特点使其非常适合用于三维开发&#xff1a; 内存安全性&#xff1a;Rust 的所有权系统和严格的编译器检查可以防止常见的内存错误&#xff0c;如空指针和数据竞争。高性能&#xff1a;Rust 是一门系统编程语言&#xff0c;能…

力扣167.两数之和II-输入有序数组

import java.util.HashMap; //法1&#xff1a;哈希表 class Solution {public int[] twoSum(int[] numbers, int target) {HashMap<Integer, Integer> map new HashMap<Integer, Integer>();for(int i 0; i < numbers.length; i) {if (map.containsKey(target…

2024-09-02 Ubuntu固定USB串口名(包括1拖N的USB串口)

在运行Ubuntu系统的开发板上,如果使用可插拔的USB串口,有时候程序正在运行时,如果突然连接传感器的USB串口设备被插拔了一下,这时,会发现系统中的USB串口名发生了改变。例如,插拔之前是/dev/ttyUSB0,插拔之后变成了/dev/ttyUSB3。发生这种情况的时候,有时候会导致程序无…

python出现远程服务器访问不了Hugging Face

OSError: We couldn’t connect to ‘https://huggingface.co’ to load this file, couldn’t find it in the cached files and it looks like stabilityai/sd-turbo is not the path to a directory containing a file named tokenizer/config.json. 解决方法&#xff1a; …

关于VUE3开发频繁引入ref,reactive,computed等基础函数。

利用unplugin-auto-import插件可以避免频繁引入ref&#xff0c;reactive&#xff0c;computed等基础函数。 1.安装unplugin-auto-import依赖 npm i -D unplugin-auto-import 2.在vite.config.ts中注入依赖 效果

关于主流电商平台|淘宝|拼多多|抖音|1688官方平台接口的接入和返回

taobao.trades.sold.get( 查询卖家已卖出的交 搜索当前会话用户作为卖家已卖出的交易数据&#xff08;只能获取到三个月以内的交易信息&#xff09; 1. 返回的数据结果是以订单的创建时间倒序排列的。 2. 返回的数据结果只包含了订单的部分数据&#xff0c;可通过taobao.trade…

C++系列-STL容器中的for循环遍历方式

STL容器中的for循环遍历方式 普通的for循环利用迭代器for循环for循环新用法 for (auto i_st : st)for_each循环 淮上喜会梁川故友 韦应物 江汉曾为客&#xff0c;相逢每醉还。 浮云一别后&#xff0c;流水十年间。 欢笑情如旧&#xff0c;萧疏鬓已斑。 何因不归去&#xff0c;淮…

前端宝典二十六:vue3的新特性

一、Vue2处理响应式的源码方式&#xff1a; const initData {value: 1 } const data {};Object.keys(initData).forEach(key > {Object.defineProperty(data, key, {get() {return initData[key]},set(value) {initData[key] value}}) })console.log(data.value) // 1 …

代码随想录Day 32|leetcode题目:501.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 动态规划理论基础一、理论基础1.1 什么是动态规划1.2 动态规划的解题步骤1.3 动态规划应该如何debug 二、题目题目一&#xff1a; 509. 斐波那契数解题思路&#xff1a;动态规划递归解法 题目二&a…