【CF闯关练习】—— 900分段

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

一.关卡1(00:11(+1))

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

题目大意:


给你一个大小为 n ∗ n n * n nn的棋盘( n n n 行, n n n 列)和两个大小为 n n n 的正整数数组 a a a b b b

你的任务是在棋盘上放置筹码,使每个单元格 ( i , j ) (i, j) (i,j) 都满足以下条件:

  • ( i , j ) (i, j) (i,j) 单元格在同一列或同一行中至少存在一个筹码。也就是说,存在这样一个单元格 ( x , y ) (x, y) (x,y) ,即该单元格中有一个筹码,并且 x = i x = i x=i y = j y = j y=j (或两者都有)。

( i , j ) (i, j) (i,j) 格中放入一个筹码的代价等于 a i + b j a_i + b _j ai+bj

例如, n = 3 n=3 n=3 a = [ 1 , 4 , 1 ] a=[1, 4, 1] a=[1,4,1] b = [ 3 , 2 , 2 ] b=[3, 2, 2] b=[3,2,2] 。其中一种可能的筹码放置方式如下:

白色方格是空的

该布局的总成本为 ( 1 + 3 ) + ( 1 + 2 ) + ( 1 + 2 ) = 10 (1+3) + (1+2) + (1+2) = 10 (1+3)+(1+2)+(1+2)=10

请根据上述规则计算可能的最小筹码放置总成本。


1.Tutorial

分两种情况,①从数组a中找一个最小的数,分别和b数组相加;②从数组b中找一个最小的数,分别和a数组相加。最后取较小者

2.Solution

//https://codeforces.com/problemset/problem/1879/B
//00:11(-1)
//分两种情况,①从数组a中找一个最小的数,分别和b数组相加;②从数组b中找一个最小的数,分别和a数组相加。最后取较小者
//注意数据范围
#include<iostream>
#include<algorithm>
#include<string>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<cstring>
#define int long long
using namespace std;

int a[300020];
int b[300020];

void solve()
{
    int n;
    cin>>n;
    int mina=1e9;
    int minb=1e9;
    for(int i=0;i<n;i++)
    {
    	cin>>a[i];
    	mina=min(mina,a[i]);
	}
	for(int i=0;i<n;i++)
	{
		cin>>b[i];
		minb=min(minb,b[i]);
	}
	int ansa=0,ansb=0;
	for(int i=0;i<n;i++)
	{
		ansa+=minb+a[i];
		ansb+=mina+b[i];
	}
	int ans=min(ansa,ansb);
	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;
}

3.Conclusion

注意数据范围,第一次写没注意范围以为是2e5结果TLE了,引以为戒


二.关卡2(00:09(+1))

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

题目大意:


Aca 和 Milovan 是两位同为竞技程序员的朋友,他们决定给 Vasilije 出一道难题来测试他的技能。

给 Vasilije 三个正整数: n n n k k k x x x ,他必须判断能否在 1 1 1 n n n 之间选择 k k k 个不同的整数,使它们的和等于 x x x

由于瓦西里耶现在在塞尔维亚最奇怪的城市卡察克,也就是阿卡和米洛万居住的地方,所以他觉得这个问题很奇怪。所以他需要你的帮助来解决这个问题。


1.Tutorial

求出k个数字相加的最小值和最大值,注意求取时不要循环,直接用公式

2.Solution

//https://codeforces.com/problemset/problem/1878/C
//00:09(-1)
//求出k个数字相加的最小值和最大值,注意求取时不要循环,直接用公式
#include<iostream>
#include<algorithm>
#include<string>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<cstring>
#define int long long
using namespace std;

