Codeforces Round 944 (Div. 4) A - G

news2024/11/17 1:49:53

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 ;
}

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

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

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

相关文章

vuex核心概念-mutations

目录 一、mutations基本认知 二、mutations的基本使用 三、mutations传参语法 四、注意 五、辅助函数&#xff1a;mapMutations 一、mutations基本认知 目标&#xff1a;明确vuex同样遵循单向数据流&#xff0c;组件中不能直接修改仓库的数据。 通过 strict:true可以开启…

掼蛋—开牌三步走

掼蛋是消遣也是一项脑力活动&#xff0c;除了牌运&#xff0c;还要掌握技巧。和大家一起分享一下掼蛋游戏中的“开牌三步走”技巧。 1、快速理牌 目的&#xff1a;潜力最大化 开局时可以快速查看一下自己的同花顺&#xff0c;优先保留不损害其他炸弹的同花顺&#xff0c;并及时…

使用 sudo apt upgrade 出现的提示

┌────────────────────────────────────────────────┤ Pending kernel upgrade ├────────────────────────────────────────────────┐ │ …

106短信群发平台在金融和法务行业的应用分析

一、金融行业应用 1.客户通知与提醒&#xff1a;银行、证券、保险等金融机构经常需要向客户发送各类通知和提醒&#xff0c;如账户余额变动、交易确认、扣费通知、理财产品到期提醒等。106短信群发平台可以快速、准确地将这些信息发送到客户的手机上&#xff0c;确保客户及时获…

c语言题库之多个数组从两边移动向中间汇聚

文章目录 题目分析代码实现代码分析 题目 c语言题库之多个数组从两边移动向中间汇聚 呈现效果&#xff1a;输入想要输入的字符数组呈现数组从两边向中间逐渐打开的样子 分析 首先我们需要一组我们想要输入的字符数组用来展示打开的字符其次我们需要进行对数组的替换&#x…

批量生成大量附件(如:excel,txt,pdf)压缩包等文件时前端超时,采用mq+redis异步处理和多线程优化提升性能

一.首先分析一下场景&#xff1a;项目中我需要从财务模块去取单证模块的数据来生成一个个excel文件 在单证那个一个提单号就是一个excel文件&#xff0c;我们这边一个财务发票可能会查出几千个提单&#xff0c;也就是会生成几百个excel&#xff0c;然后压缩为一个压缩包&#x…

接口自动化测试很难掌握吗?

一. 什么是接口测试 接口测试是一种软件测试方法&#xff0c;用于验证不同软件组件之间的通信接口是否按预期工作。在接口测试中&#xff0c;测试人员会发送请求并检查接收到的响应&#xff0c;以确保接口在不同场景下都能正常工作。 就工具而言&#xff0c;常见的测试工具有…

AI写作推荐-写文ai-AI在线写作生成器-3步完成写作任务

AI写作利器&#xff1a;推荐几款神助攻文案创作工具 随着技术的进步&#xff0c;人工智能&#xff08;AI&#xff09;已达到高级水平&#xff0c;在众多领域展现其强大能力。 在文本创作的领域&#xff0c;人工智能&#xff08;AI&#xff09;应用已显著地提升了写作效率和创意…

【计算机网络】物理层传输介质 习题3

双绞线是用两根绝缘导线绞合而成的&#xff0c;绞合的目的是( )。 A.减少干扰 B.提高传输速度 C.增大传输距离 D.增大抗拉强度 在电缆中采用屏蔽技术带来的好处主要是( ) A.减少信号衰减 B. 减少电磁干扰辐射 C.减少物理损坏 D. 减少电缆的阻抗 利用一根同轴电缆互连主机构成…

多功能投票小程序基于ThinkPHP+FastAdmin+Uniapp(源码搭建/上线/运营/售后/维护更新)

基于ThinkPHPFastAdminUniapp开发的多功能系统&#xff0c;支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署&#xff0c;Uniapp提供全部无加密源码。 功能特性

