Educational Codeforces Round 180 (Rated for Div. 2) A-D题解

A. Race

题意

在一个数轴上,奖品可能出现在 x x x 点或 y y y 点,Alice 现在在 a a a 点,请问Bob是否存在一个点 b b b,使得无论奖品出现在 x x x 点还是 y y y 点,Bob都能比Alice先拿到( ∣ b − x ∣ < ∣ a − x ∣ |b-x|<|a-x| bx<ax ∣ b − y ∣ < ∣ a − y ∣ |b-y|<|a-y| by<ay)。注意, b b b 点不可以与 a a a 点重合,但可以与 x x x 点、 y y y 点重合。若存在,输出 YES,否则输出 NO

题目保证 a , x , y a,x,y a,x,y 两两不同。

思路

首先假设 x < y x<y x<y(若 x > y x>y x>y 就交换一下)。

  • 如果 a < x a<x a<x ,Bob 一定可以选择 a a a 右边的那个点作为点 b b b,显然满足 ∣ b − x ∣ < ∣ a − x ∣ |b-x|<|a-x| bx<ax ∣ b − y ∣ < ∣ a − y ∣ |b-y|<|a-y| by<ay

  • 如果 a > y a>y a>y,Bob 一定可以选择 a a a 左边的那个点作为点 b b b,显然也满足 ∣ b − x ∣ < ∣ a − x ∣ |b-x|<|a-x| bx<ax ∣ b − y ∣ < ∣ a − y ∣ |b-y|<|a-y| by<ay

  • 否则,即 x < a < y x<a<y x<a<y,Bob 选择任何一个点都一定存在 ∣ b − x ∣ > ∣ a − x ∣ |b-x|>|a-x| bx>ax ∣ b − y ∣ > ∣ a − y ∣ |b-y|>|a-y| by>ay 中的一个,所以这种情况一定不可以。

C++ 代码

#include<bits/stdc++.h>
using namespace std;
void solve(){int a,x,y;cin>>a>>x>>y;if(x>y) swap(x,y);if(a<x||a>y){cout<<"YES\n";}else{cout<<"NO\n";}
}
int main(){int T;cin>>T;while(T--){solve();}return 0;
}

B. Shrinking Array

题意

如果一个数组 b b b 存在至少两个元素,且存在至少一个 i ( 1 ≤ i < n ) i(1\le i<n) i(1i<n),使得 ∣ b i − b i + 1 ∣ ≤ 1 |b_i-b_{i+1}|\le1 bibi+11,则称这个数组是 美丽的

你有一个数组 a a a,你可以按顺序执行以下操作,求出使得数组 a a a美丽的 的最小操作次数,若不能变成,输出 -1

  • 选择一个 i ( 1 ≤ i < n ) i(1\le i<n) i(1i<n),并选择满足 min ⁡ ( a i , a i + 1 ) ≤ x ≤ max ⁡ ( a i , a i + 1 ) \min(a_i,a_{i+1})\le x\le \max(a_i,a_{i+1}) min(ai,ai+1)xmax(ai,ai+1) 的任意一个整数 x x x,随后把 a i , a i + 1 a_i,a_{i+1} ai,ai+1 替换成一个 x x x,很明显这个时候数组长度减小了 1 1 1

思路

