Codeforces Round 937 (Div. 4) A - F 题解

A. Stair, Peak, or Neither?

题解:直接比较输出即可。
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e5 + 7 ;
const int mod = 1e9 + 7 ;
inline ll read() {
	ll x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}
char s[maxn] ;
ll t , n , d , k , a[maxn] , ans[maxn] ;
struct Node{
	ll val , id ;
	bool friend operator < (const Node a , const Node b){
		return a.val < b.val ;
	}
}b[maxn];
ll sum[maxn] ;
void solve(){
	n = read() ;
	d = read() ;
	k = read() ;
	if(n < d && d < k){
		cout <<"STAIR" << endl ;
		return ;
	}
	if(n < d && d > k){
		cout << "PEAK" << endl ;
		return ;
	}
	cout << "NONE" << endl ;
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

B. Upscaling

题解:直接模拟输出即可。
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e5 + 7 ;
const int mod = 1e9 + 7 ;
inline ll read() {
	ll x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}
char s[maxn] ;
ll t , n , d , k , a[maxn] , ans[maxn] ;
struct Node{
	ll val , id ;
	bool friend operator < (const Node a , const Node b){
		return a.val < b.val ;
	}
}b[maxn];
ll sum[maxn] ;
void solve(){
	n = read() ;
	for(int i = 1 ; i <= n ; i ++){
		if(i % 2 == 1){
			bool f = 1 ;
			for(int j = 1 ; j <= n ; j ++){
				if(f == 1){
					cout << "##" ;
					f = 0 ;
				}
				else{
					cout << ".." ;
					f = 1 ;
				}
			}
			cout << endl ;
			f = 1 ;
			for(int j = 1 ; j <= n ; j ++){
				if(f == 1){
					cout << "##" ;
					f = 0 ;
				}
				else{
					cout << ".." ;
					f = 1 ;
				}
			}
			cout << endl ;
		}
		else{
			bool f = 0 ;
			for(int j = 1 ; j <= n ; j ++){
				if(f == 1){
					cout << "##" ;
					f = 0 ;
				}
				else{
					cout << ".." ;
					f = 1 ;
				}
			}
			cout << endl ;
			f = 0 ;
			for(int j = 1 ; j <= n ; j ++){
				if(f == 1){
					cout << "##" ;
					f = 0 ;
				}
				else{
					cout << ".." ;
					f = 1 ;
				}
			}
			cout << endl ;
		}
	}
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

C. Clock Conversion

题意:让你将二十四小时制转成十二小时制。
题解:多注意细节,判断输出即可。
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e5 + 7 ;
const int mod = 1e9 + 7 ;
inline ll read() {
	ll x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}
ll t , n , d , k , a[maxn] , ans[maxn] ;
struct Node{
	ll val , id ;
	bool friend operator < (const Node a , const Node b){
		return a.val < b.val ;
	}
}b[maxn];
ll sum[maxn] ;
char s[maxn] ;
void solve(){
	scanf("%s" , s + 1) ;
	if(s[1] == '0'){
		if(s[2] == '0'){
			cout << "12" << ":" << s[4] << s[5] << " " ;
			cout << "AM" << endl ;
		}
		else{
			cout << s[1] << s[2] << ":" << s[4] << s[5] << " " ;
			cout << "AM" << endl ;
		}
	}
	else{
		ll sum = s[1] - '0' ;
		sum = sum * 10 + (s[2] - '0') ;
		if(sum < 12){
			cout << s[1] << s[2] << ":" << s[4] << s[5] << " " << "AM" << endl ;
			return ;
		}
		if(sum == 12){
			cout << s[1] << s[2] << ":" << s[4] << s[5] << " " ;
			cout << "PM" << endl ;
		}
		if(sum > 12){
			if(sum - 12 < 10){
				cout << 0 ;
			}
			cout << sum - 12 << ":" << s[4] << s[5] << " " ;
			cout << "PM" << endl ;
		}
	}
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

D. Product of Binary Decimals

题意:问给你一个数字,看能否将数字变成a_1 * a_2 * ... * a_n == x的形式,a数组必须保证是二进制数字。
题解:看起来很复杂,但是你会发现,n <= 200000的数字,最多就有6位数字,那么很简单,直接枚举数字从n - 1 到 2,看看数字是否符合二进制数字的限制,如果符合并且能够整除n,那么就除尽为止,最后判断一下数字是否为二进制数字即可。复杂度O(6 * n)
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e5 + 7 ;
const int mod = 1e9 + 7 ;
inline ll read() {
	ll x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}
ll t , n , d , k , a[maxn] , ans[maxn] ;
struct Node{
	ll val , id ;
	bool friend operator < (const Node a , const Node b){
		return a.val < b.val ;
	}
}b[maxn];
ll sum[maxn] ;
char s[maxn] ;
bool check(ll x){
	while(x){
		ll res = x % 10 ;
		if(res == 0 || res == 1){
			x /= 10 ;
		}
		else{
			return 0 ;
		}
	}
	return 1 ;
}
vector < ll > q ;
void solve(){
	n = read() ;
	ll N = n ;
	if(check(n)){
		cout << "YES\n" ;
		return ;
	}
	for(auto it : q){
		if(it < N){
			while(N % it == 0){
				N /= it ;
			}
		}
	}
	if(check(N)){
		cout << "YES\n" ;
	}
	else{
		cout << "NO\n" ;
	}
}
int main(){
	t = read() ;
	for(ll i = 100000 ; i >= 2 ; i --){
		if(check(i)){
			q.push_back(i) ;
		}
	}
	while(t --){
		solve() ;
	}
	return 0 ;
}

E. Nearly Shortest Repeating Substring

题意:给你一个字符串n,能否找到最小的字符串k,将字符串k粘贴x遍,使长度和n相同,并且满足做多只有一个字符不同的最小字符串是什么?
题解:很明显,枚举因数存在set中,然后判断能否找到最多只有一个不同的字符串即可。
代码:
#include<bits/stdc++.h>
using namespace std ;
#define int long long
const int maxn = 2e5 + 7 ;
inline int read() {
	int x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}
int n , t ;
string s ;
void solve(){
	n = read() ;
	cin >> s ;
	set < int > st ;
	for(int i = 1 ; i <= (int)sqrt(n) ; i ++){
		if(n % i == 0){
			st.insert(i) ;
			st.insert(n / i) ;
		}
	}
	int ans = n ;
	for(auto it : st){
		map < string , int > mp ;
		for(int i = 0 ; i <= n - it ; i += it){
			string x ;
			for(int j = i ; j < i + it ; j ++){
				x.push_back(s[j]) ;
			}
			mp[x]++ ;
		}
		if(mp.size() == 1){
			ans = min(ans , it) ;
			break ;
		}
		if(mp.size() == 2){
			vector < string > zz ;
			bool ok = 0 ;
			for(auto [a , b] : mp){
				zz.push_back(a) ;
				if(b == 1)
					ok = 1 ;
			}
			if(!ok)
				continue ;
			int cnt = 0 ; 
			for(int i = 0 ; i < it ; i++){
				if(zz[0][i] != zz[1][i])
					cnt ++ ;
			}
			if(cnt <= 1){
				ans = min(ans , it) ;
				break ;
			}
		}
	}
	cout << ans << endl ;
}
int main()
{
	t = read() ;
	while(t --){
		solve() ;
	}
}

F. 0, 1, 2, Tree!

题意:给你三个数字a,b,c,a表示有a个点有两个孩子,b表示有b个点有一个孩子,c表示有c个点有0个孩子,问能否构建符合条件的有根树(有根树是一个没有循环的连通图,有一个称为根的特殊顶点。在有根树中,在由一条边连接的任意两个顶点中,一个顶点是父顶点(靠近根的顶点),另一个顶点是子顶点。)。
题解:我们分情况讨论,首先先看为-1的情况,如果说一个树的根总数不等于c,那么一定无解。如果a为0,那么很明显如果c不等于1,那么一定无解。如果c等于1,那么答案显然就是b。那么如果a不为0,我们可以累加2的次方,看看加到2的第多少次幂会超出a,假设加到第i次幂大于等于a,如果是正好等于a,那么层数为i,否则层数为i + 1。然后再看最后一层一共有多少个孩子, 说正好等于a,那么孩子的数量就是2的i次方,如果不等于a,那么答案就是2的i + 1次方减去前面的总和加上2的i次方减去n,最后看b,如果前面累加不等于a,那么就先把上一层填满,再往下填即可。
注:整道题思维量比较大,代码很简单。希望大家能耐心读完!
代码:
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e5 + 7 ;
const int mod = 1e9 + 7 ;
inline ll read() {
	ll x = 0, f = 1 ;
	char c = getchar() ;
	while (c > '9' || c < '0') {
		if (c == '-')
			f = -1 ;
		c = getchar() ;
	}
	while (c >= '0' && c <= '9') {
		x = x * 10 + c - '0' ;
		c = getchar() ;
	}
	return x * f ;
}
char s[maxn] ;
ll t , n , d , k , a[maxn] , ans[maxn] ;
struct Node{
	ll val , id ;
	bool friend operator < (const Node a , const Node b){
		return a.val < b.val ;
	}
}b[maxn];
ll Pow(ll x , ll y){
	ll cnt = 1 ;
	while(y){
		if(y % 2)
			cnt = cnt * x ;
		x = x * x ;
		y >>= 1 ;
	}
	return cnt ;
}
ll sum[maxn] ;
void solve(){
	n = read() ;
	d = read() ;
	k = read() ;
	if(n == 0){
		if(k != 1){
			cout << -1 << endl ;
			return ;
		}
		else{
			cout << d << endl ;
			return ;
		}
	}
	ll ans = 0 , sum = 0 , ceng = 1 , ress , rt ;
	for(int i = 0 ; i <= 32 ; i ++){
		ll xx = Pow(2 , (ll)i) ;
		if(ans + xx <= n){
			ans += xx ;
		}
		else{
			if(ans == n){
				sum = Pow(2 , (ll)i) ;
				rt = 0 ;
				ceng = i ;
			}
			else{
				sum = Pow(2 , (ll)(i + 1)) - (ans + Pow(2 , (ll)i) - n) ;	
				rt = Pow(2 , (ll)(i)) - (n - ans) ;
				ceng = i + 1 ;
			}
			break ;
		}
	}
//	cout << rt << endl ;
	if(sum != k){
		cout << -1 << endl ;
		return ;
	}
	else{
		ll B = d ;
		if(B - rt <= 0){
			cout << ceng << endl ;
			return ;
		}
		else{
			B -= rt ;
			while(B > 0){
				B -= sum ;
				ceng ++ ;
			}
			cout << ceng << endl ;
		}
	}
	
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

如果喜欢作者的记得点赞收藏加关注哦~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA中遇到的“cannot access java.lang.String“错误及其解决方案(day8)

intelliJ 今天遇到使用intelliJ遇到了一个新错误&#xff0c;有问题就解决问题是一个程序员最基本的修养&#xff0c;如下&#xff1a; 在上面的代码中&#xff0c;我使用了this.这个关键字&#xff0c;发现出现了以上问题&#xff0c;找了一些资料&#xff0c;不是很明白&am…

Untiy 布局控制器Aspect Ratio Fitter

Aspect Ratio Fitter是Unity中的一种布局控制器组件&#xff0c;用于根据指定的宽高比来调整包含它的UI元素的大小。实际开发中&#xff0c;它可以确保UI元素保持特定的宽高比&#xff0c;无论UI元素的内容或父容器的大小如何变化。 如图为Aspect Ratio Fitter组件的基本属性&…

阿里云服务器价格表(2024年最新阿里云服务器租用优惠价格表)

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

为什么我的微信小程序 窗口背景色backgroundColor设置参数 无效的问题处理记录!

当我们在微信小程序 json 中设置 backgroundColor 时&#xff0c;实际在电脑的模拟器中根本看不到效果。 这是因为 backgroundColor 指的窗体背景颜色&#xff0c;而不是页面的背景颜色&#xff0c;即窗体下拉刷新或上拉加载时露出的背景。在电脑的模拟器中是看不到这个动作的…

目标检测的相关模型图:YOLO系列和RCNN系列

目标检测的相关模型图&#xff1a;YOLO系列和RCNN系列 前言YOLO系列的图展示YOLOpassthroughYOLO2YOLO3YOLO4YOLO5 RCNN系列的图展示有关目标检测发展的 前言 最近好像大家也都在写毕业论文&#xff0c;前段时间跟朋友聊天&#xff0c;突然想起自己之前写画了一些关于YOLO、Fa…

Windows系统搭建Oracle结合内网穿透实现公网访问本地数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

八大技术趋势案例(云计算大数据)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

瑞_Java所有相关环境及软件的安装和卸载_图文超详细(持续更新)

文章目录 JDK1.8资源各种可能的坑Windows环境卸载安装 &#x1f64a; 前言&#xff1a;本文是博主所了解的Java知识所有相关的环境或软件的安装和卸载&#xff08;会持续更新&#xff09; 更新日志 2024-03-28➡️JDK1.8的安装、卸载&#xff08;Windows环境&#xff09; JDK1…

机器学习之决策树现成的模型使用

目录 须知 DecisionTreeClassifier sklearn.tree.plot_tree cost_complexity_pruning_path(X_train, y_train) CART分类树算法 基尼指数 分类树的构建思想 对于离散的数据 对于连续值 剪枝策略 剪枝是什么 剪枝的分类 预剪枝 后剪枝 后剪枝策略体现之威斯康辛州乳…

大模型时代下的“金融业生物识别安全挑战”机遇

作者&#xff1a;中关村科金AI安全攻防实验室 冯月 金融行业正在面临着前所未有的安全挑战&#xff0c;人脸安全事件频发&#xff0c;国家高度重视并提出警告&#xff0c;全行业每年黑产欺诈涉及资金额超过1100亿元。冰山上是安全事件&#xff0c;冰山下隐藏的是“裸奔”的技术…

前端的拖拽序列(drag)

html和css代码如下 <style>.item {width: 200px;height: 50px;background: rgb(15, 226, 219);margin: 10px 0;padding-left: 20px;border-radius: 10px;line-height: 50px;}.item.move {background: transparent;color: transparent;border: 1px dashed #ccc;}</sty…

安卓国内ip代理app,畅游网络

随着移动互联网的普及和快速发展&#xff0c;安卓手机已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;由于地理位置、网络限制或其他因素&#xff0c;我们有时需要改变或隐藏自己的IP地址。这时&#xff0c;安卓国内IP代理App便成为了一个重要的工具。虎观代理…

springdata框架对es集成

什么是spring data框架 Spring Data是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持 map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA(Elasticsearch…)的…

深入Spark与LDA:大规模文本主题分析实战

使用LDA模型和Spark进行文本主题分析 本篇博客介绍了如何使用LDA&#xff08;潜在狄利克雷分配&#xff09;模型和Spark进行文本主题分析。我们的目标是从大量的用户评论中提取出主题。 1. 环境设置 首先&#xff0c;我们需要导入所需的库&#xff0c;包括jieba&#xff08;…

samba实现linux共享文件夹

一、samba安装 sudo apt install samba 二、配置Samba 编辑Samba配置文件sudo vi /etc/samba/smb.conf 在文件末尾添加以下内容&#xff0c;设置一个简单的共享目录&#xff08;替换path_to_share为实际的共享目录路径&#xff09;&#xff1a; [Share] path /path_to_sha…

【React】onClick点击事件传参的4种方式

记录React onClick 点击事件传参的 4 种方式 方式一&#xff1a;使用内联箭头函数 import React, { MouseEvent } from "react";function App() {const handleClick (event: MouseEvent<HTMLButtonElement>, name: string) > {console.log(event)console.…

linux 环境安装配置

安装java17 1.下载安装包 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 2.解压到自定义目录/usr/local/java mkdir /usr/local/java tar zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java 3.配置环境变量 echo export PATH$PATH:/…

Docker 夺命连环 15 问

目录 什么是Docker&#xff1f; Docker的应用场景有哪些&#xff1f; Docker的优点有哪些&#xff1f; Docker与虚拟机的区别是什么&#xff1f; Docker的三大核心是什么&#xff1f; 如何快速安装Docker&#xff1f; 如何修改Docker的存储位置&#xff1f; Docker镜像常…

2024年购买阿里云服务器多少钱?100元到500元年预算

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网aliyunfuwuqi.com整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新…

分享react+three.js展示温湿度采集终端

前言 气象站将采集到的相关气象数据通过GPRS/3G/4G无线网络发送到气象站监测中心&#xff0c;摆脱了地理空间的限制。 前端&#xff1a;气象站主机将采集好的气象数据存储到本地&#xff0c;通过RS485等线路与GPRS/3G/4G无线设备相连。 通信&#xff1a;GPRS/3G/4G无线设备通…
最新文章