【CF比赛记录】 —— Codeforces Round 920 (Div. 3)(A、B、C、D)

🌏博客主页:PH_modest的博客主页
🚩当前专栏:CF比赛记录
💌其他专栏:
🔴每日一题
🟡 cf闯关练习
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!

A. Square

👉传送门👈
在这里插入图片描述

1.Tutorial

直接暴力每个点直接的距离,然后排个序,排序后的结果为:宽、宽、长、长、斜边、斜边,第一个和第三个就是宽和长,因为一个点和另外几个点组成的边分为三种:宽、长、斜边。根据斜边大于宽和长就可以得到前面的结论。

2.Solution

//https://codeforces.com/contest/1921/problem/A
//
//
#include<bits/stdc++.h>
#define int long long
using namespace std;

int f(int x,int y)
{
	return sqrt(x*x+y*y);
}

void solve()
{
	int s[8];
	int a,aa,b,bb,c,cc,d,dd;
	cin>>a>>aa>>b>>bb>>c>>cc>>d>>dd;
	s[0]=f(abs(a-b),abs(aa-bb));
	s[1]=f(abs(a-c),abs(aa-cc));
	s[2]=f(abs(a-d),abs(aa-dd));
	s[3]=f(abs(b-c),abs(bb-cc));
	s[4]=f(abs(b-d),abs(bb-dd));
	s[5]=f(abs(c-d),abs(cc-dd));
	sort(s,s+6);
	int x=s[0],y=s[2];
	cout<<x*y<<"\n";
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}

3.Conclusion

这边不建议使用hypot来求斜边(我一开始用了之后结果会出错,浪费了我好长时间


B. Arranging Cats

👉传送门👈
在这里插入图片描述

1.Tutorial

  • 结论:分别记录操作一和操作二的次数,最大的就是结果。
  • 推导:分别统计需要放入猫的数量(操作一,pt),和需要移除猫的数量(操作二,mov),因为这两个可以合并成一个动作完成(操作三),两个值当中求取一个最小的(minn),这个就是合并成操作三,然后用这两个数的较大值减去较小值就是得到需要单独完成的次数(maxx-minn),两个相加就得到结果了(minn+maxx-minn)。

2.Solution

//https://codeforces.com/contest/1921/problem/B
//
//
#include<bits/stdc++.h>
#define int long long
using namespace std;

void solve()
{
	int n;
	cin>>n;
	string s,f;
	cin>>s>>f;
	int mov=0,pt=0;
	for(int i=0;i<n;i++)
	{
		if(s[i]=='1'&&f[i]=='0')
		{
			mov++;
		}
		else if(s[i]=='0'&&f[i]=='1')
		{
			pt++;
		}
	}
	int minn=min(mov,pt);
	int maxx=max(mov,pt);
	int ans=minn+maxx-minn;
	cout<<ans<<"\n";
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}

C. Sending Messages

👉传送门👈
在这里插入图片描述

1.Tutorial

每次可以选择两种操作:

  • 操作一:不黑屏,一直亮屏到下一次发消息(x*a)(x表示经过的时间,a表示单位时间失去的电量)
  • 操作二:黑屏,到下一次发消息再亮屏(b)(b表示操作二需要花费的电量)

只需要每次发消息前比较一下哪种情况消耗的电量少,最后判断一下电量是否大于0即可

2.Solution

//https://codeforces.com/contest/1921/problem/C
//
//
#include<bits/stdc++.h>
#define int long long
using namespace std;

int s[200020];
int v[200020];
void solve()
{
	int n,f,a,b;
	cin>>n>>f>>a>>b;
	s[0]=0;
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
	}
	for(int i=0;i<n;i++)
	{
		v[i]=s[i+1]-s[i];
		if(v[i]*a<b)
		{
			f-=(v[i]*a);
		}
		else
		{
			f-=b;
		}
	}
	if(f>0) cout<<"YES\n";
	else cout<<"NO\n";
	
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}


3.Conclusion

这种题目很容易想复杂,建议先以简单的情况写,发现结果不对再改,不然很浪费时间


D. Very Different Array

👉传送门👈
在这里插入图片描述

1.Tutorial

贪心
每次肯定是选差值最大的,差值最大会在两种情况下产生:

  • a数组中最大的 - b数组中最小的
  • b数组中最大的 - a数组中最小的

所以只需要比较这两个值,取最大值即可

具体操作就是先将两个数组排序,因为是直接判断,顺序对结果没有影响,然后将排好序的数组分别尾插到双端队列中(方便尾删和头删),然后遍历判断即可

