自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(363)
  • 收藏
  • 关注

原创 EPOLL(C/S模型)实现I/O复用多进程聊天室,通过共享内存、socketpair实现父子进程通信,通过信号量回收进程

非常巧妙的使用共享内存,通过给每个client编号以及BUFFER_SIZE保存需要广播和接受的内容,因为有了编号,所以父子进程的socketpair通信,我们只要传编号就可以表示这个client需要广播的内容了。最后就是里面注册的信号量,父进程不能直接说关闭就关闭,否则没有及时关闭的子进程会变成僵尸进程,所以我们通过注册的信号量来让系统走我们把所以子进程都关闭再关闭自己的逻辑。这里只展示了server端,client端可以用之前的poll写的。

2023-11-03 15:01:02 649

原创 Libevent实现server的三种方法,原生socket event 、bufferevent 、evconnlistener_new_bind

evconnlistener_new_bind内部帮我们使用了socket的accept bind等函数。bufferevent 帮我们更好的处理单纯的读写操作。可以用上篇文章的poll client进行测试。带有定时器超过时间没有读写操作就将断开连接。

2023-11-02 15:25:09 173

原创 POLL(C/S模型)实现简单聊天室,通过server广播信息

之前只学过select现在学了epoll和poll记录一下。参考Linux高性能服务器编程一书。

2023-11-02 09:52:39 219

原创 clion安装C++远程linux开发并调试 从装centos虚拟机到完美开发调试

一般 gcc gdb 版本都是比较低的,适配不了clion的最低要求。从vmware上安装虚拟机并提权开放ssh。注意版本,又踩个大坑。后续只需配置下远程部署即可。目前系统只支持3.26.

2023-10-24 17:17:29 585 5

原创 Educational Codeforces Round 32 G. Xor-MST 启发式合并字典树、Boruvka求最小生成树 + 最小异或字典树、分治

来与完整的作差,因为完整的肯定包含所有情况(有点可持续化的最终版本减之前的版本的感觉),利用差值判断其他连通块是否含有这个点。而字典树本身是能和连通块一样进行合并的,每颗字典树就相当于点,利用并查集找出他归属的树根节点,并查集本身又能记录每个连通块的。这里利用之前可持续化的一种思想,我们可以另外建一个完整的字典树(既有全部元素)。这样我们每次需要求出这个连通块和除了他本身处在的连通块中的元素能异或到的最小值,以及下标,并且把他们合并了。要求求出利用数组构成的生成树的最小的权值和。官方题解中给出了利用。...

2022-08-17 16:33:44 506 1

原创 Codeforces Round #718 (Div. 1 + Div. 2) D 棋盘步数回路 DP 动态规划 思维

给你一个大小N*M的棋盘网格,网格的每条线都有一条无向边,以及它的权值。要求求每个点出发走K步后回到起点的最小权值和。当K为奇数是必然回不到起点。特判。因为它是回路,我们只需求走k/2步的最小值再*2即可。然后就是DP状态定义F[i][x][y]从x,y出发走了i步的最小权值和。如何转移?因为无向边,所以我们走k步最小到达的点,必然我们可以反向的到达回去。相当于将状态等价为F[i][x][y]从未知点走了i步后到达x,y最小权值和。(这里很思维)这样我们就能很轻松的写出如下的转移方程。

2022-07-06 21:53:07 128

原创 2019银川区域赛 K题 Largest Common Submatrix 子矩阵(单调栈,悬线法两种解法)

给你两个矩阵矩阵内的数字为N*M的排列。找出两矩阵的子矩阵能相等的最大大小。N,M

2022-07-03 17:47:01 249 2

原创 AcWing 4481. 方格探索 双端队列bfs 最短路

如果我们能表达出到达每个点最小的向左数以及向右数,那么这个题目就很容易写出来了。试探看看有没有性质(也就是向右数和向左数有没有关系)我们先假设最小向右数为tp,最小向左数为tp2。当我们走到的格子纵坐标为 j , 起点纵坐标为 sy 。向右可走xx,向左可走yy 。可以推出此时的向左数为 tp3 = tp - ( j - sy ) 。根据单调性可得tp2==tp3.所以我们只需求出到达每个点的向右走的最小值即可。由于是01费用的路径。直接使用双端队列bfs,有费用放队尾,无费用放队头。很巧

