返回顶部
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 52 下一页
摘要: 在字符串的头部插入'$',在每个字符之间插入'#'. 用p数组记录以某点为中心的最长回文半径,会发现,最长回文子串长度$maxlenth=p[i]-1$. 那么如何去求p数组呢?我们遍历每个字符,记录回文串能延伸到的最右端的位置$mx$,之后我们再去判断. (1) mx>i: 1:i的右边界小于mx 阅读全文
posted @ 2020-07-31 13:57 _Kolibri 阅读(112) 评论(0) 推荐(0)
摘要: 每次都去找想要的点,如果当前已经被占用了,那么标记一下,然后去找这个点的主人是否还有其他能连的点,若有,连这个点,然后当前的这个点就能连自己想要的点了 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cma 阅读全文
posted @ 2020-07-31 13:29 _Kolibri 阅读(159) 评论(0) 推荐(0)
摘要: 题意:有$n$个点,$m$条边的无向图,可以给每个点赋点权${1,2,3}$,使得每个点连的奇偶不同,问有多少种方案,答案对$998244353$取模. 题解:要使得每个点所连的奇偶不同,很明显是二分图染色,那么对于某一个联通块,我们可以对左边的点赋$2$,右边的点赋${1,3}$,那么左边的点没有 阅读全文
posted @ 2020-07-31 13:22 _Kolibri 阅读(146) 评论(0) 推荐(0)
摘要: 题意:有一个$n$个点的有向图,从$1$出发,问是否有负环. 题解:我们可以用SPFA来进行判断,在更新边的时候,同时更新路径的边数,因为假如有负环的话,SPFA这个过程一定会无限重复的遍历这个环,那么这个环中的边数也就会不断增加,因为我们只有$n$个点,所以假如某条路径的边数$\ge n$时,就说 阅读全文
posted @ 2020-07-26 18:06 _Kolibri 阅读(138) 评论(0) 推荐(1)
摘要: 题意:有$n$个点,$m$条双向边,两个方向的权值都是相等的,可以从$A$中的某个点出发走到$B$中的某个点,求所有路径中的最短距离,如果A和B中没有点联通,则输出$-1$. 题解:感觉是个阅读理解啊,题目看懂了就是个裸的单源最短路,我们首先将牛牛的所有星球初始化作为起点,然后建边跑个dijkstr 阅读全文
posted @ 2020-07-26 12:46 _Kolibri 阅读(188) 评论(0) 推荐(0)
摘要: 题意;将一组数重新排序,使得相邻两个数之间的最大差值最小. 题解:贪心,现将所有数sort一下,然后正向遍历,将数分配到新数组的两端,然后再遍历一次维护一个最大值即可. 代码: class Solution { public: /** * ​返回按照这些花排成一个圆的序列中最小的“丑陋度” * @p 阅读全文
posted @ 2020-07-26 12:39 _Kolibri 阅读(152) 评论(0) 推荐(0)
摘要: 题意:有一组数,每次将所有相等的偶数/2,求最少操作多少次使得所有数变成奇数. 题解:用桶标记,将所有不同的偶数取出来,然后写个while模拟统计一下次数就行. 代码: class Solution { public: /** * 返回一个数,代表让这些数都变成奇数的最少的操作次数 * @param 阅读全文
posted @ 2020-07-26 12:35 _Kolibri 阅读(161) 评论(0) 推荐(0)
摘要: 感觉挺简单的,Prim和Dijkstra差不多,Kruskal搞个并查集就行了,直接上代码吧,核心思路都是找最小的边. Prim int n,m; int g[N][N]; int u,v; int dis[N]; bool st[N]; int prim(){ me(dis,INF,sizeof( 阅读全文
posted @ 2020-07-24 15:28 _Kolibri 阅读(134) 评论(0) 推荐(0)
摘要: 题意:在二维坐标轴上给你一堆点,在x轴上找一个点,使得该点到其他点的最大距离最小. 题解:随便找几个点画个图,不难发现,答案具有凹凸性,有极小值,所以我们直接三分来找即可. 代码: int n; long double x[N],y[N]; long double check(long double 阅读全文
posted @ 2020-07-24 15:19 _Kolibri 阅读(419) 评论(0) 推荐(0)
摘要: 题意:有两个数组$a$和$b$,每次比较它们最左端的元素,取小的加入新的数组$c$,若$a$或$b$其中一个为空,则将另一个全部加入$c$,现在给你一个长度为$2n$的数组$c$,问是否能有两个长度为$n$的数组$a$和$b$构成. 题解:我们从左向右看$c$,记一个最大值$mx$,观察样例不难发现 阅读全文
posted @ 2020-07-24 15:10 _Kolibri 阅读(164) 评论(0) 推荐(0)
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 52 下一页