Codeforces Round 921 (Div. 2)题解(A-C)

A

We Got Everything Covered!

思路

可以采用划分区域的思想。

  • 共划分为 n 个区域
  • 每一个区域含有所包含的前 k 个字母

证明:

  1. 正确性:无论所要求的字符串str为什么,只需要在区域i中取出 s t r [ i ] str[i] str[i]即可
  2. 最优性:若需要的字符串全部是a,那么s必定含有n个a,对于其他的字母同理。
    最后可以得到,s最少的字母数量为 n ⋅ k n \cdot k nk

代码

#include<bits/stdc++.h>
using namespace std;inline void Print(int k){for(int i = 0; i < k; i++){putchar('a' + i);}
}
int main()
{int T;cin >> T;while(T--){int n, k;scanf("%d%d", &n, &k);for(int i = 1; i <= n; i++){Print(k);}puts("");}return 0;
}

B

A Balanced 问题集et?

思路

暴力枚举gcd。

如果一群数字的gcd已经确定,那么其他数字的值便为gcd的倍数。

  1. n 不可以整除 gcd:在这种情况下,这群数字的和一定不会是n(舍去这种情况)
  2. n 可以整除gcd,但是商却小于k,这种情况下,即使每一个数字均为gcd,结果仍然大于n,不可能。
  3. n 可以整除gcd,商大于等于k,此时可以把若干个gcd合并为数组中的一个元素。

代码

#include<bits/stdc++.h>
using namespace std;
int ans;int x, n;inline void solve(int k){if(x / k >= n){ans = max(ans, k);}
}
int main()
{int T;cin >> T;while(T--){scanf("%d%d", &x, &n);ans = 0;for(int i = 1; (long long)i * i <= (long long)x; i++){if(x % i == 0){solve(i);solve(x / i);}}printf("%d\n", ans);}return 0;
}

C

Did We Get Everything Covered?

思路

首先对所给定的s进行分组,从左向右扫描,当刚好扫描满一个区间的时候,确定边界,继续扫描下一个区间。

区间为包含所有前 k 个字母的区间

  1. 如果已有的区间大于等于n,那么根据A中的知识,必定满足条件
  2. 如果区间个数不足n,那么进行构造。
    • 我们选取每一个区间的最后一个元素(每个区间最后一个元素一定仅仅出现一次,这使得这一个元素将用完一个区间)
    • 当超过已有的区间的时候,我们选取最后一个不完整区间中的没有出现的元素。

代码

#include<bits/stdc++.h>
using namespace std;
int n,  k, m;
typedef bitset<30> bs;
bs last, target;
const int N = 2e3;
char s[N];inline int getNum(char x){return x - 'a' + 1;
}bool solve(vector<pair<int, int>> &fenzu){bs tmp;int lpos = 1;tmp.reset();for(int i = 1; i <= m; i++){tmp.set(getNum(s[i]));if(tmp.count() >= k){tmp.reset();fenzu.push_back({lpos, i});lpos = i + 1;if(fenzu.size() >= n){return true;}}}last = tmp;return false;
}
int main()
{int T;cin >> T;while(T--){scanf("%d%d%d", &n, &k, &m);vector<pair<int, int>> fenzu;scanf("%s", s + 1);target.reset();for(int i = 1; i <= k; i++){target.set(i);}if(solve(fenzu)){puts("YES");}else{puts("NO");int cnt = 0;for(auto t : fenzu){putchar(s[t.second]);cnt++;}char theChar;for(int i = 1; i <= k; i++){if(!last.test(i)){theChar = 'a' - 1 + i;break;}}while(cnt < n){putchar(theChar);cnt++;}puts("");}}return 0;
}

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

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

相关文章

构造题记录

思路&#xff1a;本题要求构造一个a和b数组相加为不递减序列&#xff0c;并且b数组的极差为最小的b数组。 可以通过遍历a数组并且每次更新最大值&#xff0c;并使得b数组为这个最大值和当前a值的差。 #include <bits/stdc.h> using namespace std; #define int long lon…

【BUUCTF 加固题】Ezsql 速通

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

阿里云/腾讯云幻兽帕鲁服务器据点最大帕鲁工作数量最多15个,改成20不生效?

例如&#xff0c;在阿里云的计算巢管理中&#xff0c;找到你的这台部署幻兽帕鲁的服务器实例&#xff0c;选择右上角的“修改游戏配置” 然后选择“基地内工作帕鲁的最大数量”改成20 有人说更改上面的数字&#xff0c;根本不起作用。原因可能如下&#xff1a; 参考资料&#…

SORA:OpenAI最新文本驱动视频生成大模型技术报告解读

Video generation models as world simulators&#xff1a;作为世界模拟器的视频生成模型 1、概览2、Turning visual data into patches&#xff1a;将视觉数据转换为补丁3、Video compression network&#xff1a;视频压缩网络4、Spacetime Latent Patches&#xff1a;时空潜在…

C++学习:最值查找

