EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2) 补题记录(A~D1,E)

news/2024/9/20 4:39:30/文章来源:https://www.cnblogs.com/yhbqwq/p/18354484

A

容易发现答案为 \(\min(n,k)\min(m,k)\)

#include<bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;
const int N=1000100;
int a[N];
signed main(){int T;cin>>T;while(T--){int n,m,k;cin>>n>>m>>k;n=min(n,k),m=min(m,k);cout<<n*m<<'\n';}return 0;
} // main

B

容易发现 Alice 如果想要赢必然一直从左或者右端口开始删除元素。若对于 Alice 两种选择方案 Bob 都能够获胜那么 Bob 就必胜,反之 Bob 必败。用一个双端队列维护 Bob 当前所有的元素即可,时间复杂度为 \(O(n)\)

#include<bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;
const int N=1000100;
int a[N],b[N];
signed main(){int T;cin>>T;while(T--){int n;cin>>n;for(int i=1;i<=n;++i)cin>>a[i];for(int i=1;i<=n;++i)cin>>b[i];deque<int>t;for(int i=1;i<=n;++i)t.push_back(b[i]);int ok=1;for(int i=1;i<=n;++i){if(a[i]==t.front())t.pop_front();else if(a[i]==t.back())t.pop_back();else{ok=0;break;}}reverse(a+1,a+n+1);for(int i=1;i<=n;++i)t.push_back(b[i]);for(int i=1;i<=n;++i){if(a[i]==t.front())t.pop_front();else if(a[i]==t.back())t.pop_back();else{ok=0;break;}}if(!ok)cout<<"Alice\n";else cout<<"Bob\n";}return 0;
} // main

C

谢谢你 C。考虑对于经过两点的直线 \(L\) 经过 \((x_1,y_1)\)\((x_2,y_2)\),对于一个圆心为 \((x_0,y_0)\) 的圆,若在某一个时刻 \(r\) 满足半径为 \(r\) 的圆和直线 \(L\) 距离 \((x_1,y_1)\) \(r\) 个单位长度的地方相交,则不可以经过。问题是如何判定这一点。

pApM9Qf.md.png

容易发现若 C –> D 的路径上 B 点和 A 点所对应的圆产生交点,则连接 \(AC\) 之后根据三角形三边关系得到 \(AD<CD\),也就是从 \(C\) 走到 \(D\) 要花费的时间比圆半径从 \(A\) 扩展到 \(D\) 所需要的时间要长。

于是问题就十分简单了,只需要判断到达终点的时候是否有一个圆已经将终点覆盖即可。时间复杂度为 \(O(n)\)

#include<bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;
const int N=331080;
int x[N],y[N];
int get(int a,int b,int c,int d){return (c-a)*(c-a)+(d-b)*(d-b);
}
signed main(){ios_base::sync_with_stdio(0);cin.tie(0);int T;cin>>T;while(T--){int n;cin>>n;for(int i=1;i<=n;++i)cin>>x[i]>>y[i];int xs,ys,xt,yt;cin>>xs>>ys>>xt>>yt;int ok=1;int len=get(xs,ys,xt,yt);for(int i=1;i<=n;++i){int len1=get(x[i],y[i],xt,yt);;if(len1<=len){ok=0;break;}}if(ok)cout<<"Yes\n";else cout<<"No\n";}return 0;
} // main
/*
1
1
999999998 1000000000
999999999 999999999 1 1
*/

D1

考虑维护 \(2\)\(3\) 两个结点所对应的子树的结点编号的和,以及每一层树上结点编号的和,将其和真正的答案对比若相同就合法否则就不合法。时间复杂度为 \(O(n\log n)\),需要使用 ds 维护。正确性显然。代码还没调出来。

E

这题还挺有意思的。考虑挖掘题目所求答案的性质,可以发现对于两个相邻的位置 \(i\)\(i+1\) 所对应的连续二元组,若两个连续二元组所对应的值不同且第一个二元组的元素个数 \(\le\) 第二个二元组的元素个数那么第一个二元组的元素一定会被第二个二元组全部消除,随后第二个二元组的元素数量减去第一个二元组的元素数量。因此发现这个东西十分类似于单调栈。直接用单调栈维护一下当前的递减个数二元组即可。当前所需要花费的最长时间即为栈底元素最多的二元组的元素个数。

时间复杂度为 \(O(n)\)。感觉这个题比 C 和 D 都要简单啊。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=500100;
int a[N],b[N],res[N];
signed main(){int T;cin>>T;while(T--){int n;cin>>n;for(int i=1;i<=n;++i)cin>>a[i]>>b[i];deque<int> stk;int remain=0;for(int i=1;i<=n;++i){while(stk.size()){if(b[i]!=b[stk.back()]){if(a[i]>a[stk.back()])remain=a[stk.back()],stk.pop_back();else break;}else{a[i]+=a[stk.back()]-remain;stk.pop_back();remain=0;}}stk.push_back(i);cout<<a[stk.front()]<<' ';}cout<<'\n';}return 0;
}

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

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

