AC修炼计划(AtCoder Regular Contest 165)
传送门:AtCoder Regular Contest 165 - AtCoder
本次习题参考了樱雪猫大佬的题解,大佬的题解传送门如下:Atcoder Regular Contest 165 - 樱雪喵 - 博客园 (cnblogs.com)
A - Sum equals LCM
第一题不算特别难
B - Sliding Window Sort 2
对于这道题而言,我们不难看出,如果想让该字符串尽可能的大,那最好的方式就是不改变,如果改变了,尽可能的向右边改变,同时尽可能的少改变。我们不如从前向后进行枚举,从而筛选出是第一个交换尽可能向右的下标,并记录。代码如下:
#include<bits/stdc++.h>
using namespace std;
// #define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
int n,k;
int b[5000005];
void icealsoheat(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>b[i];}set<int>q;for(int i=1;i<=k;i++)q.insert(b[i]);vector<int>c(n+5,0);int id=0;int mx=0;for(int i=1;i<=n-k+1;i++){if(i-1)q.erase(b[i-1]),q.insert(b[i+k-1]);if(c[i])continue;int l=0;auto it=q.begin();for(int j=i;j<i+k;j++){if((*it)!=b[j]){l=j;break;}it++;}if(!l){id=0;break;}for(int j=i;j<=l;j++)c[j]=1;if(l>mx){mx=l;id=i;}}if(id)sort(b+id,b+id+k);for(int i=1;i<=n;i++)cout<<b[i]<<" ";}
signed main(){ios::sync_with_stdio(false);cin.tie();cout.tie();int _=1;// cin>>_;while(_--){icealsoheat();}}
C - Social Distance on Graph
首先,没有重边,没有环,简单的无向图。最开始我想到了最小生成树,但是没搞出来,后来看佬的码,惊讶的发现确实是最小生成树,只是我想的还是太浅了,不够深入。
既然我们想让最小值最大,那么我们尽可能的让最小的边通过涂色和其他边和在一起。如果是不同的颜色的两个点,则这条边不存在,无法相连。所以我们可以用最小生成树来将最小的顶点优先考虑。并且将其进行染色,将这两个点儿染成不同的颜色。同时并继续向后慢慢更新,这里可以通过并查集来进行实现。在最后,我们比较出最小值即可。
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
const int MX=0x3f3f3f3f3f3f3f3f;
int n,k,m;
int c[5000005];
int pre[1000005];
struct we{int l,r,w;bool operator <(const we &k)const{return w<k.w;}
}hh[1000005];
int find(int x){if(pre[x]==x)return x;return pre[x]=find(pre[x]);
}
bool cmp(PII ax,PII bx){return ax.second<bx.second;
}
void icealsoheat(){cin>>n>>m;for(int i=1;i<=n;i++){pre[i]=i;c[i]=-1;}vector<vector<PII>>ve(n+5);for(int i=1;i<=m;i++){int l,r,w;cin>>l>>r>>w;hh[i].l=l;hh[i].r=r;hh[i].w=w;}sort(hh+1,hh+1+m);for(int i=1;i<=m;i++){int xx=find(hh[i].l);int yy=find(hh[i].r);if(xx==yy){continue;}pre[xx]=yy;ve[hh[i].l].push_back({hh[i].r,hh[i].w});ve[hh[i].r].push_back({hh[i].l,hh[i].w});}auto dfs=[&](auto self,int x,int fa)->void{for(auto [i,j]:ve[x]){if(i==fa||c[i]!=-1)continue;c[i]=c[x]^1;self(self,i,x);}};for(int i=1;i<=n;i++){if(pre[i]==i){c[i]=0;dfs(dfs,i,-1);break;}}int ans=MX;for(int i=1;i<=m;i++){if(c[hh[i].l]==c[hh[i].r]){ans=min(ans,hh[i].w);}}for(int i=1;i<=n;i++){sort(ve[i].begin(),ve[i].end(),cmp);}for(int i=1;i<=n;i++){if(ve[i].size()>1){ans=min(ans,ve[i][0].second+ve[i][1].second);}}cout<<ans;}
signed main(){ios::sync_with_stdio(false);cin.tie();cout.tie();int _=1;// cin>>_;while(_--){icealsoheat();}}
D - Substring Comparison
本题对于算法的考察比较多,我认为是一道比较好的题。这题我没有一点思路,是直接看佬的代码和思路的,让我恍然大悟。既然n是2000,那就支持双重循环了。首先,如果a=c并且d>=b的话,那一定是输出no的,我们可以优先排前面的,最开始让a<c,当出现了环的情况的时候,才能确定出a==c,那就让下一位数作为比较,直到最后跳出。(思路不知道咋讲,但上面大佬樱雪喵的题解里讲的很清楚了)代码如下:
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
const int MX=0x3f3f3f3f3f3f3f3f;
int n,m;
bool f=0;
int b[1000005];
int pre[100005];
int dfn[10000];
int low[10000];
vector<int>ve[10000];
int find(int x){if(x==pre[x])return x;else return pre[x]=find(pre[x]);
}
struct we{int a,b,c,d;
}hh[20005];
int num;
int top,col;
int a[10000];
int c[10000];
void tarjan(int u){dfn[u]=low[u]=++num;a[++top]=u;for(auto i:ve[u]){if(dfn[i]==0){tarjan(i);low[u]=min(low[u],low[i]);// pre[find(i)]=find(u);}else{if(!c[i]){low[u]=min(low[u],dfn[i]);}}}if(low[u]==dfn[u]){c[u]=++col;while(a[top]!=u){if(find(a[top])!=find(u)){pre[find(a[top])]=find(u);}f=1;c[a[top]]=col;top--;}top--;}
}void icealsoheat(){cin>>n>>m;for(int i=1;i<=m;i++){cin>>hh[i].a>>hh[i].b>>hh[i].c>>hh[i].d;}for(int i=1;i<=n;i++)pre[i]=i;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){ve[j].clear();}for(int j=1;j<=m;j++){while(find(hh[j].a)==find(hh[j].c)&&hh[j].a<=hh[j].b&&hh[j].c<=hh[j].d){hh[j].a++;hh[j].c++;}if(hh[j].c>hh[j].d){cout<<"No";return;}if(hh[j].a<=hh[j].b){ve[find(hh[j].a)].push_back(find(hh[j].c));// ve[find(hh[j].c)].push_back(find(hh[j].a)); }}for(int j=1;j<=n;j++){dfn[j]=0;low[j]=0;c[j]=0;a[j]=0;}top=col=num=0;f=0;for(int j=1;j<=n;j++){if(!dfn[j]){tarjan(j);}}if(!f){cout<<"Yes";return;}}cout<<"Yes";}
signed main(){ios::sync_with_stdio(false);cin.tie();cout.tie();int _=1;// cin>>_;while(_--){icealsoheat();}}
相关文章:

AC修炼计划(AtCoder Regular Contest 165)
传送门:AtCoder Regular Contest 165 - AtCoder 本次习题参考了樱雪猫大佬的题解,大佬的题解传送门如下:Atcoder Regular Contest 165 - 樱雪喵 - 博客园 (cnblogs.com) A - Sum equals LCM 第一题不算特别难 B - Sliding Window Sort 2 对…...

【Express】登录鉴权 JWT
JWT(JSON Web Token)是一种用于实现身份验证和授权的开放标准。它是一种基于JSON的安全传输数据的方式,由三部分组成:头部、载荷和签名。 使用jsonwebtoken模块,你可以在Node.js应用程序中轻松生成和验证JWT。以下是j…...

【微服务 SpringCloud】实用篇 · Ribbon负载均衡
微服务(4) 文章目录 微服务(4)1. 负载均衡原理2. 源码跟踪1)LoadBalancerIntercepor2)LoadBalancerClient3)负载均衡策略IRule4)总结 3. 负载均衡策略3.1 负载均衡策略3.2 自定义负载…...

zabbix-proxy代理服务器配置
下载zabbix源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 安装 yum -y install zabbix-proxy-mysql zabbix_get 查看相关文件路径 rpm -ql zabbix-proxy-mysql 创建数据库 mysq -uroot -proot mysql> create database…...

【python零基础入门学习】python进阶篇之OOP - 面向对象的程序设计
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

中国xx集团信息技术工程师面试
进入面试间,坐着三位面试官,压力扑面而来,三位面试官先做了自我介绍,介绍了一下面试的流程后才开始面试。 一、自我介绍 不多说。 二、看你学过数据挖掘这门课,能简单介绍一下有哪些章节,学了些什么&…...

Jmeter接口自动化测试 —— Jmeter下载安装及入门
jmeter简介 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 下载 下载地址:Apache JMeter - Download Apache JMeter 安装 由于Jmeter是基于Java的…...

ARM 学习笔记2 初识Cortex-M33与STM32G4
入门 ARM Cortex-M系列处理器的差异与联系:【ARM Cortex-M 系列 1 – Cortex-M0, M3, M4, M7, M33 差异】两本书籍的英文版和中文版 Definitive Guide to Arm Cortex-M23 and Cortex-M33 Processors Arm Cortex-M23和Cortex-M33微处理器权威指南ST的介绍页 Arm Cor…...

vue中使用coordtransform 互相转换坐标系
官方网站:https://www.npmjs.com/package/coordtransform 在使用高德sdk时,其返回的坐标在地图上显示时有几百米的偏移,这是由于高德用的是 火星坐标(GCJ02),而不是wgs84坐标。为了消除偏移,将G…...

双线性插值详解
双线性插值的原理网上资料非常多,本文重点介绍双线性插值实现的两种方式: 角对齐(coner_align = True) 和 边对齐(coner_align = False)。两种不能的方式下去实现双线性插值,目标图像中的每个像素点,它是如何计算取值的,本文会通过原理结合代码的方式将实现细节讲清楚。 1…...

C++ “”
&加上有时候会加速 如果想该对象跟着函数变化一定要加“&” 在题目函数里面定义的 例如 vector<vector<bool>> visited(grid.size(),vector<bool>(grid[0].size(),false)); 如果自己定义的新void dfs(vector<vector<bool>>…...

计算机三级有必要考吗?计算机三级有哪些科目?
在大学期间,计算机等级考试是一门很火热的考试,很多小伙伴通过二级考试以后在究竟是报考三级还是四级之间徘徊,下面肉丸子就来给大家分析一下,究竟有没有必要考计算机三级考试,以及计算机三级考试的科目有哪些…...

6.5 Elasticsearch(五)Spring Data Elasticsearch - 增删改查API
文章目录 1.Spring Data Elasticsearch2.案例准备2.1 在 Elasticsearch 中创建 students 索引2.2 案例测试说明 3.创建项目3.1 新建工程3.2 新建 springboot module,添加 spring data elasticsearch 依赖3.3 pom.xml 文件3.4 application.yml 配置 4.Student 实体类…...

XPS—专项文献阅读-科学指南针
XPS(X-ray Photoelectron Spectroscopy),X射线光电子能谱,可以说是材料研究中必不可少的一类分析测试手段了。今天我们就来讲讲,什么情况下我们需要用到XPS,以及拿到数据之后应该怎样进行数据处理分析。 XP…...

电脑办公助手之桌面便签,助力高效率办公
在现代办公的快节奏中,大家有应接不暇的工作,每天面对着复杂的工作任务,总感觉时间不够用,而且工作无厘头。对于这种状态,大家可以选择在电脑上安装一款好用的办公便签软件来辅助日常办公。 敬业签是一款专为办公人士…...

【面试题】2023虹软计算机视觉一面
来源:投稿 作者:LSC 编辑:学姐 1.自我介绍 2.介绍了自己的项目,并提问项目,讲了30分钟 3.介绍centernet,它和其他目标检测模型有什么区别 4.介绍yolov5 5.介绍focal loss 6.双线性插值和最近邻插值的区…...

板带纠偏控制系统伺服比例阀放大器
板带纠偏控制系统是集光、机、电、液四方面有机结合在一起的全闭环电液伺服系统,是用途广泛的机电一体化高新技术产品。 板带纠偏控制系统可广泛地应用于机械、冶金、造纸、橡胶、织带、纺织印染、电镀、塑膜胶片等诸多行业的不同种类的带材生产线的在线纠偏。 板…...

视频I420裸流保存为文件
1、从TvCamera的ABK回调的OnImageReceived出来的是I420的数据,保存文件的方式如下: void OnImageReceived(const uint8_t* data, size_t size, uint16_t widht, uint16_t height) { .............. FILE *fp fopen("test.yuv", "wb&quo…...

IDEA中SpringBoot项目的yml多环境配置
SpringBoot的yml多环境配置 创建多个配置文件 application.yml #主配置文件 application-dev.yml #开发环境的配置 application-test.yml #测试环境的配置在application.yml中添加多环境配置属性 spring:profiles:active: profiles.active项目启动可能不会识别&#x…...

【Linux】UDP协议
文章目录 📖 前言1. 再谈端口号1.1 端口号划分范围:1.2 端口和进程的关系:1.2 - 1 netstat1.2 - 2 pidof 1.3 源端口和目的端口: 2. UDP协议2.1 UDP协议格式: 3. 再谈write/read4. UDP需要接收/发送缓冲区吗5. UDP使用…...

AutoCAD 2022 for Mac/Windows升级您的设计工具,提升工作效率
Autodesk AutoCAD 2022 是设计行业最流行的计算机辅助设计 (CAD) 软件之一。这款软件由Autodesk公司开发,它提供了强大的功能,从基本的设计和修改工具,到复杂的3D建模和渲染,一切尽在掌握。通过其直观的用户界面和不断更新的功能&…...

协程,GIL全局解释器,互斥锁,线程池,Concurrent模块
进程是资源分配的最小单位,线程是CPU调度的最小单位。每一个进程中至少有一个线程。 Python对并发编程的支持 (1)多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成。 (2)多进程:multiproces…...

MAPEFFECT代码在传奇中有何作用如何运用
今天介绍一下MAPEFFECT的作用和使用方法,可以实现的效果比如进入游戏或者某个地图显示特效,或者显示地图名称,提示信息等等用到的命令就是MAPEFFECT。 使用方法是 在QManage.txt中找到 [Startup] 在下面增加如下代码 #if #act MAPEFFECT 11…...

Godot 官方2D C#重构(1):雪花碰撞
前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 实现效果 难点介绍 Godot GDScript和C# 对应关系大部分靠猜 文件导入 资源地址:默认为res://开头2D贴图导入类型:Texture2D public Texture2D Bullet_Image new Textu…...

计算机基础知识35
进程和线程的比较 1. 进程的开销比线程的开销大很多 2. 进程之间的数据是隔离的,但是,线程之间的数据不隔离 3. 多个进程间的线程数据不共享----->让进程通信(IPC)---->进程下的线程也通信了---->队列 GIL全局解释器锁(重要理论) # 虽然一个进程…...

VulnHub mrRobot
一、信息收集 1.访问地址 没啥信息,尝试扫下目录 2.目录扫描 key1 发现有wp-admin/和robots.txt robots.txt里面还拿到了一个密码字典,猜测是爆破wp的网站账号密码的 3.访问wp-admin/ ┌──(root💀kali)-[~/桌面] └─# sort -u fsoci…...

【MATLAB第79期】基于MATLAB的数据抽样合集(sobol、LHS、Halton、正交、随机函数)更新中
【MATLAB第79期】基于MATLAB的数据抽样合集(sobol、LHS、Halton、正交、随机函数)更新中 一、随机函数 1.指定区间随机生成数据(小数) [a b]区间随机数生成: Aa(b-a)rand(m,n) m:待生成矩阵A的行数 n: 待生成矩阵A…...

Lua快速入门教程
文章目录 1、Linux安装Lua2、语法练习2.1、变量2.2、循环2.3、函数2.4、数组2.5、迭代器2.6、Table操作2.7、Lua 模块与包2.8、加载机制2.9、Lua 元表(Metatable) 3、Lua 协同程序(coroutine)4、文件IO操作4.1、简单模式4.2、完全模式 5、错误处理 内容来源菜鸟教程,…...

html资源提示符
前言:正常dom解析 中遇到script标签 ,会暂停主线程 去下载js,拿到资源后,主线程再执行js。 那么主线程在等待网络线程下载这个空闲很浪费 解决方案: script标签增加属性 async defer 1.async <script src"./i…...

VR智能家居虚拟连接仿真培训系统重塑传统家居行业
家居行业基于对场景的打造及设计,拥有广阔前景,是众多行业里面成为最有可能进行元宇宙落地的应用场景之一。 家居行业十分注重场景的打造及设计,而元宇宙恰恰能通过将人工智能、虚拟现实、大数据、物联网等技术融合提升,带来身临其…...