2.Solution

//https://codeforces.com/contest/1921/problem/D
//
//
#include<bits/stdc++.h>
#define int long long
using namespace std;

int a[200020];
int b[200020];
deque<int>s;
deque<int>v;
int ans=0;
int k=0;
int m,n;

void solve()
{
	s.clear();
	v.clear();
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(int i=0;i<m;i++)
	{
		cin>>b[i];
	}
	sort(a,a+n);
	sort(b,b+m);
	for(int i=0;i<n;i++)
	{
		s.push_back(a[i]);
	}
	for(int i=0;i<m;i++)
	{
		v.push_back(b[i]);
	}
	ans=0;
	for(k=0;k<n;k++)
	{
		if(abs(s.back()-v.front())>abs(v.back()-s.front()))
		{
			ans+=(abs(s.back()-v.front()));
			s.pop_back();
			v.pop_front();
		}
		else
		{
			ans+=(abs(v.back()-s.front()));
			s.pop_front();
			v.pop_back();
		}
	}
	cout<<ans<<"\n";
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}


最后:

CF比赛记录系列旨在记录比赛过程,所以对代码的解释并不会特别详细,但足够引导大家写出来,选的题目都不会特别难,但也不是特别简单,比较考验大家的基础和应用能力,我希望能够将这个系列一直写下去,也希望大家能够和我一起坚持每天写代码。

之后每个星期都会不定期更新codeforces和atcoder上的题目,想要学习算法的友友们千万别错过了,有什么疑问欢迎大家在评论区留言或者私信博主!

在这里送大家一句话:广积粮,缓称王!

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

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

相关文章

《红色警戒》开源:重温经典游戏! | 开源日报 No.152

electronicarts/CnC_Remastered_Collection Stars: 17.6k License: NOASSERTION CnC_Remastered_Collection 是一个提供了《泰伯利亚黎明》和《红色警戒》源代码的开源项目。 该项目的主要功能是提供经典游戏命令与征服的重新制作版本。该项目具有改进和优化过的图形和音频效…

idea添加python虚拟环境

新建一个项目 import numpy as np import matplotlib.pyplot as pltif __name__ __main__:# 生成x值&#xff0c;例如在[-2π, 2π]范围内x np.linspace(-2 * np.pi, 2 * np.pi, 1000)# 计算sin(x)的值y np.sin(x)# 绘制图形plt.plot(x, y)plt.title(sin(x) Function)plt.xl…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集

上一篇&#xff1a;[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 文章目录 一、串口输出(1) 简介(2) 示例代码(3) 仿真效果 二、串口输入(1) 简介(2) 示例代码(3) 仿真效果 三、ADC采集(1) 简介(2) 示例代码&#xff08;电压&#xff09;(3) 仿真效果 &#xff08;…

STM32CubeMX配置定时器输入捕获功能

STM32CubeMX配置定时器输入捕获功能 0.前言一、方法简介二、STM32CubeMX配置1.生成PWM信号2.配置TIM3_CH1进行采样3.占空比计算 三、总结 参考文章&#xff1a;CubeMX系列教程——11 定时器输入捕获 0.前言 最近在学习江科大STM32教程的原理部分时&#xff0c;发现该教程中使用…

【EI会议征稿通知】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议&#xff08;DSCC 2024&#xff09; 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…

使用Rancher管理Kubernetes集群

部署前规划 整个部署包括2个部分&#xff0c;一是管理集群部署&#xff0c;二是k8s集群部署。管理集群功能主要提供web界面方式管理k8s集群。正常情况&#xff0c;管理集群3个节点即可&#xff0c;k8s集群至少3个。本文以3节点管理集群&#xff0c;3节点k8s集群为例 说明部署过…

【大模型研究】(1):从零开始部署书生·浦语2-20B大模型,使用fastchat和webui部署测试,autodl申请2张显卡,占用显存40G可以运行

1&#xff0c;演示视频 https://www.bilibili.com/video/BV1pT4y1h7Af/ 【大模型研究】&#xff08;1&#xff09;&#xff1a;从零开始部署书生浦语2-20B大模型&#xff0c;使用fastchat和webui部署测试&#xff0c;autodl申请2张显卡&#xff0c;占用显存40G可以运行 2&…

【Web前端开发基础】CSS的盒子模型

