[题解](更新中)AtCoder Beginner Contest 392(ABC392) A~E

news/2025/2/8 23:29:41/文章来源:https://www.cnblogs.com/Sinktank/p/18705450

A - Shuffled Equation

显然只有最大值可能被相乘得到,所以对\(a\)从小到大排序,判断\(a[0]\times a[1]=a[2]\)是否成立即可。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int a[3];
signed main(){cin>>a[0]>>a[1]>>a[2];sort(a,a+3);cout<<(a[0]*a[1]==a[2]?"Yes\n":"No\n");return 0;
}

B - Who is Missing?

用桶记录每个数的选取情况,枚举\(1\sim n\)所有数,输出所有未被选择的数即可。

点击查看代码
#include<bits/stdc++.h>
#define N 1010
using namespace std;
int n,m,cnt;
bitset<N> vis;
signed main(){cin>>n>>m;for(int i=1,a;i<=m;i++) cin>>a,vis[a]=1;for(int i=1;i<=n;i++) if(!vis[i]) cnt++;cout<<cnt<<"\n";for(int i=1;i<=n;i++) if(!vis[i]) cout<<i<<" ";return 0;
}

C - Bib

题目是让我们对于每个\(i\),求穿\(i\)号围兜的人盯着的人穿几号围兜。

\(b[i]\)表示穿\(i\)号围兜的人,我们在输入的过程中处理出来。则根据上面的分析,第\(i\)个答案为\(q[p[b[i]]]\)

点击查看代码
#include<bits/stdc++.h>
#define N 300010
using namespace std;
int n,p[N],q[N],b[N];
signed main(){cin>>n;for(int i=1;i<=n;i++) cin>>p[i];for(int i=1;i<=n;i++) cin>>q[i],b[q[i]]=i;for(int i=1;i<=n;i++) cout<<q[p[b[i]]]<<" ";return 0;
}

D - Doubles

暴力枚举是\(O(n^2 V)\)的,其中\(V=10^5\)表示值域。考虑优化。

实际上对于我们枚举的\((i,j)\)这对骰子,仅需枚举其中一个骰子可能的点数即可,并不需要把\(1\sim 10^5\)的点数都枚举一遍。

分析一下时间复杂度:\(O(\sum\limits_{i,j}k[i])=O(\sum\limits_j S)=O(nS)\),其中\(S=\sum k=10^5\)

点击查看代码
#include<bits/stdc++.h>
#define N 105
#define S 100010
using namespace std;
int n;
unordered_set<int> se[N];
double p[N][S],maxx;
signed main(){cin>>n;for(int i=1,m,x;i<=n;i++){cin>>m;double tmp=1.0/m;for(int j=1;j<=m;j++)cin>>x,p[i][x]+=tmp,se[i].insert(x);}for(int i=1;i<n;i++){for(int j=i+1;j<=n;j++){double ans=0;for(int k:se[i])ans+=p[i][k]*p[j][k];maxx=max(maxx,ans);}}cout<<fixed<<setprecision(18)<<maxx;return 0;
}

悄悄告诉你:由于此题玄学的数据,\(O(n^2 S)\)的暴力也可以过(Link)。

E - Cables and Servers

容易发现,最优操作下,每操作一次连通块就减少\(1\)。所以最少操作次数就是整张图的连通块个数\(-1\)

再考虑如何输出方案。显然最优操作下,每个操作都必须合并\(2\)个连通块。换句话说,不能因为我们动用某条边,就使得原来的一整个连通块断成两半。

所以我们不妨规定,只动用原图生成树之外的边。

这样做法就出来了,我们对原图跑生成树,遍历生成树外的边,每条边选取其中一个端点,连向其他连通块中的任意一个即可。

点击查看代码
#include<bits/stdc++.h>
#define N 200010
#define M 200010
using namespace std;
int n,m,fa[N],to[M];
struct edge{int to,num;};
bitset<M> flg;
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
unordered_set<int> se;
signed main(){cin>>n>>m;for(int i=1;i<=n;i++) fa[i]=i;for(int i=1,u,v;i<=m;i++){cin>>u>>v,to[i]=u;//to[i]=v;也可以u=find(u),v=find(v);if(u==v) continue;fa[u]=v,flg[i]=1;}for(int i=1;i<=n;i++) se.insert(find(i));cout<<se.size()-1<<"\n";for(int i=1;i<=m;i++){if(se.size()==1) break;if(flg[i]) continue;auto it=se.begin();if((*it)==find(to[i])) it++;//避免自己连向自己fa[*it]=find(to[i]);cout<<i<<" "<<to[i]<<" "<<(*it)<<"\n";se.erase(it);}return 0;
}

F - Insert

看到题面首先想到平衡树之类的结构来模拟,又不想实现平衡树了,就想到用rope来维护序列,算了一下时间在\(3\times 10^8\)左右,交上去搏一把,很不幸\(\tt TLE\times 4\)(Link)。

ropepb_ds库的一个分支,底层实现是块状链表,可以支持\(O(\sqrt n)\)的插入、删除等操作,从c++11开始受支持,具体用法可以自行搜索)

