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();}}

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

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

相关文章

众和策略:小盘和大盘的关系?

在股票商场上&#xff0c;股票能够被分为小盘股和大盘股两类。那么&#xff0c;二者之间有什么联络呢&#xff1f;这篇文章将从多个视点来分析小盘和大盘的联络。 商场表现 首要&#xff0c;让我们看看两者在商场表现上的差异。大盘股是市值较大的股票&#xff0c;一般在首要股…

沉睡的木乃伊:var_export() 与可解析字符串

文章目录 参考环境var_export()概念应用场景数据持久化调试 函数 var_export() 自定义类__set_state() 魔术方法设置 __set_state 魔术方法的逻辑以复原对象注意事项 通用内置空类 stdClassstdClass对 __set_state() 的天然支持 参考 项目描述搜索引擎Bing、GoogleAI 大模型文…

Vue2+SpringBoot实现数据导出到csv文件并下载

前言 该功能用于导出数据到csv文件&#xff0c;并且前端进行下载操作。涉及到java后端以及前端。后端获取数据并处理&#xff0c;前端获取返回流并进行下载操作。csv与excel文件不大相同。如果对导出的数据操作没有很高要求的话&#xff0c;csv文件就够了。具体差异自行百度。我…

BootStrap-前端框架

资料:https://v3.bootcss.com/components/ BootStrap的概念&#xff08;Web框架&#xff09; Bootstrap&#xff0c;来自 Twitter&#xff0c;是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的&#xff0c;它简洁灵活&#xff0c;使得 Web 开发更加快捷。…

TLS/SSL 详解