void solve()
{
	int n,k,x;
	cin>>n>>k>>x;
	int minn=(1+k)*k/2;
	int maxx=(n+n-k+1)*k/2;
	if(x>=minn&&x<=maxx)
	{
		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(00:20)

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

题目大意:


在中考期间,Reycloer 遇到了一个有趣的问题,但他无法立即想出解决办法。时间不多了!请帮助他。

最初,你得到一个由 n ≥ 2 n \ge 2 n2 个整数组成的数组 a a a ,你想将其中的所有元素都改为 0 0 0

在一次操作中,你选择两个索引 l l l r r r ( 1 ≤ l ≤ r ≤ n 1\le l\le r\le n 1lrn ),并执行以下操作:

  • KaTeX parse error: Expected 'EOF', got '&' at position 5: s=a &̲#95; l\oplus a … ,其中 ⊕ \oplus 表示 bitwise XOR 运算;
  • 然后,对于所有 l ≤ i ≤ r l\le i\le r lir ,用 s s s 替换 a i a _ i ai

上述操作以任何顺序进行,总共最多可以使用 8次。

找出一个运算序列,使得按顺序进行运算后,a中的所有元素都等于0。可以证明解总是存在的。


1.Tutorial

分两种情况:①n为偶数时,先将所有数从头到尾异或一遍,之后所有数都变成相同的数,再异或一遍所有数就变成0了,只需要2次;②n为奇数,方法和偶数一样,只不过多了几步,需要先将第一个数变为0,然后再将后面偶数个按照偶数的方法变为0,一共4次

2.Solution

//https://codeforces.com/problemset/problem/1869/A
//00:20
//分两种情况:①n为偶数时,先将所有数从头到尾异或一遍,之后所有数都变成相同的数,再异或一遍所有数就变成0了,只需要2次;②n为奇数,方法和偶数一样,只不过多了几步,需要先将第一个数变为0,然后再将后面偶数个按照偶数的方法变为0,一共4次
//
#include<iostream>
#include<algorithm>
#include<string>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<cstring>
#define int long long
using namespace std;

int s[200020];

void solve()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>s[i];
	}
	if(n%2==0)
	{
		cout<<"2"<<"\n";
		cout<<"1 "<<n<<"\n";
		cout<<"1 "<<n<<"\n";
	}
	else
	{
		cout<<"4"<<"\n";
		cout<<"1 "<<n<<"\n";
		cout<<"1 2"<<"\n";
		cout<<"2 "<<n<<"\n";
		cout<<"2 "<<n<<"\n";
	}
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}




四.关卡4(WA)

👉传送门👈

题目大意:


括号序列是由字符"(“和/或”)"组成的字符串。正则括号序列是指可以通过在括号序列的原始字符之间插入字符 "1 "和 "+"来转换成正确算术表达式的括号序列。例如

  • 括号序列"()() “和”(()) “是正则表达式(可分别转换为”(1)+(1) “和”((1+1)+1)");
  • 括号序列")(“、”(“和”) "则不规则。

给你一个括号序列 s s s ,我们把它的长度定义为 n n n 。你的任务是找出一个长度为 2 n 2n 2n 的正则括号序列 t t t ,使得 s s s 出现在括号序列 s s s 中。作为连续的子串出现在 t t t 中,或者报告没有这样的序列。


1.Tutorial

  • 如果有连续相同的就以()()的形式输出,如果没有就以(())的形式输出;
  • 字符串判断是否有字串:ans.find(s)==string::npos,如果为真说明s不是ans的字串

2.Solution

//https://codeforces.com/problemset/problem/1860/A
//WA
//如果有连续相同的就以()()的形式输出,如果没有就以(())的形式输出
//字符串判断是否有字串:ans.find(s)==string::npos,如果为真说明s不是ans的字串
#include<iostream>
#include<algorithm>
#include<string>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<cstring>
#define int long long
using namespace std;