观察发现,若数组严格递增或严格递减,且不存在 ∣ a i − a i + 1 ∣ = 1 |a_i-a_{i+1}|= 1 aiai+1=1,则不可以变成 美丽的,答案为 -1。(情况 01 01 01

其它情况下,若已经存在 ∣ a i − a i + 1 ∣ ≤ 1 |a_i-a_{i+1}|\le 1 aiai+11,答案为 0 0 0。(情况 02 02 02

其余情况答案一定是 1 1 1(情况 03 03 03):

  • 证明:这些情况中,数组一定不是严格递增的,肯定存在相邻的三个数 ( a , b , c ) (a,b,c) (a,b,c) , 一定满足一个: b < a < c b<a<c b<a<c c < a < b c<a<b c<a<b a < c < b a<c<b a<c<b b < c < a b<c<a b<c<a。一步操作就可以满足了。

C++ 代码

#include<bits/stdc++.h>
using namespace std;
int v[maxn];
void solve(){int n;cin>>n;for(int i=1;i<=n;i++) cin>>v[i];//情况01 递增bool flag=true;for(int i=2;i<=n;i++){if(v[i]<=v[i-1]||v[i]-v[i-1]==1){flag=false;break;}}if(flag){cout<<-1<<endl;return;}//情况01 递减flag=true;for(int i=n-1;i>=1;i--){if(v[i]<=v[i+1]||v[i]-v[i+1]==1){flag=false;break;}}if(flag){cout<<-1<<endl;return;}//情况02for(int i=2;i<=n;i++){if(v[i-1]==v[i]||abs(v[i]-v[i-1])==1){cout<<0<<endl;return;}}//情况03cout<<1<<endl;
}
int main(){int T;cin>>T;while(T--){solve();}return 0;
}

C. Coloring Game

题意

一个大小为 n n n 的整数数组 a a a

最初,数组中的所有元素都是无色的。首先,Alice 选择 3 3 3 个元素并将它们染成红色。然后 Bob 可以选择任意 1 1 1 个元素染成蓝色(如果该元素原本是红色,则会被重新着色)。如果所有红色元素的总和严格大于蓝色元素的值,爱丽丝就获胜。

你的任务是计算爱丽丝有多少种选择 3 3 3 个元素的方法,可以确保无论鲍勃如何操作都能获胜。

题目保证 a a a 数组单调不减。

思路

很明显,我们可以暴力枚举前两个元素,然后查找第三个元素,假设 a , b , c ( a ≤ b ≤ c ) a,b,c(a\le b\le c) a,b,c(abc) 为这三个元素,则必须满足 a + b > c a+b>c a+b>c a + b + c > max ⁡ a i a+b+c>\max{a_i} a+b+c>maxai

可以想到用双指针,具体内容请看代码。

C++ 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=5005;
int v[maxn];
void solve(){int n;cin>>n;for(int i=0;i<n;i++){cin>>v[i];}int ans=0;for(int i=2;i<=n-1;i++){int l=0,r=i-1;while(l<r){if(v[l]+v[r]>max(v[n-1]-v[i],v[i])){ans+=r-l;r--;}else{l++;}}}cout<<ans<<endl;
}
signed main(){int T;cin>>T;while(T--){solve();}return 0;
}

D. Reachability and Tree

题意

一棵树有 n n n 个节点,你要给出一种方案,给每条边加上方向,要存在恰好 n n n 个数对 ( u , v ) (u,v) (u,v),使得 u u u v v v 之间有路径;或者说明这是不可能的。

思路

首先,不管怎么加方向,一定存在至少 n − 1 n-1 n1 个这样的数对,就是每条边的两个点都可以组成一个数对,所以,只要再加上一对即可。

如果只要 n − 1 n-1 n1 对,若 1 1 1 为根节点,我们可以想到这样子加边:第一层全朝上,第二层全朝下,以此类推。

要想再加上一条边,应该找一个 2 2 2 度点,它连接的两条边的方向设为相同的,比如上图中, 8 8 8 是唯一一个 2 2 2 度点,所以把 9 → 8 9\rightarrow 8 98 改为 8 → 9 8\rightarrow 9 89

若没有两度点,就是不可以。

C++ 代码

#include<bits/stdc++.h>
#define pb push_back
#define mpr make_pair
using namespace std;
const int maxn=200005;
int n;
vector<int> g[maxn];
bool flag=false;
int cg;
vector<pair<int,int> > ans;
void find(int v,int fa,int col){for(int x:g[v]){if(x!=fa){if(col) ans.pb(mpr(x,v));else ans.pb(mpr(v,x));find(x,v,col^1);}}
}
void solve(){flag=false; cg=0;for(int i=1;i<=n;i++){g[i].clear();}cin>>n;for(int i=1;i<n;i++){int u,v;cin>>u>>v;g[u].pb(v);g[v].pb(u);}for(int i=1;i<=n;i++){if(g[i].size()==2){cg=i;flag=true;break;}}if(!flag){cout<<"NO\n";return;}cout<<"YES\n";int prv=g[cg][0],nxt=g[cg][1];ans.clear();ans.pb(mpr(prv,cg));ans.pb(mpr(cg,nxt));find(prv,cg,0);find(nxt,cg,1);for(pair<int,int> x:ans){cout<<x.first<<" "<<x.second<<endl;}
}int main(){int T;cin>>T;while(T--){solve();}return 0;
}

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

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

相关文章

IPv6配置

IPv6的基本配置 构建如下图所示的实训拓扑&#xff0c;按如下要求完成实训内容&#xff1a; &#xff08;1&#xff09;启用路由器的IPv6功能&#xff1b; &#xff08;2&#xff09;配置路由器接口的IPv6地址&#xff1b; &#xff08;3&#xff09;测试两台路由器的连通性…

flutter项目环境升级二:从Flutter2.10.5升级到3.29.3

系统:windows Android Studio:Android Studio Meerkat Feature Drop | 2024.3.2 Patch 1 Flutter SDK: Flutter3.29.3 JDK: java 17 详细的AGP / Gradle / Kotlin / JDK版本兼容关系可以百度或者到官方文档查询,其他博主给的很详细。确认好想要的版本兼容 这位大哥有对照表…

【网站内容安全检测】之1:获取网站所有链接sitemap数据

不多BB&#xff0c;直接上代码&#xff1a; main.go package mainimport ("bufio""crypto/tls""fmt""io""net/http""net/url""os""strings""sync""time"_ "net/ht…

从零构建vue3项目(二)

Vue3项目增强配置&#xff1a;Axios封装、鉴权与代码扫描 1. Axios二次封装与拦截器配置 安装Axios npm install axios创建Axios实例 src/utils/request.js import axios from axios import { useUserStore } from /stores/user import router from /router// 创建axios实例…

哪家香港站群服务器比较好用?

面对鱼龙混杂的服务商市场&#xff0c;哪家的香港站群服务器真正稳定&#xff1f;毕竟搞站群最怕的就是服务器抽风&#xff0c;轻则掉排名&#xff0c;重则客户跑光光。今天咱就重点聊聊哪家香港站群服务器比较好用&#xff1f; 一般来说&#xff0c;在选择香港站群服务器提供…

Python的科学计算库NumPy(二)

5. 索引和切片 5.1 一维数组的索引和切片 import numpy as np# 一维数组索引和切片&#xff0c;跟python中的集合同样使用 bin_list[1,2,3,4,5,6] bin_arraynp.array(bin_list) print(bin_array[3]) print(bin_array[1:4]) print(bin_array[-2:-1])5.2 多维数组的索引 # 多维…

STM32和C++ 实现配置文件导入、导出功能

一.配置文件导出功能 // 导出流程 // 1. 客户端 → 设备:导出配置请求,例如:GetFlashData[d6fe30323454]:{ini} ,其中[]里面是设备序列号 // 2. 设备 → 客户端:配置文件元数据(总大小、块数量) // 3. 设备 → 客户端:发送块1(包含块序号和大小) // 4. 设备 → 客户端:…

HTTP 请求基础知识

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言HTTP 请求方法GETPOSTPUTDELETE其他方法 HTTP 请求结构常用请求头实际应用示例响应状态码 前言 HTTP (Hypertext Transfer Protocol) 是互联网上应用最广泛的协…

Django ORM 1. 创建模型(Model)

1. ORM介绍 什么是ORM&#xff1f; ORM&#xff0c;全称 Object-Relational Mapping&#xff08;对象关系映射&#xff09;&#xff0c;一种通过对象操作数据库的技术。 它的核心思想是&#xff1a;我们不直接写 SQL&#xff0c;而是用 Python 对象&#xff08;类/实例&…

【C/C++】C++ 编程规范:101条规则准则与最佳实践

C 编程规范&#xff1a;101条规则准则与最佳实践 引言 C 是一门强大而复杂的语言&#xff0c;能高效控制硬件&#xff0c;也能写出优雅抽象。然而&#xff0c;正因其复杂性&#xff0c;项目中若缺乏统一规范&#xff0c;极易陷入混乱、难维护、易出错的泥潭。 本文总结了 10…

柔性屏激光修屏禁区突破:新启航如何实现曲面 OLED 面板的无损修复?

一、引言 柔性 OLED 面板凭借其轻薄、可弯曲等特性&#xff0c;在智能终端、可穿戴设备等领域广泛应用。然而&#xff0c;生产过程中面板易出现缺陷&#xff0c;传统修复方法难以满足曲面 OLED 面板的无损修复需求。新启航半导体有限公司在激光修屏技术上取得突破&#xff0c;…

UI前端与数字孪生结合案例分享:智慧零售的可视化解决方案

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 一、引言&#xff1a;智慧零售的可视化变革 在数字化浪潮下&#xff0c;零售行业正从 “人货场…

Docker 入门教程(四):容器命令

文章目录 &#x1f433; Docker 入门教程&#xff08;四&#xff09;&#xff1a;容器命令创建并运行容器&#xff1a;docker run查看容器列表&#xff1a;docker ps停止、启动、重启容器删除容器&#xff1a;docker rm进入容器&#xff1a;exec 和 attach查看容器日志&#xf…

2025.06.27【技术观察L0】AlphaGenome:DeepMind推出的全新AI基因组解读平台

AlphaGenome&#xff1a;DeepMind推出的全新AI基因组解读平台详解 2025年6月&#xff0c;Google DeepMind团队正式发布了AlphaGenome——一款面向基因组功能解读和变异效应预测的全新人工智能模型。AlphaGenome的出现&#xff0c;标志着AI在基因组学领域迈出了重要一步&#x…

[ARM-2D 专题]7. OOP实现之继承,宏implement_ex的实现和解析

implement_ex宏是 Arm-2D 库中用于面向对象编程&#xff08;OOP&#xff09;支持的核心宏定义。 implement_ex 宏的定义和作用 implement_ex 宏在 Library/Include/arm_2d_utils.h 中定义&#xff0c;用于在 C 语言中实现类似继承的功能&#xff1a; /*!* \note do NOT use t…

默认构造函数

1、构造函数 一、什么是构造函数 c中有一种特殊的成员函数&#xff0c;他的名字和类名相同&#xff0c;没有返回值&#xff0c;而在创建对象时会自动执行&#xff0c;类中的数据成员的初始化往往通过构造函数来实现。完成类中数据成员的初始化&#xff0c;同时也是类中的成员…

带标签的 Docker 镜像打包为 tar 文件

现在还有人用docker吗 要将带标签的 Docker 镜像打包为 tar 文件&#xff0c;请使用 docker save 命令。以下是详细操作指南&#xff1a; 一、单镜像打包&#xff08;推荐方式&#xff09; # 基础格式 docker save -o [输出文件名].tar [镜像名]:[标签]# 示例&#xff1a;将…

基于GPS-RTK的履带吊车跑偏检测技术方案

基于GPS-RTK的履带吊车跑偏检测技术方案 1. 引言 1.1 项目背景 履带吊车作为重型工程机械&#xff0c;其行驶稳定性直接关系到作业安全和设备寿命。跑偏现象会导致履带异常磨损、转向系统过载&#xff0c;严重时可能引发侧翻事故。传统检测方法&#xff08;如激光测距或人工观…

勾正数据大数据开发面试题整理-20250625

最近面了家公司&#xff0c;想看看自己多年不准备面试&#xff0c;靠着老本能面试成啥样&#xff0c;算是试试水吧&#xff0c;一面过了&#xff0c;二面有个算法题没答出来&#xff0c;整体答得状态也不太好&#xff0c;应该是没过。 一面 先来说说一面吧&#xff0c;一面是…

基于中国香港会计准则差异,中国企业在香港推广ERP(SAP、Oracle)系统需要注意的细节

核心在于&#xff1a;ERP通常按单一会计准则设计主数据架构&#xff0c;但跨国企业需要同时满足两地报表要求。 用户常见的场景包括&#xff1a; 1 科目体系能否同时承载CAS的专项储备和HKFRS的禁止计提&#xff1f; 2 资产模块如何兼容不同的减值转回规则&#xff1f; 3 关联…