Codeforces Round 944 (Div. 4) A - G

div.4只写部分题解了,都比较基础,数学偏多一点,几乎没有算法,有不懂的欢迎评论区提问!

A. My First Sorting Problem

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 a[maxn] , n , m , t ;

void solve(){
	n = read() ;
	m = read() ;
	cout << min(n , m) << " " << max(n , m) << endl ;
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

B. Different String

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 a[maxn] , n , m , t ;
char s[maxn] ;
void solve(){
	scanf("%s" , s + 1) ;
	ll len = strlen(s + 1) ;
	map < int , int > mp ;
	for(int i = 1 ; i <= len ; i ++){
		mp[s[i] - 'a' + 1] ++ ;
	}
	for(auto it : mp){
		if(it.second == len){
			cout << "NO\n" ;
			return ;
		}
	}
	cout << "YES\n" ;
	for(int i = 2 ; i <= len ; i ++){
		cout << s[i] ;
	}
	cout << s[1] << endl ;
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

C. Clock and Strings

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 a[maxn] , n , m , t ;
char s[maxn] ;
ll A , B , C , D ;
void solve(){
	A = read() ;
	B = read() ;
	C = read() ;
	D = read() ;
	if(A > B){
		swap(A , B) ;
	}
	if(((C < A || C > B) && (D < A || D > B)) || (C <= B && C >= A && D <= B && D >= A) ){
		cout << "NO\n" ;
	}
	else{
		cout << "YES\n" ;
	}
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

D. Binary Cut

可以发现,能优化的只有0011这种情况,可以将两块合成一块。

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 a[maxn] , n , m , t ;
char s[maxn] ;
void solve(){
	scanf("%s" , s + 1) ;
	int len = strlen(s + 1) ;
	bool f = 0 ;
	ll sum = 0 ;
	for(int i = 1 ; i <= len ;){
		if(s[i] == '0'){
			sum ++ ;
			ll rt = i ;
			for(int j = i ; j <= len ; j ++){
				if(j == len && s[j] == '0'){
					rt = len + 1 ;
					break ;
				}
				if(s[j] == '0')
					continue ;
				else{
					rt = j ;
					break ;
				}
			}
			i = rt ;
			if(f == 0){
				f = 1 ;
				ll Rt = rt ;
				for(int j = rt ; j <= len ; j ++){
					if(j == len && s[j] == '1'){
						Rt = len + 1 ;
						break ;
					}
					if(s[j] == '1')
						continue ;
					else{
						Rt = j ;
						break ;
					}
				}
				i = Rt ;
			}
			continue ;
		}
		if(s[i] == '1'){
			ll rt = i ;
			for(int j = i ; j <= len ; j ++){
				if(j == len && s[j] == '1'){
					rt = len + 1 ;
					break ;
				}
				if(s[j] == '1')
					continue ;
				else{
					rt = j ;
					break ;
				}
			}
			i = rt ;
			sum ++ ;
		}
	}
	cout << sum << endl ;
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

E. Find the Car

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 , k , q ;
double a[maxn] , b[maxn] ;
double c[maxn] ;
char s[maxn] ;
void solve(){
	n = read() ;
	k = read() ;
	q = read() ;
	for(int i = 1 ; i <= k ; i ++){
		cin >> a[i] ;
	}
	for(int i = 1 ; i <= k ; i ++){
		cin >> b[i] ;
	}
	for(int i = 1 ; i <= k ; i ++){
		c[i] = (double)(a[i] - a[i - 1]) / (double)(b[i] - b[i - 1]) * 1.0 ;
	}
	for(int i = 1 ; i <= q ; i ++){
		double u ;
		cin >> u ;
		ll l = 1 , r = k , ans = -1 ;
		while(l <= r){
			ll mid = (l + r) / 2 ;
			if(a[mid] <= u){
				ans = mid ;
				l = mid + 1 ;
			}
			else{
				r = mid - 1 ;
			}
		}
		if(ans == -1){
			ll dd = (ll)(u / c[1]) ;
			cout << dd << endl ;
		}
		else{
			ll rt = ans + 1 ;
			if(u == a[ans]){ 
				cout << b[ans] << endl ;
				continue ;
			}
			ll dd = (ll)floor((u - a[ans]) / c[rt]) ;
			cout << (ll)dd + (ll)(b[ans]) << endl ;
		}
	}
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

F. Circle Perimeter

看数据范围O(n^2)过不了,所以就想用复杂度更低的方法,可以发现可以枚举一层,然后找到数据范围,用二分求出中间有多少数字,然后统计答案即可。复杂度O(n)

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 a[maxn] , n , m , t ;
char s[maxn] ;
void solve(){
	n = read() ;
	ll l = n * n ;
	ll r = (n + 1) * (n + 1) ;
	ll anss = 0 ;
	for(ll i = 1 ; i <= n ; i ++){
		ll L = l - i * i ;
		ll R = (r - 1) - i * i ;
		ll l = 0 , r = n , ans = -1 ;
		while(l <= r){
			ll mid = (l + r) / 2 ;
			if(mid * mid > L){
				r = mid - 1 ;
			}
			else{
				ans = mid ;
				l = mid + 1 ;
			}
		}
		if(ans * ans != L){
			ans ++ ;
		}
		l = 0 , r = n ;
		ll Ans = -1 ;
		while(l <= r){
			ll mid = (l + r) / 2 ;
			if(mid * mid <= R){
				l = mid + 1 ;
				Ans = mid ;
			}
			else{
				r = mid - 1 ;
			}
		}
		anss += (Ans - ans + 1) * 4 ;
	}
	cout << anss << endl ;
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

G. XOUR

因为a_i xora_j < 4,所以只会和最后两位有关系,如果说其他位有不同,那必然会大于4,所以用map存一下,映射顺序输出即可。

#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
const int maxn = 2e6 + 7 ;
const int mod = 998244353 ;
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 a[maxn] , n , m , t ;
char s[maxn] ;
void solve(){
	n = read() ;
	for(int i = 1 ; i <= n ; i ++){
		a[i] = read() ;
	}
	map < ll , priority_queue < ll > > mp ;
	for(int i = 1 ; i <= n ; i ++){
		mp[a[i] >> 2].push(-a[i]) ;
	}
	for(int i = 1 ; i <= n ; i ++){
		cout << -mp[a[i] >> 2].top() << " " ;
		mp[a[i] >> 2].pop() ;
	}
	cout << endl ;
}
int main(){
	t = read() ;
	while(t --){
		solve() ;
	}
	return 0 ;
}

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

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

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

相关文章

return语句

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 return语句 一、return语句后面跟表达式二、return无返回三、return返回的值和函数返回类型不一致四、return语句执行后,后方仍然存在代码五、存在分支语句&#xff0c;需考虑…

ue引擎游戏开发笔记(37)——实现敌人接收攻击伤害,并作出反应

1.需求分析&#xff1a; 现在已经显示造成实际伤害&#xff0c;但敌人对实际伤害并未产生反馈&#xff0c;例如还击&#xff0c;或者死亡倒地等等&#xff0c;实现敌人对于受击的反馈。 2.操作实现&#xff1a; 1.思路&#xff1a;在动画蓝图中添加死亡动画&#xff0c;并通过…

vue阶段案例,练习filter、map、forEach,双向绑定,三元表达式,以及图片滚动,文字跳动等等。

阶段案例 通过案例来练习双向绑定&#xff0c;三元表达式&#xff0c;以及图片滚动&#xff0c;文字跳动等等。 代码如下&#xff1a; <template><table class"bjtp" ><div class"title" >{{title}}</div><div class"s…

人生是旷野,不是轨道

最近看到一句话&#xff0c;很喜欢&#xff0c;分享一下。"人生是旷野&#xff0c;不是轨道"。人生不是固定的方程式&#xff0c;也没有唯一答案&#xff0c;没有谁生来就应该是什么样。别太被太多世俗观念束缚住手脚&#xff0c;每个人都有权利自由生长&#xff0c;…

二叉树进阶 --- 中

目录 1. find 的递归实现 2. insert 的递归实现 3. erase 的递归实现 3.1. 被删除的节点右孩子为空 3.2. 被删除的节点左孩子为空 3.3. 被删除的节点左右孩子都不为空 4. 析构函数的实现 5. copy constructor的实现 6. 赋值运算符重载 7. 搜索二叉树的完整实现 1. fi…

IM 是什么?

在当今数字化的时代&#xff0c;即时通讯&#xff08;IM&#xff09;已经渗透到人们的日常生活和企业的工作环境中。IM技术的快速i发展为人们提供了一种高效、便捷的沟通方式&#xff0c;不仅推动了社会的信息化进程&#xff0c;也提升了企业的协同效率和竞争力。 作为企业级I…

程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号等的介绍

文章目录 前言一、程序的翻译环境和执行环境二、编译链接过程三、编译的几个阶段四、运行环境五、预定义符号总结 前言 程序环境和预处理、编译链接过程、编译的几个阶段、运行环境、预定义符号的介绍。 一、程序的翻译环境和执行环境 在 ANSI C 的任何一种实现中&#xff0c…

建模电梯的状态图和学生选课ER图

第一题 尝试建模电梯的状态图&#xff08;选做&#xff09; 第二题 学校规定&#xff1a; 一个学生可选修多门课&#xff0c;一门课有若于学生选修。 一个教师可讲授多门课&#xff0c;一门课只有一个教师讲授。 一个学生选修一门课&#xff0c;仅有一个成绩。 学生的属性有学号…

【力扣】63.不同路径 II

原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 目录 1.题目描述 2.思路分析 3.代码实现 1.题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试…

C++11:并发新纪元 —— 深入理解异步编程的力量(1)

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之《C11&#xff1a;并发新纪元 —— 深入理解异步编程的力量》&#xff0c;在这篇文章中&#xff0c;你将会学习到C新特性以及异步编程的好处&#xff0c;以及其如何带来的高性能的魅力&…

RabbitMQ(安装配置以及与SpringBoot整合)

文章目录 1.基本介绍2.Linux下安装配置RabbitMQ1.安装erlang环境1.将文件上传到/opt目录下2.进入/opt目录下&#xff0c;然后安装 2.安装RabbitMQ1.进入/opt目录&#xff0c;安装所需依赖2.安装MQ 3.基本配置1.启动MQ2.查看MQ状态3.安装web管理插件4.安装web管理插件超时的解决…

操作系统基础之磁盘

概述 基本概念 磁盘有正反两个盘面&#xff0c;每个盘面有多个同心圆&#xff0c;每个同心圆是一个磁道&#xff0c;每个同心圆又被划分为多个扇区&#xff0c;数据就被存在扇区中。 磁头首先寻找到对应磁道&#xff0c;然后等到磁盘进行周期旋转到指定的扇区&#xff0c;才…

【SpringBoot篇】基于Redis分布式锁的 误删问题 和 原子性问题

文章目录 &#x1f354;Redis的分布式锁&#x1f6f8;误删问题&#x1f388;解决方法&#x1f50e;代码实现 &#x1f6f8;原子性问题&#x1f339;Lua脚本 ⭐利用Java代码调用Lua脚本改造分布式锁&#x1f50e;代码实现 &#x1f354;Redis的分布式锁 Redis的分布式锁是通过利…

工业中常见大数据技术组件

随着大数据技术在各行各业的广泛应用&#xff0c;数据产品经理的角色也变得越来越重要。了解常见的大数据技术组件对于数据产品经理来说至关重要&#xff0c;因为这有助于他们更好地设计产品架构和功能模块&#xff0c;满足数据处理和分析的需求。在处理海量数据的产品中&#…

【Linux】-网络请求和下载、端口[6]

目录 一、网络请求和下载 1、ping命令 2、wget命令 3、curl命令 二、端口 1、虚拟端口 2、查看端口占用 一、网络请求和下载 1、ping命令 可以通过ping命令&#xff0c;检查指定的网络服务器是否可联通状态 语法&#xff1a;ping [ -c num ] ip或主机名 选项&…

window.location.href的介绍及使用

目录 介绍&#xff1a; 获取当前 URL 设置新的 URL URL 的组成部分 解析 URL 参数 什么是片段标识符的URL&#xff1f; 使用new URL&#xff1a; 输出的部分解释&#xff1a; 假如我们需要获取路径上的最后一级的路径名&#xff1a; 介绍&#xff1a; window.location.h…

2023版brupsuite专业破解安装

安装教程&#xff0c;分两部分&#xff1a; 1、安装java环境、参考链接JAVA安装配置----最详细的教程&#xff08;测试木头人&#xff09;_java安装教程详细-CSDN博客 2、安装2023.4版本brupsuite&#xff1a;参考链接 2023最新版—Brup_Suite安装配置----最详细的教程&…

【数据分析】 JupyterNotebook安装及使用简介

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 在数据分析中&#xff0c;一般用Pycharm编辑代…

大模型面试常考知识点1

文章目录 1. 写出Multi-Head Attention2. Pre-Norm vs Post-Norm3. Layer NormRMS NormBatch Norm 4. SwiGLU从ReLU到SwishSwiGLU 5. AdamW6. 位置编码Transformer位置编码RoPEALibi 7. LoRA初始化 参考文献 1. 写出Multi-Head Attention import torch import torch.nn as nn …

按键配合LDO实现开关功能

今天给大家分享一个学到的按键开关电路&#xff0c;适合没有足够空间给自锁开关的场景&#xff0c;既可以用于USB供电控制也可以用于电池供电控制。话不多说上电路图先。 核心任务就是通过按键控制LDO芯片的使能管脚的电平状态&#xff0c;这枚NCP芯片高电平使能&#xff0c;VB…