目录 基础理论入门HTTPS对称加密非对称加密证书TLS握手过程握手总结 TLS 定义(记录层/握手层)HTTPS HTTP over TLS加密记录层分片 (Fragmentation)记录压缩和解压缩 (Record compression and decompression)空或标准流加密 (Null or standard stream cipher)CBC 块加密 (分组加…

C语言编译过程

最近在看C语言的基础知识&#xff0c;之前只关注编译最后生成的二进制文件&#xff0c;不知道编译过程&#xff0c;学习到了整理一下。 一、C语言编译过程 过程如下&#xff1a; 预编译---->编译---->汇编---->链接器输出---->二进制文件。 编译器将编译分为预…

出差学知识No3:ubuntu查询文件大小|文件包大小|磁盘占用情况等

1、查询单个文件占用内存大小2、显示一个目录下所有文件和文件包的大小3、显示ubuntu所有磁盘的占用情况4、查看ubuntu单个包的占用情况 1、查询单个文件占用内存大小 使用指令&#xff1a;ls -lh 文件 2、显示一个目录下所有文件和文件包的大小 指令&#xff1a;du -sh* 3…

【特纳斯电子】基于单片机的火灾监测报警系统-实物设计

视频及资料链接&#xff1a;基于单片机的火灾监测报警系统-实物设计 - 电子校园网 (mcude.com) 编号&#xff1a; T0152203M-SW 设计简介&#xff1a; 本设计是基于单片机的火灾监测报警系统&#xff0c;主要实现以下功能&#xff1a; 1.通过OLED显示温度、烟雾、是否有火…

Linux:Termius连接本地虚拟机与虚拟机快照

Termius连接本地虚拟机与虚拟机快照 1. Termius连接本地虚拟机2. 虚拟机快照与还原2.1 设置快照以及恢复 附录 1. Termius连接本地虚拟机 ifconfig -a 查看配置 连接成功 2. 虚拟机快照与还原 在学习阶段我们无法避免的可能损坏Linux操作系统。 如果损坏的话&#xff0c;重新…

PyTorch入门教学——在虚拟环境中安装Jupyter

1、简介 Jupyter Notebook是一个开源的web应用程序&#xff0c;可以使用它来创建和共享包含实时代码、方程、可视化和文本的文档。Jupyter Notebook是一个交互式笔记本&#xff0c;可以当作python编译器来使用。 2、安装 在安装Anaconda时是自带了Jupyter Notebook的&#x…

C++ wpf自制软件打包安装更新源码实例

程序示例精选 C wpf自制软件打包安装更新源码实例 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《C wpf自制软件打包安装更新源码实例》编写代码&#xff0c;代码整洁&#xff0c;规则&…

分布式存储系统——ceph

目录 一、分布式存储类型 1、块存储 2、文件存储 3、对象存储 二、ceph概述 1、ceph简介 2、ceph的优势 3、ceph架构 1&#xff09;RADOS 基础存储系统&#xff08;Reliab1e&#xff0c;Autonomic&#xff0c;Distributed object store 2&#xff09;LIBRADOS 基础库 …

【Python搜索算法】深度优先搜索(DFS)算法原理详解与应用,示例+代码

目录 1 基本原理 2 DFS算法流程 3 时间复杂度 4 空间复杂度 5 DFS算法应用案例&#xff1a; 5.1 解决路径查找问题 5.2 解决图的连通性问题 5.3 拓扑排序 5.4 在树结构中进行深度遍历 深度优先搜索&#xff08;DFS&#xff09;是一种重要的图遍历算法&#xff0c;用…

【C语言】.c源文件从编译到链接生成可执行程序的过程

本篇文章目录 1. 过程概览2. 编译与链接2.1 预编译/预处理2.2 编译2.3 汇编2.4 链接 3. 执行/运行环境 1. 过程概览 编译到链接是c语言的翻译环境&#xff0c;c语言还有执行环境。 组成一个程序的每个源文件通过编译过程分别转换成目标代码&#xff08;object code&#xff09;…

2.Vue-从零开始搭建一个vue项目

题记 从零开始搭建一个vue项目&#xff0c;以下是操作的全过程。 安装Vue CLI脚手架 打开终端&#xff0c;运行以下命令全局安装Vue CLI脚手架&#xff1a; npm install -g vue/cli 查看 Vue CLI脚手架版本&#xff1a; vue -V 注意&#xff1a;查看vue版本的命令不是vue -V&a…

安捷伦N8485A射频传感器26.5GHz

安捷伦N8485A射频传感器 N8485A 是 Agilent 使用的 26.5 GHz 0.1 瓦射频传感器。电子测试设备传感器测量波形的功率&#xff0c;例如多音和调制射频 (RF) 波形。传感器使用二极管检测器收集高度精确的调制测量值。 用于存储校准系数的 EEPROM 消除了手动输入 10 MHz 至 26.5 GH…

15 | JPA 对 Web MVC 开发者做了哪些支持

我们使用 Spring Data JPA 的时候&#xff0c;一般都会用到 Spring MVC&#xff0c;Spring Data 对 Spring MVC 做了很好的支持&#xff0c;体现在以下几个方面&#xff1a; 支持在 Controller 层直接返回实体&#xff0c;而不使用其显式的调用方法&#xff1b;对 MVC 层支持标…

解读 | 自动驾驶系统中的多视点三维目标检测网络

原创 | 文 BFT机器人 01 背景 多视角三维物体检测网络&#xff0c;用于实现自动驾驶场景高精度三维目标检测&#xff0c;该网络使用激光雷达点云和RGB图像进行感知融合&#xff0c;以预测定向的三维边界框&#xff0c;相比于现有技术&#xff0c;取得了显著的精度提升。同时现…

树莓派:64位 RPI OS(Bookworm) 更换国内源

几天前新的RPI OS发布了。官方的发版说明里明确注明已经基于Debian Bookworm了。总的来说切到国内源&#xff08;清华&#xff09;跟Bullseye差不多&#xff0c;细节上只有一丢丢不同&#xff08;non-free变成了non-free-firmware&#xff09;。 老规矩&#xff0c;仍然是修改…

华为数通方向HCIP-DataCom H12-831题库(单选题:241-260)

第241题 某园区部署了IPV6进行业务测试,该网络中有4台路由器(R1R2、R3和R),运行OSPFV3实现Pv6网络的互联互通。有一台新的路由器R5需要接入网络进行测试,某工程师通过在R4的OSPFV3进程中引入直连路由,实现园区网内的设备能够访问R5的GEO/0/1口地址。关千该场景的描述,错误…