CSS的盒子模型 一、学习目标 能够认识不同选择器的优先级公式能够进行CSS权重叠加计算&#xff0c;分析并解决CSS 冲突问题能够认识盒子模型的组成部分能够掌握盒子模型的边框、内边距、外边距的作用及简写形式能够计算盒子的实际大小能够了解外边距折叠现象&#xff0c;并知…

【Go面试向】rune和byte类型的认识与使用

【Go】rune和byte类型的认识与使用 大家好 我是寸铁&#x1f44a; 总结了一篇rune和byte类型的认识与使用的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; byte和rune类型定义 byte,占用1个字节&#xff0c;共8个比特位&#xff0c;所以它实际上和uint8没什么本质区别,它表示…

第十四课:eNSP AAA配置教程

一、AAA介绍 AAA是Authentication&#xff08;认证&#xff09;、Authorization&#xff08;授权&#xff09;和Accounting&#xff08;计费&#xff09;的简称&#xff0c;是一种管理框架&#xff0c;它提供了授权部分用户访问指定资源和记录这些用户操作行为的安全机制。因其…

ip_vs 的管理以及 keepalived + lvs 案例

ip_vs 的管理 ipvsadm 与 keepalived for lvs ipvsadm 命令及参数介绍 部署和配置LVS服务会经常用到一些命令&#xff0c;如ipvsadm&#xff0c;可以使用“ipvsadm -help”命令查看使用帮助。 ipvsadm 命令的常用参数及其说明如下&#xff1a; # 添加虚拟服务器# 语法&#x…

计算机网络自顶向下Wireshark labs1-Intro

Wireshark labs1 实验文档&#xff1a;http://www-net.cs.umass.edu/wireshark-labs/Wireshark_Intro_v8.0.pdf 介绍 加深对网络协议的理解通常可以通过观察协议的运行和不断调试协议来大大加深&#xff0c;具体而言&#xff0c;就是观察两个协议实体之间交换的报文序列&…

python系列-顺序/条件/循环语句

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” 目录 顺序语句 条件语句 什么是条件语句 语法格式 缩进和代码块 空语句pass 循环语句 while循环 for循环 continue break 顺序语句 默认情况下&#xff0c;Python的代码执行…

精准核酸检测 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 为了达到新冠疫情精准防控的需要&#xff0c;为了避免全员核酸检测带来的浪费&#xff0c;需要精准圈定可能被感染的人群。 现在根据传染病流调以及大数据分析&a…

Linux第34步_TF-A移植的第2步_修改设备树和tf-a.tsv

在虚拟机中&#xff0c;使用VSCode打开linux /atk-mp1/atk-mp1/my-tfa/目录下tf-a.code-workspace”&#xff1b; 找到“tf-a-stm32mp-2.2.r1/fdts”目录&#xff0c;就是设备树文件所在的目录。 见下图&#xff1a; 一、修改“stm32mp157d-atk.dts” 修改后&#xff0c;见下…

日志平台搭建手册

1. Java环境安装和配置 JDK要求安装1.8版本&#xff0c;安装可以参考《Linux安装JDK完整步骤》。 2. 创建用户 创建elk用户&#xff0c;用来管理elk相关的服务&#xff0c;包括&#xff1a;filebeat、logstash、elasticsearch、kibana。执行命令&#xff1a; useradd elk …

VC++中使用OpenCV进行人脸检测

VC中使用OpenCV进行人脸检测 对于上面的图像&#xff0c;如何使用OpenCV进行人脸检测呢&#xff1f; 使用OpenCV进行人脸检测十分简单&#xff0c;OpenCV官网给了一个Python人脸检测的示例程序&#xff0c; objectDetection.py代码如下&#xff1a; from __future__ import p…

计算机网络-分层结构,协议,接口,服务

文章目录 总览为什么要分层怎样分层正式认识分层概念小结 总览 为什么要分层 发送文件前要做的准备工作很多 把这个准备工作分层小问题解决&#xff0c;也就分层解决 怎样分层 每层相互独立&#xff0c;每层做的工作不同 界面自然清晰&#xff0c;层与层之间的接口能够体现…

(2)(2.1) Andruav Android Cellular(二)

文章目录 前言 5 Andruav Web Client 6 Andruav Telemetry 7 Andruav高级功能 8 将Andruav与SITL配合使用 9 FAQ 10 术语表 前言 Andruav 是一个基于安卓的互联系统&#xff0c;它将安卓手机作为公司计算机&#xff0c;为你的无人机和遥控车增添先进功能。 5 Andruav W…

【Java】IDEA集成开发环境工具切换JDK和设置环境变量

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…