[To Be Continued]
电脑没电了,明天更新正解。

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

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

相关文章

2025【重庆联通】活动

2025年2月8日更新 扫码显示详情及办理 扫码显示详情及办理 套餐资费和活动内容均来源于重庆联通【10010人工客服可查,中国联通app官方客服可查】 这里是下面的54个活动的办理名称,请确认【点击也可直接跳转到相应位置】1.云创安全组合包10元(CQ)-立即生效 2.云创数字人名片权…

LLVM+CMAKE+VScode

在mac上使用vscode+CMAKE+LLVM 配置C++环境 仅供参考,请多谅解 原先的vscode官方推荐插件intellisense实在是太慢,以至于在很多大型项目(ns3,OS)等进行静态检查的速度奇慢无比,并且大量消耗资源。于是尝试在mac上使用llvm+clangd进行配置。由于采用的是homebrew安装clang…

FastAPI for Machine Learning: Live coding an ML web application

FastAPI for Machine Learning: Live coding an ML web application https://www.bilibili.com/video/BV1kC411b7Se/?spm_id_from=333.788.videopod.sections&vd_source=57e261300f39bf692de396b55bf8c41b翻译:FastAPI用于机器学习:现场编码一个ML Web应用程序。欢迎!加…

08_LaTeX之自定义LaTeX命令和功能

本章的内容将让你能编写可重复利用的模块——宏包和文档类,并在其中自己定义命令和环境。08_\(\LaTeX{}\) 之自定义\(\LaTeX{}\)命令和功能 目录08_\(\LaTeX{}\) 之自定义\(\LaTeX{}\)命令和功能自定义命令和环境定义新命令定义环境xparse 宏包简介编写自己的宏包和文档类编写…

2024FJ省队集训 - 笔记 游记

Day 0 火车上写了两道可爱小清新数学题。题没写多少bug还一堆。 我们住的是福建省团校,据说是福州有演唱会导致各种酒店房间紧张。 和 wzh,zzp 口胡了一些题目就去睡觉了。 团校的住宿条件确实不错,睡得挺香。 Day 1 T1 提交答案题就是依托美味的构式,你T2T3费劲心思骗个五分…

Stern-Brocot 树

Stern-Brocot 树由两个初始值 \(0\over 1\) 和 \(1\over0\),由两个相邻的数 \(a\over b\) 和 \(c\over d\) 会生成数 \(a + c\over b + d\)。这由图片可以非常直观地看出。形态类似于一棵树。 每个点上有一个"三元组"\((a,b,c)\),\(\left(\dfrac{0}{1},\dfrac{1}{1…

电影解析之虾米解析

我们通常会因为看电影但是需要vip却没有足够生活费去支持的困扰 我就在想有没有白嫖的方法呢(bushi 就在我苦恼的时候我发现了一个方法————就是被称为:解析 的技术这玩意就是最好的选择 但是可能部分人在刚刚接触的时候不会用的于是我就写了一个小软件来支持(只支持wind…

【AI+安全】基于大模型在流量分析领域应用的实践

一、内容概要 随着网络攻击手段的不断进化,流量分析已经成为确保网络安全的关键环节。传统的基于规则和机器学习的方法在一定程度上帮助我们识别和防范攻击,但随着网络攻击形式的多样化和复杂性增加,如何利用更强大的技术手段来分析网络流量,成为了当今网络安全领域的研究热…

RocketMQ实战—7.生产集群部署和生产参数

大纲 1.RocketMQ生产集群部署和生产参数分析 2.RocketMQ生产集群10wTPS压测 3.RocketMQ生产级故障案例1.RocketMQ生产集群部署和生产参数分析 (1)服务器数量 4C8G阿⾥云⾼配服务器共四台,公⽹IP假设如下: 139.224.217.92,106.15.250.248,47.102.152.14,139.224.212.58 (2)…

十二、MyBatis分页插件

十二、MyBatis分页插件@目录十二、分页插件12.1 分页插件使用步骤12.2 分页插件的使用12.3 测试案例本人其他相关文章链接 十二、分页插件 12.1 分页插件使用步骤 1. 添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>page…

htb Nunchucks walkthrough ssti + shebang绕过apparmor限制

注册发现注册失败扫描子域名 ffuf -u https://nunchucks.htb/ -w /usr/share/dirb/wordlists/common.txt -H "Host: FUZZ.nunchucks.htb" -fs 30589访问看看有啥随便输入个邮箱抓包看看 尝试ssti 注入发现确实存在在hacktrick上搜索payload https://book.hacktricks.…

P1551 亲戚

并查集还是不熟,还得练 #include<iostream> #include<set> #include<map> #include<algorithm> #include<vector> #define int long long const int N = 1e6; using namespace std; char* p1, * p2, buf[100000]; #define nc() (p1==p2 &&a…