min和max函数 1.min(a&#xff0c;b)返回a和b中较小的那个值&#xff0c;只能传入两个值&#xff0c;或传入一个列表。 例如: min(3&#xff0c;5) 3 min({1,2,3,4})1 2.max(a&#xff0c;b)返回a和b中较大的那个值&#xff0c;只能传入两个值&#xff0c;或传入一个列表。 例…

《数电》理论笔记-第3章-常用组合逻辑电路及MSI组合电路模块的应用

一&#xff0c;编码器和译码器 1&#xff0c;编码器 编码:用由0和1组成的代码表示不同的事物。 编码器:实现编码功能的电路&#xff0c; 常见编码器:普通编码器、优先编码器、二进制编码器二-十进制编码器等等 1.1 三位二进制普通编码器和三位二进制优先编码器 1分58秒开始 …

为什么您的企业 AI 战略可能会在 2024 年失败:模型下降与数据上升

我怀疑有些人会指责我设置引诱性标题。 其他人会说&#xff0c;这并不是真正的范围——大多数人在最初的人工智能尝试中都会失败&#xff0c;但这并不重要&#xff0c;学习是值得的。在某种程度上&#xff0c;两者都是对的——但我认为为什么企业会失败是值得探索的&#xff0c…

2024-02-16 web3-区块链-keypass记录

摘要: 2024-02-16 web3-区块链-keypass记录 文档&#xff1a; Introduction - Keypass Docs What is KEYPASS&#xff1f; - Keypass Docs What is KEYPASS&#xff1f; KeyPass Wallet is a new smart contract wallet that provides a secure and customizable registration…

并发编程(1)基础篇

1 概览 1.1 这门课讲什么 这门课中的【并发】一词涵盖了在 Java 平台上的 进程线程并发并行 以及 Java 并发工具、并发问题以及解决方案&#xff0c;同时也会讲解一些其它领域的并发 1.2 为什么学这么课 我工作中用不到并发啊&#xff1f; 那你还是没有接触到复杂项目. …

【JavaScript】添加、移除、移动、复制、创建和查找节点

创建新节点 document.createElement(tagName); // 创建⼀个指定标签名的元素节点 document.createTextNode(text); // 创建⼀个包含指定⽂本的⽂本节点 document.createDocumentFragment(); // 创建⼀个空的⽂档⽚段节点 添加、移除、替换、插⼊节点 parentNode.appendChild(…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘value‘ of undefined

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

寒假作业2月6号

第五章 静态成员与友元 一、填空题 1、一个类的头文件如下所示&#xff0c;num初始化值为5&#xff0c;程序产生对象T&#xff0c;且修改num为10&#xff0c;并使用show()函数输出num的值10。 #include <iostream.h> class Test { private: static int num; publi…

[数学建模] 计算差分方程的收敛点

[数学建模] 计算差分方程的收敛点 差分方程&#xff1a;差分方程描述的是在离散时间下系统状态之间的关系。与微分方程不同&#xff0c;差分方程处理的是在不同时间点上系统状态的变化。通常用来模拟动态系统&#xff0c;如在离散时间点上更新状态并预测未来状态。 收敛点&…

深入解析Spring EL表达式:概念、特性与应用

在Spring框架中&#xff0c;Spring Expression Language&#xff08;简称Spring EL&#xff09;是一种功能强大的表达式语言&#xff0c;它支持在运行时查询和操作对象图。本文将详细介绍Spring EL表达式的概念、特点、基本语法和用法&#xff0c;并探讨在Spring框架中的应用场…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(十一)(1)(2)(3)

目录 实验十一&#xff1a;非线性方程&#xff08;组&#xff09;求解 练习一 练习二 练习三 实验十一&#xff1a;非线性方程&#xff08;组&#xff09;求解 练习一 1.求莱昂纳多方程 的解 clc;clear; p[1,2,10,-20]; roots(p)ans -1.6844 3.4313i -1.6844 - 3.4313i…

U盘重装系统

因为系统管理员密码忘记&#xff0c;登录不了window系统&#xff0c;使用老毛桃制作U盘启动盘 1、下载老毛桃 下载地址为http://lmt.psydrj.com/index.html 安装后&#xff0c;桌面上显示为 2、制作U盘启动盘 启动老毛桃U盘启动装机工具&#xff0c;插入U盘&#xff0c;点击一…

2/15 homework

1、选择题 1.1、有以下程序 int main() { char a[7]"a0\0a0\0";int i,j; isizeof(a); jstrlen(a); printf("%d %d\n",i,j); } //strlen求出字符串的长度&#xff0c;其实是字符串中字符的个数&#xff0c;不包括\0 程序运行后的输出结果是…

【More Effective C++】条款21:用重载技术避免隐式类型转换

没有重载形式&#xff0c;upi3 upi1 10和upi3 20 upi2也能调用成功&#xff0c;因为进行了隐式转换 增加重载函数&#xff0c;避免隐式转换过程中临时对象的构建和析构成本C中的操作符重载要求至少有一个操作数是用户定义的类型&#xff08;如类或枚举类型&#xff09; 所以…

Springboot的it职业生涯规划系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; Springboot的it职业生涯规划系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&a…

力扣_字符串8—不同的子序列

题目 给你两个字符串 s s s 和 t t t &#xff0c;统计并返回在 s s s 的 子序列 中 t t t 出现的个数&#xff0c;结果需要对 1 0 9 7 10^9 7 1097 取模。 示例&#xff1a; 输入&#xff1a; s r a b b b i t , t r a b b i t s rabbbit, t rabbit srabbbit,tra…