Shopee虾皮行业分析:灯具类目市场价值超15亿,打造爆品先选好品

在东南亚这个充满活力的地区&#xff0c;灯具市场正如同其璀璨的夜空&#xff0c;闪烁着无限的可能性。 从繁华的新加坡到古老的曼谷&#xff0c;从繁忙的雅加达到宁静的河内&#xff0c;灯具在每个角落都扮演着至关重要的角色。 它们不仅照亮了家庭的温馨空间&#xff0c;也…

【C语言】/*操作符(下)*/

目录 一、操作符的分类 二、二进制和进制转换 2.1 进制 2.2 进制之间的转换 三、原码、反码、补码 四、单目操作符 五、逗号表达式 六、下标引用操作符[] 七、函数调用操作符() 八、结构体成员访问操作符 8.1 直接访问操作符(.) 8.2 间接访问操作符(->) 九、操作符…

【智能算法应用】基于果蝇算法-BP回归预测(FOA-BP)

目录 1.算法原理2.数学模型3.结果展示4.代码获取 1.算法原理 【智能算法应用】智能算法优化BP神经网络思路【智能算法】果蝇算法&#xff08;FOA&#xff09;原理及实现 2.数学模型 数据集样本特征数为13&#xff0c;适应度函数设计为&#xff1a; f i t n e s s e r r o…

skywalking的使用

文章目录 介绍概念介绍探针agent后台服务 使用后台界面查询异常接口查看访问量 遇到的问题 介绍 官网 https://skywalking.apache.org/ 安装包下载 https://skyapm.github.io/document-cn-translation-of-skywalking/ 组成 Agent&#xff08;探针&#xff09;&#xff1a;Ag…

UIKit之UIButton

功能需求&#xff1a; 点击按钮切换按钮的文字和背景图片&#xff0c;同时点击上下左右可以移动图片位置&#xff0c;点击加或减可以放大或缩小图片。 分析&#xff1a; 实现一个UIView的子类即可&#xff0c;该子类包含多个按钮。 实现步骤&#xff1a; 使用OC语言&#xf…

使用pandas的merge()和join()函数进行数据处理

目录 一、引言 二、pandas的merge()函数 基本用法 实战案例 三、pandas的join()函数 基本用法 实战案例 四、merge()与join()的比较与选择 使用场景&#xff1a; 灵活性&#xff1a; 选择建议&#xff1a; 五、进阶案例与代码 六、总结 一、引言 在数据分析和处理…

stata空间计量模型基础+检验命令LM检验、sem、门槛+arcgis画图

目录 怎么安装stata命令 3怎么使用已有的数据 4数据编辑器中查看数据 4怎么删除不要的列 4直接将字符型变量转化为数值型的命令 4改变字符长度 4描述分析 4取对数 5相关性分析 5单位根检验 5权重矩阵标准化 6计算泰尔指数 6做核密度图 7Moran’s I 指数 8空间计量模型 9LM检验…

Java | Leetcode Java题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; class Solution {private String line(List<String> list,int maxWidth,int totalLength,boolean isLast){StringBuilder sb new StringBuilder();sb.append(list.get(0));if(list.size() 1){String ap " ".repeat(maxW…

interview_bak

flink内存管理 JVM 存在的几个问题: Java 对象存储密度低。一个只包含 boolean 属性的对象占用了16个字节内存:对象头占了8个,boolean 属性占了1个,对齐填充占了7个。而实际上只需要一个bit(1/8字节)就够了。Full GC 会极大地影响性能,尤其是为了处理更大数据而开了很大…

Nest.js中使用任务调度

java中的xxl在nestJs中是有内置的任务调度nestjs/schedule npm install --save nestjs/schedule 在model中引入使用 在service中直接使用就行 具体间隔多久看官方配置 Task Scheduling | NestJS 中文文档 | NestJS 中文网