2022-06-27 09:24:46 112

原创 AcWing 4487. 最长连续子序列 单调栈上二分 数组模拟栈的好处

首先讲公式化简为sum[r] - 100r > sum[l] - 100lsum为前缀和。这一步是很容易想到的,这样就只有一个变量了。然后就是怎么通过枚举一个i来确定前面的数小于自己且最远的数是什么。想了很久没想出来,y总这里使用了单调栈上二分来处理,之前没有见到过这种操作。先使用一个降序的单调栈来保证单调栈上的每个数都是最远的(手模理解)。如果这个数比栈顶还小,那肯定取不到答案,我们将它入栈。(如果一个数能取到答案,我们肯定不入队,因为在它前面肯定有更小的数)如果比栈顶大,说明存在答案。

2022-06-26 17:45:34 271

原创 Codeforces Round #611 (Div. 3) F 拓扑排序 构造树 思维

题目Polycarp 决定装饰他的房间,因为新年快到了。 Polycarp 将安装的主要装饰品之一是他将自己焊接的花环。由一根电线连接的几盏灯组成的简单花环对 Polycarp 来说太无聊了。他要焊接一个由 n 个灯和 n-1 根电线组成的花环。恰好一个灯将连接到电网,并通过电线将电力从它传输到其他灯。每根电线恰好连接两个灯;一个灯被称为该电线的主灯(从其他电线获得电力并将其传输到该电线的灯),另一个称为辅助灯(从该电线获得电力的灯)。显然,每盏灯最多有一根电线为其供电(此灯是该电线的辅助灯,而所有其他

2022-05-17 20:25:30 166 1

原创 Codeforces Round #791 (Div. 2) D 二分最小化最大值 拓扑排序 非联通图dfs判环

题目有一天,玛莎在公园里散步,在一棵树下发现了一张图表……很惊讶?你认为这个问题会有一些合乎逻辑和合理的故事吗?没门!那么,问题…Masha 有一个有向图,其中第 i 个顶点包含一些正整数 ai。最初,玛莎可以将硬币放在某个顶点。在一次操作中,她可以将放置在某个顶点 u 中的硬币移动到任何其他顶点 v,从而在图中存在有向边 u→v。每次将硬币放在某个顶点 i 时,玛莎都会在她的笔记本上写下一个整数 ai(特别是,当玛莎最初将硬币放在某个顶点时,她会在笔记本上写下这个顶点处的一个整数)。 Masha 想要

2022-05-16 19:41:36 115

原创 Codeforces Round #697 (Div. 3) G 线性dp 调和级数 数论

题目Polycarp 在街上发现了一个包含 n 个元素的数组。Polycarp 发明了他的阵列美感标准。如果每对不同的索引 i≠j 必须满足以下条件中的至少一个,他就称数组为美数组:ai 可被 aj 整除;或 aj 可被 ai 整除。例如,如果:n=5 and a=[7,9,3,14,63],则a数组不美观(对于i=4 and j=2,以上条件都不满足);n=3 且 a=[2,14,42],则 a 数组很漂亮;n=4 且 a=[45,9,3,18],则 a 数组不美观(对于 i=1 和 j=

2022-05-05 17:25:11 809

原创 Codeforces Round #697 (Div. 3) F 01矩阵行列异或变换 套路题 暴力 思维

题目给你一个01矩阵再给你一个目标01矩阵。你可以进行任意次的整行异或或者整列异或。问当前矩阵是否能通过这两种操作转换成目标矩阵。题解思路以前见过这种题,套路满满。我们可以先使用列异或使得第一行符合全部条件,这样我们就只能使用行异或了,因为一旦使用列异或就会使得第一行不符合要求。直接打暴力就行了。套路题。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define

2022-05-05 16:14:12 274

原创 Codeforces Round #667 (Div. 3) E 双指针预处理线性dp

题目给你两个长度为K的板子,有N个往下掉的点,问最多能装多少个点。题解思路处理放左右两个部分的最大值再求和。和那道蓄意轰拳有点像。参考链接AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing namespace std;const int INF =

2022-04-30 13:58:31 303

原创 牛客xb赛48 F 孤独的树 树形dp 处理森林 筛法

题目传送门题解思路因为N最大就是1e5,所以对与每个权值他最多只能有6个不同的质因子。我们每次只能去除一个质因子,所以,如果要去除这个点的这种质因子就多次去除这个即可。我们从最大的质因子不断往小删。这样就能O1获取我们此时到底要删谁。有相同质因子的点可以构成森林(多个连通块),我们对每个连通块,每次都处理掉一种质因子,这样就能保证复杂度在Nlog(N)。对于每个连通块处理同种质因子有树形dp来计算最小的次数,最后再累加。dp[i][0] 表示以i为根节点的子树,根节点不进行删除操作使得满足

2022-04-24 15:19:08 1399

原创 AtCoder Beginner Contest 247 E 双指针维护固定最大最小值区间的数量 状压DP

题目给你一个大小为n的数组A,以及一个X和Y。要求求出满足最大值为X且最小值为Y的区间数量。数据范围题解思路很久没写双指针题了,有点不太行,所以一直没自己补出来,一开始看的dls的状压dpdp[i][0/1][0/1] 定义为以i为右端点的连续区间中 有或者没有最小值Y有或者没有最大值X的数量。再通过此时的a[i]值来更新到这个点的数量。每次取dp[i][1][1]即可。梦中把这题用双指针补了。结果思路真是对的,官方题解也讲了双指针,可惜我看不懂英文。所以才只能自己推。我们只需维

2022-04-14 14:05:42 665

原创 Educational Codeforces Round 126 (Rated for Div. 2) D 线段树维护差分数组

题目给你一个数组A,每次可以指定一个大小为K区间L,R。使得从L到R的每个数分别减1,2,3,4,5…k。问至少需要多少次才能让数组的全部数变成非正数。题解思路参考pzr佬参考ygg佬可以直接贪心的正向考虑,从a1开始这个数肯定要变成非正数,所以我们直接使用a1次将它改变,每次只减1所以得k次。但是k个区间里的数都要减去对应的数,我们可以都减去1来求前缀(因为上面那个很明显是个公差为1的等差)。我们还得消除这个前缀给之后的点带来的影响,所以得在R+1加上K来抵消影响。要使用区间加减法可以用

2022-04-11 17:12:53 887

原创 AtCoder Beginner Contest 245 E 贪心 multiset 二分

题目你有n个巧克力和m个盒子,巧克力和盒子都是矩形,所以每个巧克力有对应的长宽,盒子也是同理。一个盒子只能装一个巧克力。问所有巧克力是否都能被装下。题解思路贪心策略。每个巧克力肯定是在大于等于自身长度的盒子中选择一个盒子。选择的盒子的宽度肯定要是大于等于自身宽度的最小的一个。不妨先满足一个条件,我们将盒子与巧克力一起按长度排序。逆向处理,从宽度最大的往前遍历,如果是盒子加入能选择的集合中,如果是巧克力,就二分出情况来。利用multiset就能处理二分宽度以及每个盒子选择完的删除还有重复情

2022-03-30 19:21:30 1005

原创 4319. 合适数对 数论 因式分解 算术基本定理 同余

题目传送门题解思路由算术基本定理,可以将每个ai拆分成若干个质数的幂次的乘积。如果想构成x的k次方,两个数拆分的每个质数的幂次也必须满足相加余k为0。所以,问题变成了,对这个数我们去找之前可以和他的每个质数的幂次相加余k为0的数的数量。这好像是个求有几个相同的多元组问题,但是,又有算术基本定理逆向,这样我们可以直接确定我们找的这个多元组对于的数是多少,直接开个map映射即可。(这一步,没想出来)对每个幂次,我们只关心模k的余数。AC代码#include <bits/stdc++.h

2022-03-29 16:49:44 1245

原创 AtCoder Beginner Contest 244 E 线性dp 动态规划 图论

题目给你N个点M条无向边。要求求出从点S出发,点T为终点的路径中路径长度为K且经过点X偶数次(包括0次)的路径数有多少条。N <= 2000M <= 2000答案对998244353取模题解思路想了半天什么dfs什么组合数学都出来了。直接dpf[i][j][k] 走了i步停在j点经过X点的奇偶性为k(0或者1)的路径数。初始化f[0][s][0] = 1 ;转移对于k步枚举所有边,如果是X点就改变k的奇偶性,不是就直接加。AC代码#include <bi

2022-03-22 16:45:57 1028

原创 AtCoder Beginner Contest 244 F 多源BFS 状态压缩 位运算 动态规划

题目给你N个点M条无向边的图,每个路径可以被定义为一个序列,AAi,表示路径经过这个点的奇偶性只有1 (奇)0(偶) ,特别的经过0次时属于偶。要求求出序列A的每种情况(即一共2的N次方种情况)的最短路径大小的总和。N <= 17题解思路因为数据范围小,考虑状态压缩,当这个状态的点经过一条边变成另一种状态的时候,就是将两种状态进行异或处理。这样我们只将所有起点状态放入队列中跑bfs,即多源bfs,就能处理除其他状态的最短路径大小。每个状态又必须又对应的边来转移,所以我们的dis数组需

2022-03-22 16:30:11 922

原创 Codeforces Round #623 (Div. 2) D 优先队列 并查集 数据结构 思维

题目VK 新闻推荐系统每天为每个用户选择 n 个不相交类别之一的有趣出版物。每个出版物都属于一个类别。对于每个类别,我批处理算法选择 ai 出版物。最新的 A/B 测试表明,如果每个类别在每日推荐中的出版物数量不同,则用户阅读推荐出版物的积极性更高。目标算法可以在 ti 秒内找到第 i 个类别的单个有趣出版物。将出版物添加到批处理算法执行结果所需的最短总时间是多少,因此所有类别都有不同的出版物数量?您无法删除批处理算法推荐的出版物。输入输入的第一行由单个整数 n 组成——新闻类别的数量(1≤n≤2

2022-03-16 19:09:47 1594

原创 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)F 三分 几何分布求期望

题目传送门题解思路之前只听说过三分,这是第一次写三分的题目,没想到是在区域赛真题上。根据期望公式二阶导推断出是凹函数,三分求凹点。铜牌题就几十行。公式以及三分算法参考这个博客AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing namespace std;

2022-03-13 15:16:44 230

原创 Educational Codeforces Round 124 (Rated for Div. 2) D 多源BFS 思维

题目在平面上给你 n 个不同的点。第 i 个点的坐标是 (xi,yi)。对于每个点 i,找到不属于给定 n 个点的整数坐标最近的点(根据曼哈顿距离)。如果有多个这样的点 - 您可以选择其中任何一个。两点 (x1,y1) 和 (x2,y2) 之间的曼哈顿距离为 |x1−x2|+|y1−y2|。输入输入的第一行包含一个整数 n (1≤n≤2⋅105) — 集合中的点数。接下来的 n 行描述点。其中第 i 个包含两个整数 xi 和 yi (1≤xi,yi≤2⋅105) — 第 i 个点的坐标。保证输

2022-03-13 13:49:38 1945

原创 Codeforces Round #776 (Div. 3) E 二分 贪心 分类讨论 边界处理 multiset

题目现在 Dmitry 有一个会话,他必须通过 n 次考试。会议从第 1 天开始,持续 d 天。第i次考试将在ai(1≤ai≤d)那天进行,所有ai-都是不同的。样本,其中 n=3,d=12,a=[3,5,9]。橙色——考试日。第一次考试前,Dmitry 休息 2 天,第二次考试前休息 1 天,第三次考试前休息 3 天。对于课程安排,Dmitry 考虑了一个特殊值 μ——所有考试的考试前休息时间中的最小值。例如,对于上图,μ=1。换句话说,对于日程安排,他精确地计算了 n 个数字——他在考试 i-1

2022-03-09 18:03:50 194

原创 Codeforces Round #769 (Div. 2) D 区间gcd st表 二分 贪心

题目长度从1到n的每个区间都需要求最小的操作数。题解思路首先区间gcd(l,r)定住一边的话是具有单调性的。定住l增大r,因为出来的gcd肯定是不增的,也就是降序。其次,利用st表,可以O1得出某段区间的gcd。之前的st表题目为什么可以用呢?因为只要我们的gcd能正确包括整个范围,不论有些地方重复覆盖了,也一样可以得出正确的gcd。这和最最大值是一个道理。因为答案固定了1到n的区间,所以我们定住右端点r。往有可能的地方进行二分搜索出有可能等于区间大小的部分。如果等于区间大小那么我们可

2022-02-24 20:34:56 113

原创 340. 通信线路 二分枚举答案 最小化最大值 最短路里套二分

题目题解思路性质如果存在答案,那么答案必然是某条1到n的路径中边的第k+1大值。且这条路径的第k+1大值最小,(大于答案的边只有k条,即最小)。二分答案维护每条路径中最小的大于答案的边的数量。(满足上述性质的最小)当答案大时,此时大于答案边的数量小于k,因为它不是第k+1大值了。反之大于。另外这题因为取01最短路,可以利用双端队列O(n+m)来手动维护单调性。AC代码#include <bits/stdc++.h>//#include <unordered_ma

2022-02-23 20:59:55 130

原创 Codeforces Round #766 (Div. 2) D 数论 调和级数 log

题目你有一个数组 a1,a2,…,an 由 n 个不同的整数组成。 您可以对其执行以下操作:从数组 ai 和 aj (i≠j) 中选择两个元素,使得数组中不存在 gcd(ai,aj),并将 gcd(ai,aj) 添加到数组的末尾。 这里 gcd(x,y) 表示整数 x 和 y 的最大公约数 (GCD)。注意每次操作后数组都会发生变化,后续的操作都是在新数组上进行的。您可以对数组执行操作的最大次数是多少?输入第一行由一个整数 n (2≤n≤106) 组成。第二行由 n 个整数 a1,a2,…,a

2022-02-22 20:29:00 113

原创 Codeforces Round #772 (Div. 2) D 无限集 二进制枚举 思维

题面给定一个由 n 个不同的正整数组成的数组 a。让我们考虑一个无限整数集合 S,它包含所有满足以下条件之一的整数 x:x=ai 对于某些 1≤i≤n。x=2y+1 且 y 在 S 中。x=4y 并且 y 在 S 中。例如,如果 a=[1,2],则 S 中的 10 个最小元素将是 {1,2,3,4,5,7,8,9,11,12}。找出 S 中严格小于 2的p次方 的元素个数。 由于这个数字可能太大,所以以 109+7 为模打印。输入第一行包含两个整数 n 和 p (1≤n,p≤2⋅105)

2022-02-21 16:46:20 477

原创 Educational Codeforces Round 122 (Rated for Div. 2) D 01背包 动态规划

题目你有一个大小为 n 的整数数组。 最初,a数组的所有元素都等于1。可以执行以下操作:选择两个整数i(1≤i≤n)和x(x>0),然后将ai的值增加⌊aix⌋( 即使 ai=ai+⌊aix⌋)。执行完所有操作后,您将收到 ai=bi 的所有 i 的 ci 币。您的任务是通过执行不超过 k 个操作来确定您可以接收的最大硬币数量。n <= 1e3bi >= 1bi <= 1e3k <= 1e6题解思路因为b数组的值都比较小,我们可以先预处理出从1到达每个比100

2022-02-14 20:00:01 523

原创 牛客xb月赛43 F 寻找多源起点和图中其他点奇偶性相同 的 点 思维 BFS

题目题解思路根据题目意思,我们貌似就是要找到一个点,让多个起点对于这个点的最短路长度奇偶性完全相同。很容易想到,这个点到了之后可以在终点反复横跳,这样不会改变奇偶性。但是如何只有这个条件的话,这题还是很难做出来。更暴力的转化取一个点作为起点,跑bfs,让它确定到每个点具有的所有奇偶性即可。这种bfs属实巧妙,之前没有接触过。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queu

2022-01-21 16:28:36 239

原创 AcWing 1952. 对map 的 差分 + 离散化 利用map 超级暴力

题目题解思路一开始枚举温度 排序二分去了,仔细思考发现并不能保证另一边的情况。所以不能二分。N只有20万个。我们可以直接差分,即对每个温度区间的情况都差分。然后就能直接枚举出答案。这里能直接利用map来离散化。超级暴力。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long lon

2022-01-20 20:24:42 862

原创 Codeforces Round #615 (Div. 3) F 树的直径 + 多源BFS

题目给你一颗有n个点的树,要求给出三个端点,使得三个端点组成的简单路径最大。N <= 2e5题解思路三个点中必然有两个点相连是树的直径,剩下点那个可以利用路径上点的多源最路径来求出。上面这个结论,用反证法其实挺好证的。借鉴了何逊的代码。果然会C++和不会的区别好大啊。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,in

2022-01-04 17:02:10 366

原创 Codeforces Round #605 (Div. 3) E 多源BFS 超级源点

题目给你一个长度为N的数组A,Ai有自己的奇偶性,但是他能和 i- a[i] 和i + a[i] 的地方互换。但是需要一次操作数。要求求出所有元素交换出相反的奇偶性所需的最小操作数。如果不能输出-1。题解思路一开始DFSWa了。应该是因为什么环的更新顺序问题。我也不太清楚。建立两个超级奇数点和超级偶数点。0费用连通奇数偶数点。跑BFS就行了。因为可能有环,所有我们需要保证奇数或者偶数点只由超级奇数或者超级偶数点延申。特判即可。AC代码#include <bits/stdc++.h&

2021-12-31 11:31:02 513

原创 Codeforces Round #605 (Div. 3) D 最长连续上升子序列 变式 预处理前缀后缀 枚举

题目给你一个长度为N的数组A,要求只能删除1个或者0个元素,使得原数组的最长连续上升子序列最长。n < 1e5题解思路读了假题,一开始以为是最长上升子序列的模板题,结果是连续的,想太多了。处理这样删除问题的经典处理方法,预处理出两边不变的部分(前缀后缀),再枚举要删除的数,求最值即可。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair&l

2021-12-29 16:27:56 426 1

原创 Educational Codeforces Round 90 (Rated for Div. 2) D DP 最大子段和 差分

题目给你一个有n个元素的数组A。选择两个连续的 l r l < r 翻转数组只能通过一次或者0次翻转,使得数组的偶数位和最大。题解思路如果数组进行了翻转,可能选择奇数开始偶数结束,或者相反,这样就可以让这一段的奇数偶数总和互换。放到数组上,就是两种情况。从 i - 1 到 i 或者从 i 到 i + 1 。i为偶数。我们做出差分数组。求这个差分数组里的最大子段和不就是可以增加的最大值了吗。最大子段和AC代码#include <bits/stdc++.h&gt

2021-12-28 16:37:33 603

原创 4202. 穿过圆 bitset 位运算去重 STL

题目时限0.3s题解思路因为我们可以走任意路径到达,所以只需要穿过,包含这个点但是不包含另一个点的圆。可以预处理出每个点被几个圆包含了。这样然后进行对两个预处理的值去重操作即可。想set去了卡了好久。没想到是bitset来异或去重。属实巧妙。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define

2021-12-27 17:25:06 235

原创 第十三届西南民族大学程序设计竞赛 G 并查集的运用 思维

题目题解思路讲每个列当成连通的边,将行作为连通的点。这样对每个行都有对应的坐标,进行降维处理。出现列的时候肯定是让上下的行连通,出现行的时候,即让左右的行连通。并查的时候查询是否已经是个连通块即可。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,int>#define ll long longusing name

2021-12-27 13:41:33 316

原创 Educational Codeforces Round 89 (Rated for Div. 2) D gcd拓展公式 卡longlong除法

题目给你N个数对于每个数Ai问你能否给出一个答案,Ai是否存在两个因子d1 > 1 d2 > 1满足gcd(d1+d2,Ai) == 1N <= 5e5题解思路引入一个定理这题就很简单了,直接枚举比他小的质数,把这个质数拿从出去,除出另一边d2,然后判断是否为1即可。d1肯定只有1个质数组成,而d2就由其他质数组成。他们肯定是互质的,所以满足上面的式子。这题在用质数试除的时候被卡longlong除了,建议少用longlong除。AC代码longlong乘#i

2021-12-24 17:01:59 352

原创 Educational Codeforces Round 47 (Rated for Div. 2) D GCD 构造图

题目给你n个点m条边,问你是否可以构造出一个图,图里的每一条边相连的两个点的编号的gcd等于1。n < 1e5m < 1e5题解思路因为m很小,直接考虑暴力,因为我们可以一条一条的建,建满了直接弹出去就行了。再特判给的边能不能构成图即可。这题明显白给,就是不敢写。AC代码#include <bits/stdc++.h>//#include <unordered_map>//priority_queue#define PII pair<int,

2021-12-22 19:58:25 645

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除