void solve()
{
	string s;
	cin>>s;
	int flag=0;
	for(int i=0;i<s.size()-1;i++)
	{
		if(s[i]==s[i+1])
		{
			flag=1;
			break;
		}
	}
	if(flag==1)
	{
		string ans;
		for(int i=0;i<s.size();i++)
		{
			ans+="()";
		}
		if(ans.find(s)==string::npos)
		{
			cout<<"YES"<<"\n";
			cout<<ans<<"\n";
		}
		else
		{
			cout<<"NO"<<"\n";
		}
	}
	else
	{
		string ans;
		for(int i=0;i<s.size();i++)
		{
			ans+="(";
		}
		for(int i=0;i<s.size();i++)
		{
			ans+=")";
		}
		if(ans.find(s)==string::npos)
		{
			cout<<"YES"<<"\n";
			cout<<ans<<"\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

多考虑考虑特殊情况


五.关卡5(00:39(+1))

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

题目大意:


鲍勃和卡罗尔和爱丽丝玩了一整天,现在该回家了。爱丽丝、鲍勃和卡罗尔分别住在一个无限大的二维网格中的 A A A B B B C C C 单元格里。现在,他们都在 A A A 单元格中。

如果鲍勃(或卡罗尔)在某个单元格中,他(她)可以移动到邻近的单元格中。如果两个单元格共用一条边,则称为相邻单元格。例如, ( 3 , 5 ) (3, 5) (3,5) 单元格有四个相邻单元格: ( 2 , 5 ) (2, 5) (2,5) ( 4 , 5 ) (4, 5) (4,5) ( 3 , 6 ) (3, 6) (3,6) ( 3 , 4 ) (3, 4) (3,4)

鲍勃想回到 B B B 单元格,卡罗尔想回到 C C C 单元格。他们都想沿着最短的路径走,也就是由尽可能少的单元格组成的路径。但是他们也想一起走。

如果鲍勃和卡罗尔各自走一条最短的路径回家,他们最多可以一起走多少个单元格?


1.Tutorial

主要思路就是判断B、C两个点关于A点的位置(A看成是原点,看B、C在第几象限),分情况讨论,讨论关于象限的位置,以及是否在同一坐标轴上

2.Solution

//https://codeforces.com/problemset/problem/1845/B
//00:39(+1)
//主要思路就是判断B、C两个点关于A点的位置(A看成是原点,看B、C在第几象限),分情况讨论,讨论关于象限的位置,以及是否在同一坐标轴上
#include<iostream>
#include<algorithm>
#include<string>
#include<deque>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<cstring>
#define int long long
using namespace std;

void solve()
{
	int xa,ya,xb,yb,xc,yc;
	cin>>xa>>ya>>xb>>yb>>xc>>yc;
	int subb1=0,subb2=0,subc1=0,subc2=0;
	subb1=xb-xa;
	subb2=yb-ya;
	subc1=xc-xa;
	subc2=yc-ya;
	int ans=0;
	//同向无0
	if(subb1*subc1>0&&subb2*subc2>0)
	{
		int minx=min(abs(subb1),abs(subc1));
		int miny=min(abs(subb2),abs(subc2));
		ans=minx+miny;
		cout<<ans+1<<"\n";
	}
	//有0
	else if(subb1*subc1>=0&&subb2*subc2>=0)
	{
		if(subb1*subc1==0)
		{
			ans=min(abs(subb2),abs(subc2));
		}
		else
		{
			ans=min(abs(subb1),abs(subc1));
		}
		cout<<ans+1<<"\n";
	}
	else if(subb1*subc1>0||subb2*subc2>0)
	{
		if(subb1*subc1>0)
		{
			ans=min(abs(subb1),abs(subc1));
		}
		else
		{
			ans=min(abs(subb2),abs(subc2));
		}
		cout<<ans+1<<"\n";
	}
	else
	{
		cout<<"1"<<"\n";
	}
}
signed main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--)
	{
		solve();
	}
	return 0;
}




最后:

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

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

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

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

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

相关文章

GPTs | Actions应用案例

上篇文章说道&#xff0c;如何使用创建的GPTs通过API接口去获取外部的一些信息&#xff0c;然后把获取的外部信息返回给ChatGPT让它加工出来&#xff0c;回答你的问题&#xff0c;今天我们就来做一个通俗易懂的小案例&#xff0c;让大家来初步了解一下它的使用法&#xff01; …

基于AE、VAE 和 VQ-VAE的图像生成

AE 是将数据映直接映射为数值code&#xff08;确定的数值&#xff09;&#xff0c;主要用于图像压缩与还原VAE是先将数据映射为分布&#xff0c;再从分布中采样得到数值code&#xff0c;主要用于图像生成。AQ-VAE是在原始VAE基础上多了一步Vector Quantization矢量量化操作&…

STM32的以太网外设+PHY(LAN8720)使用详解(1):ETH和PHY介绍

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 以太网外设&#xff08;ETH&#xff09; 1.1 以太网外设&#xff08;ETH&#xff09;简介 STM32F4系列MCU内部集成了一个以太网外设&#xff08;ETH&#xff09;&#xff0c;可以通过介…

DRF之引入

目录 一、web应用模式 【1】前后端混合开发 【2】前后端分离 二、API接口 三、接口测试工具&#xff1a;Postman 四、RESTful API规范 【1】什么是RESTful 【2】RESTful API的规范 2.1 数据的安全保障 2.2 接口特征表现 2.3 多数据版本共存 2.4 数据即是资源&#…

2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析

从战争中学习战争。对于参加2024年PMP考试的小伙伴来说&#xff0c;最有效的学习方式是这样地&#xff1a;①阅读了教材&#xff08;PMBOK6、7和敏捷&#xff09;&#xff0c;了解基本概念&#xff1b;②反复刷近期的PMP考试真题&#xff0c;查漏补缺。 为此&#xff0c;华研荟…

华为云Stack 8.X流量模型分析(三)

三、VPC内部二层流量模型分析 1.不同宿主机下虚拟机互访 VM1发送arp请求&#xff0c;arp报文根据流表到达br-tun&#xff0c;br-tun给予VM1到达VM2的MAC信息。此时arp报文不出宿主机&#xff08;Host1&#xff09;&#xff1b; **注意&#xff1a;**br-tun内的信息是由管理平…

2023年PMP证书的含金量有多高?对于企业来说有多大的价值?

PMP含金量更多的是“敲门砖”作用&#xff0c;公司招聘的门槛 当然现在PMP管理模式也很热门&#xff0c;各大企业都有引进改良应用在公司的项目上&#xff0c;之前在校友群里面大家在讨论PMP 的作用也有说到这一点&#xff0c;给大家看看吧。 至于为什么PMP认证从国外引进大陆…

尺寸公差分析与尺寸链计算软件-DTAS3D到底能给我们带来哪些价值?

【技能】DTAS3D能给我们带来哪些价值&#xff1f; DTAS3D是一款高度集成的公差分析软件&#xff0c;旨在为产品开发团队提供准确的建议&#xff0c;从而放心地将设计发布给制造部门。下面是DTAS3D的关键价值和应用: 1.与三维CAD无缝集成: DTAS3D与三维CAD软件 (CATIA、NX、Cr…

如何进行USB丢弃攻击?

USB丢弃攻击&#xff0c;类似于一场表演艺术&#xff0c;您需要构建一个引人入胜的故事&#xff0c;激发目标的好奇心&#xff0c;让他们忽略基本的安全意识&#xff0c;插入您精心准备的USB设备! 本文章仅限娱乐&#xff0c;请勿模仿或进行违法活动&#xff01; 一、选择放置…

提示“由于找不到mfc140u.dll,无法继续执行代码”如何解决?

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是找不到某个动态链接库文件&#xff0c;比如mfc140u.dll。这个问题可能会导致某些应用程序无法正常运行或打开。 一、关于找不到mfc140u.dll文件造成会的问题 mfc140u.dll是Visual C中的一个…

深眸科技以AI+3D视觉技术引领技术创新,赋予工业自动化新的活力

随着工业4.0和智能制造时代的到来&#xff0c;3D机器视觉在工业各领域的应用越来越重要。这种技术改变了传统工业的生产方式&#xff0c;为现代工业带来了更高的生产效率和更精确的质量控制&#xff0c;广泛涉及物体识别、产品检测、尺寸测量、视觉引导定位等环节。 在工业领域…

Qt制作定时关机小程序

文章目录 完成效果图ui界面ui样图 main函数窗口文件头文件cpp文件 引言 一般定时关机采用命令行模式&#xff0c;还需要我们计算在多久后关机&#xff0c;我们可以做一个小程序来定时关机 完成效果图 ui界面 <?xml version"1.0" encoding"UTF-8"?>…

微信小程序开发系列-02注册小程序

上一篇文章&#xff0c;创建了一个最小的小程序&#xff0c;但是&#xff0c;还有3个疑问没有弄清楚&#xff0c;还是基于demo1工程&#xff0c;这篇文章继续探索。 当前的目录结构是否是完备的呢&#xff1f;&#xff08;虽然小程序可以运行起来&#xff09;app.js文件内容还…

蓝桥杯2019年10月青少组Python程序设计省赛真题

1:有n个人围成一个圈,按顺序排好号然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号输人描迹:输人一个正整数n 输出描迹:输出最后留下的是原来的第几号 [样例输人] [样例输出] 2: 3、 […

tomcat和nginx自定义404错误页面

nginx 编辑nginx配置文件 vim /www/server/nginx/nginx.conf server{listen 80;error_page 404 /404.html;location /404.html{root /home/liu/html/error-html;} }在家目录下创建一个html/error-html目录&#xff0c;用于存放错误页面 在error-html目录下创建404.html&a…

ElasticSearch学习篇9_文本相似度计算方法现状以及基于改进的 Jaccard 算法代码实现

背景 XOP亿级别题库的试题召回以及搜题的举一反三业务场景都涉及使用文本相似搜索技术&#xff0c;学习此方面技术以便更好的服务于业务场景。 目前基于集合的Jaccard算法以及基于编辑距离的Levenshtein在计算文本相似度场景中有着各自的特点&#xff0c;为了优化具体的计算时…

Springboot整合JPA 多表关联:一对一 代码搭建

1.配置关联关系 2.配置关联操作 2.1单向 Student package com.jmj.springDataApp.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.*;Data Entity Table(name "tb_student") AllArgsCon…

【什么是泛型,有什么好处】

✅什么是泛型&#xff0c;有什么好处 ✅典型回答✅泛型是如何实现的✅什么是类型擦除&#xff1f;&#x1f4dd;C语言对泛型的支持&#x1f4dd;泛型擦除的缺点有哪些&#xff1f; ✅对泛型通配符的理解&#x1f4dd;泛型中上下界限定符 extends 和 super 有什么区别&#xff1…

基于ssm二手车交易平台的设计论文

摘 要 进入21世纪网络和计算机得到了飞速发展&#xff0c;并和生活进行了紧密的结合。目前&#xff0c;网络的运行速度以达到了千兆&#xff0c;覆盖范围更是深入到生活中的角角落落。这就促使二手交易网站的发展。二手交易网站可以实现远程购物&#xff0c;远程选择喜欢的商品…

RocketMQ高级原理:深入剖析消息系统的核心机制

一、基础概念&#xff1a; 1. 消息模型 RocketMQ基于Producer、Broker、Consumer三部分构建。其中&#xff0c;Producer负责生成消息&#xff0c;Consumer处理消息&#xff0c;而Broker则承担消息存储的角色。Broker服务器可以存储多个Topic的消息&#xff0c;并支持消息在不同…