相关文章

后端开发学习敏捷需求--干系人分析与识别

干系人分析与识别 5W1H 干系人分析与识别 1. 干系人是什么直接或者间接影响专题,以及被专题影响的人和组织,用户也是属于干系人,是产品直接或者间接的使用者又叫利益相关者,指积极参与专题或者在专题中其利益可能受积极或消极影响的个人或组织2. 为什么要分析和识别干系人找…

while循环的3个练习

static void Main(string[] arg){//while的3个练习Console.WriteLine("请输入班级人数:");int intNum = 0;while (!(int.TryParse(Console.ReadLine(), out intNum))){Console.WriteLine("班级人数输入有误, 请重新输入!");};int i = 0;int sum = 0;int sc…

地理编码之旅,一场地址与坐标的漫游

随着移动设备的普及和定位服务的发展,在使用导航和位置搜索时,用户期望应用提供的位置是准确无误的,同时用户也希望App可以根据位置提供个性化和本地化服务,比如,在社交媒体上分享位置信息或帮助家庭设备智能联网管理等。想要获取准确的位置,经纬度是确定每个地点位置的精…

结构开发笔记(三):solidworks软件(二):小试牛刀,绘制一个立方体

前言solidworks草图大师,基本的使用过程。  所有的零件基础都是从平面绘制开始,然后凸出来厚度。  本篇绘制一个简单的立方体,熟悉基本操作。 立方体绘制过程选取一个平面绘制一个立方形,然后拉伸即可。  绘制矩形的方式:  功能所见即所得。  其实用2021版本,还…

面经精选:数据库高频面试十问

我把粉丝们发给我的面经好好整理了一下,从里面挖出了十个被问得比较频繁的数据库面试题,可以收藏起来,在面试之前给它突击过一遍。1.InnoDB和MyISAM存储引擎的区别? MySQL 默认的存储引擎是 InnoDB,它采用 B+Tree 作为索引的数据结构。 在创建表时,InnoDB 存储引擎默认会…

Opentelemetry collector用法

Opentelemetry collector用法 目录Opentelemetry collector用法ServiceExtensionshealthcheckextensionPipelinesreceiverOTLP Receiverprometheus receiverfilelog receiverProcessor数据归属Importantmemory limiter processorbatch processorattributes processor &&…

记录JSch连接SFTP Exception:Algorithm negotiation fail问题解决

问题描述:关于正式环境访问外网连接不成功 1、首先检查是否开放防火墙(已确认开放),策略开放后,通过命令连接是否畅通: 通过telnet命令,可以得出,访问畅通。telnet 192.168.1.1 22 2、查看生产环境日志,观察生产环境访问外网服务器异常: 抛出异常,提示:算法协商失…

zkw线段树

zkw 线段树 - 非递归线段树实现方法介绍 非递归线段树实现方法,码量较短。 zkw 线段树的构造原理: 普通线段树采用堆存储,zkw线段树 本质上是满二叉树(若没有该区间则为空点) 但根据实际情况,原区间不一定构成满二叉树,据查询方式限制,空间开到最接近的 \(2^n\)(据性质…

张昆玮线段树

zkw 线段树 - 非递归线段树实现方法介绍 非递归线段树实现方法,码量较短。 zkw 线段树的构造原理: 普通线段树采用堆存储,zkw线段树 本质上是满二叉树(若没有该区间则为空点) 但根据实际情况,原区间不一定构成满二叉树,据查询方式限制,空间开到最接近的 \(2^n\)(据性质…

全红婵夺冠!数业智能心大陆告诉你原生家庭在背后发挥了怎样的力量

2024年巴黎,全红婵在十米跳台上的完美一跃, 再次定义了跳水艺术,水花消失术成为她的代名词!全红婵的辉煌成就,不仅点亮了自己,也照亮了家庭的未来。 而他的家人也非常珍视全红婵的成功。 其父亲坚定的表示:”我们不能消费女儿“。 “不能因为她拿了冠军,我连活都不干了。…

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案[含ollama部署]

无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案-含ollama部署无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案 1.Dify 简介 1.1 功能情况 Dify,一款引领未来的开源大语言…

基于 JavaFx 搭建的实用小工具集合

xJavaFxTool —— 一个基于 JavaFx 搭建的实用小工具集合,包括文件复制、Cron表达式生成器、编码转换、加密解密等几十种开发中常用的工具。大家好,我是 Java陈序员。 作为一名后端程序员,常常需要在电脑上安装各种工具软件来支持日常开发。 那么,是否有一款工具集合,包含…