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.rhkb.cn/news/162804.html

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

相关文章

.NET Core/.NET6 使用DbContext 连接数据库,SqlServer

安装以下NuGet包 Microsoft.EntityFrameworkCore.SqlServer&#xff1a;SQL server 需要添加包 Microsoft.EntityFrameworkCore.Tools Newtonsoft.Json&#xff1a;用于Json格式转换 创建一个实体类来表示数据库表。在项目中创建一个名为Customer.cs的文件&#xff0c;并添加以…

【Linux】Ubuntu存储分析

文章目录 前言1 如何对系统进行存储分析2 如果出现存储空间不足的警告应该怎么办&#xff1f;3 存储空间太小导致不能开机怎么办&#xff1f;4 如何对系统进行扩容 前言 因为要编译一个ARM架构的Linux SDK&#xff0c;结果没想到这个SDK解压编译完大小远超我想象&#xff0c;直…

Flink学习之旅:(一)Flink部署安装

1.本地搭建 1.1.下载Flink 进入Flink官网&#xff0c;点击Downloads 往下滑动就可以看到 Flink 的所有版本了&#xff0c;看自己需要什么版本点击下载即可。 1.2.上传解压 上传至服务器&#xff0c;进行解压 tar -zxvf flink-1.17.1-bin-scala_2.12.tgz -C ../module/ 1.3.启…

【JVM】JVM的垃圾回收机制

JVM的垃圾回收机制 对象死亡判断方法引用计数算法可达性分析算法 垃圾回收算法标记清除法复制算法标记整理算法分代算法 Java运行时内存的各个区域,对于程序计数器,虚拟机栈,本地方法栈这三个部分区域而言,其生命周期与相关线程有关,随线程而生,随线程而灭,并且这三个区域的内存…

服务器数据恢复-RAID信息破坏导致服务器操作系统无法启动的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器&#xff0c;8块硬盘组建了一组raid5磁盘阵列&#xff0c;服务器安装的是windows server操作系统&#xff0c;上层部署ORACLE数据库。 服务器故障&#xff1a; 在服务器运行过程中&#xff0c;2块硬盘报警&#xff0c;服务器操作系统…

MAC上设置IDEA如何一个窗口打开多个项目,多个tab

1、IDEA一个窗口打开多个项目 如果你打开了多个项目、每次切换都要半天&#xff0c;想让项目都汇聚到top栏 点击 Window - Merge All Project Windows 即可 但是这样比较挫&#xff0c;每次打开新的项目都还是会重新打开一个IDEA窗口 so&#xff0c;如何设置项目在同一个窗口…

手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集

手部关键点检测3&#xff1a;Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集 目录 手部关键点检测3&#xff1a;Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集 1. 前言 2.手部关键点检测(手部姿势估计)方法 (1)Top-Down(自上而下)方法 (2)Bot…

Minio 文件上传(后端处理同文件判断,同一文件秒传)

记录minio 文件上传 MinIO提供多个语言版本SDK的支持&#xff0c;下边找到java版本的文档&#xff1a; 地址&#xff1a;https://docs.min.io/docs/java-client-quickstart-guide.html maven依赖如下&#xff1a; XML <dependency><groupId>io.minio</groupId…

Liunx中系统安全及文件系统(极其粗糙版)

PS&#xff1a;下面知识点还很粗糙下次有时间再改 系统安全&#xff1a; 系统安全和数据防护&#xff0c;数据备份的资质 比如三台服务器&#xff1a; 500万 工信部是有要求的&#xff0c;组织必须保证处理的个人数据的安全性 品牌形象如何维护呢 基于liunx的安全加固措施…

【微信小程序】数字化会议OA系统之首页搭建(附源码)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

C++不用工具,如何检测内存泄漏?

C不用工具&#xff0c;如何检测内存泄漏&#xff1f; 大概12年前&#xff0c;在某外企 的时候&#xff0c;要做一个跨平台的office&#xff0c;即聚合了word Excel 以及 ppt等几大模块&#xff0c;代码大概200w行&#xff0c;我负责的就是内存泄漏这块最近很多小伙伴找我&#…

儿童疫苗接种:安全与注意事项

引言&#xff1a; 儿童的疫苗接种是维护其健康和预防传染病的重要措施。疫苗可以有效地保护儿童免受各种疾病的威胁&#xff0c;但在接种过程中需要家长和监护人特别关注一些注意事项&#xff0c;以确保接种的安全性和有效性。本文将深入探讨儿童疫苗接种的重要性&#xff0c;…

定制AI问答机器人前需要准备什么数据来训练AI模型?

AI问答机器人利用自然语言处理&#xff08;NLP&#xff09;技术来理解和回应用户的查询&#xff0c;能通过分析大量数据提供准确和相关的答案。要定制一个AI问答机器人&#xff0c;收集必要的资源和工具是至关重要的。获取用于训练模型的数据集是个关键的基础&#xff0c;然后通…

Linux常用命令——colrm命令

在线Linux命令查询工具 colrm 删除文件中的指定列 补充说明 colrm命令用于删除文件中的指定列。colrm命令从标准输入设备读取书记&#xff0c;转而输出到标准输出设备。如果不加任何参数&#xff0c;则colrm命令不会过滤任何一行。 语法 colrm(参数)参数 起始列号&#…

浅谈余压监控系统在住宅小区的应用方案

【摘要】&#xff1a; 本文分析了火灾发生时人员伤亡的主要原因——烟雾&#xff0c;并针对该原因提供切实可靠的系统应用解决方案&#xff0c;并通过具体案例&#xff0c;从设计依据、产品选型、系统组网、现场安装等方式介绍余压监控系统&#xff0c;希望可以在火灾发生时较大…

【Vue项目】通过设置全局的异常处理来统一处理后端返回的异常

文章目录 简介方法一创建统一异常处理模块使用axios拦截器处理异常在页面中使用异常处理 方法二创建全局异常处理函数在main.js中配置全局异常处理在网络请求中捕获异常 方法三创建全局异常处理插件在main.js中注册全局异常处理插件在网络请求中捕获异常 总结 简介 在Vue项目中…

百度开源分布式id生成器集成--真香警告

百度开源分布式id生成器集成–真香警告 文章目录 [toc] 1.为什么需要分布式id生成器&#xff1f;2.常见id生成方案2.1 数据库表主键自增2.2 uuid2.3 雪花算法2.3.1 实现代码2.3.2 缺点的解决方案百度开源的分布式唯一ID生成器UidGenerator(本文重点讲解这个)Leaf--美团点评分布…

【Unity3D编辑器开发】Unity3D中实现Transform组件拓展,快速复制、粘贴、复原【非常实用】

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中&#xff0c;常常会遇到频繁复制粘贴物体的坐标、旋转…

ChatGPT对于留学生论文写作有哪些帮助?

2022年11月&#xff0c;OpenAI公司的智能聊天产品ChatGPT横空出世&#xff0c;并两个月之内吸引了超过1亿用户&#xff0c;打破了TikTok&#xff08;抖音国际版&#xff09;9个月用户破亿的纪录。 划时代的浪潮 ChatGPT的火爆立即引起了全球关注并成为热门话题&#xff0c;它…

性能测试需求分析

1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一般对系统的性能要求非常高&#xff0c;对性能也非常了解。提出需求也比较明确。 曾经有一个银行项目&#xff0c;已经…