
luogu
新笑雨
这个作者很懒,什么都没留下…
展开
-
luogu 4917
题目链接解法首先观察一下,可以发现对于a,b,正方形的边长是lcm(a,b)。那么买的地板的数量是(a∗b)gcd(a,b)2\frac{(a*b)}{gcd(a,b)^2}gcd(a,b)2(a∗b)那么对于一个n的答案就是:ans=∏i=1n∏j=1ni∗jgcd(i,j)2ans=\prod_{i=1}^n \prod_{j=1}^n \frac{i*j}{gcd(i,j)^2}an...原创 2020-04-07 15:52:25 · 136 阅读 · 0 评论 -
luogu 4081
题目链接解法广义SAM:笔者建广义SAM的做法是一个字符串结束之后直接把指针指回根,似乎并不是非常对的做法。。。回到题目:将广义SAM建出来以后,把每个字符串在SAM上跑,每个经过的节点打上标记,如果某个节点只有一个标记,说明只有一个字符串拥有这个节点代表的子串,这些子串就需要加到该字符串的答案中。#include<bits/stdc++.h>using namespace ...原创 2020-03-23 16:54:24 · 129 阅读 · 0 评论 -
luogu 1527
题目链接解法整体二分首先有一个显然的对于每组询问都二分答案,然后O(n2)O(n^2)O(n2)查询询问矩阵的做法。在此基础上,本来笔者想要用主席树的在线算法解决问题,但是复杂度是O(qnlog2n)O(qnlog^2n)O(qnlog2n),不能通过,随即考虑整体二分。整体二分的思路是将所有操作放在一起处理,一次性把所有询问的答案处理出来。考虑本题,将矩阵内的每个值当作一次赋值操作,...原创 2020-03-09 17:30:41 · 123 阅读 · 0 评论 -
luogu P4233
题目链接题意从有哈密尔顿回路的竞赛图中随机选取一张,图上哈密尔顿回路数的期望是多少,如果没有这样的竞赛图,输出-1,mod 998244353数据给定n,表示竞赛图的点数,需要对从1到n的每个值都计算一次n≤1e5n\le 1e5n≤1e5解法考虑知道n个点的竞赛图中总共有多少条哈密尔顿回路,首先需要一个n个点的环排列,方案数是(n−1)!(n-1)!(n−1)!,然后剩下来的边随便...原创 2020-02-25 21:48:54 · 133 阅读 · 0 评论 -
luogu P4196
题目链接题意给一些多边形,求这些多边形的面积并数据范围每个多边形至多50条边,至多有10个多边形解法半平面交这里介绍的是O(nlogn)O(nlogn)O(nlogn)的做法:首先考虑如何比较优秀的直线求交,这个是接下来算法步骤的灵魂问题考虑使用面积法:如图,可以看到三角形p1p2v1和四边形p1p2v1v2同底,所以它们的面积比就是高之比,又由于相似,它们的高之比可以看成线...原创 2020-02-20 16:50:08 · 196 阅读 · 1 评论 -
luogu P6059
题目链接题意数据范围n≤1000集合中的数≤10000n\le 1000 集合中的数\le 10000n≤1000集合中的数≤10000解法组合数学问题思路:首先考虑每个数在前k轮后被选为最大值的概率,然后比它大的数都可能作为答案,这里需要注意特判的是如果前k轮选的最大值就是整个集合的最大值,那么前k轮中剩下的每个数都有均等的机会成为答案。其实麻烦的是推式子。可以看代码理解#in...原创 2020-02-10 17:49:18 · 166 阅读 · 0 评论 -
luogu P4308
添加链接描述题意有一个有向图,每个点有权值,有一个起点和一只蚂蚁,然后蚂蚁初始体力值为1,蚂蚁在每个点能够收获的权值就是当前体力值和当前点的权值的乘积.蚂蚁每移动一步,体力值就会乘上p问最大的权值是多少,保留一位小数数据范围点数<=100 边数<=1000 ,p<=1e-6,点权<=100解法首先由于求的是近似解,所以考虑一直求解直到所剩的体力值不再足以影响答...原创 2020-01-18 15:05:40 · 145 阅读 · 0 评论 -
luogu P2503
题目链接【数据规模】对于 40%40\%40% 的数据,保证有 m≤n≤10m \le n \le 10m≤n≤10,2≤m≤62 \le m \le 62≤m≤6对于 100%100\%100% 的数据,保证有 m≤n≤20m \le n \le 20m≤n≤20,2≤m≤62 \le m \le 62≤m≤6解法模拟退火首先考虑把均方差的式子划开,找出哪些项和分组的方案有关先不...原创 2020-01-13 15:23:59 · 178 阅读 · 0 评论 -
luogu P3286
题意方伯伯有一天去参加一个商场举办的游戏。商场派了一些工作人员排成一行。每个人面前有几堆石子。说来也巧,位置在 i 的人面前的第 j 堆的石子的数量,刚好是 i 写成 K 进制后的第 j 位。现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 L,R。方伯伯要把位置在 [L, R] 中的每个人的石子都合并成一堆石子。每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,...原创 2020-01-10 16:20:56 · 145 阅读 · 0 评论 -
luogu P3288
题目链接题意有一张满流的DAG,其中起点只有一条出边,然后每条边有扩容和压缩的费用,还有单位运输量的费用,除了起点所连的边不能修改容量,其它的边都可以,问至少修改一条边,且最大流量不减少的情况下,X−YK\frac{X-Y}{K}KX−Y最大是多少,其中X表示原来的运输费用,Y表示现在的运输费用+修改边容量的费用,K表示修改边容量的次数.数据保证答案大于0数据范围1<=N<...原创 2020-01-10 14:34:30 · 180 阅读 · 0 评论 -
LCT备忘(luogu P3690)
LCT中的splay维护的关键字是深度;pushdown和pushrev是两种操作,注意只有在makeroot里是直接pushrevsplay前要把这个节点前所有有标记的节点标记下传LCT自己的几个操作要理解:access:打通x到根的路径#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;in...原创 2019-12-24 09:19:30 · 118 阅读 · 0 评论 -
luogu P4357
题目链接题意给了n个平面上的点,求欧式距离下第k远点对数据范围1≤n≤1e5,1≤k≤100,点的坐标≤2311\le n\le1e5,1\le k\le100,点的坐标\le 2^{31}1≤n≤1e5,1≤k≤100,点的坐标≤231首先kd-tree本质也只是一棵BST,然后我构建这棵树的方式是维度轮换,具体来讲就是第一层用一个维度排序,第二层用另一个维度排序,每一层都和上一层的维...原创 2019-12-28 18:53:29 · 125 阅读 · 0 评论 -
luogu P3810(kd-tree)
题目链接题意:三维偏序kd-tree解法首先暴力的kd-tree是3维的,过不去.所以需要先把一维排序,然后对剩下的2维建kd-tree这个kd-tree是在线插入的,所以需要定时重构,然后重构的次数比较玄学,由于kd-tree本身复杂度O(nn)O(n\sqrt n)O(nn)左右,所以块长一开始设成了n\sqrt nn,但是过不去(甚至没有3维的kd-tree暴力快),后来把块长*...原创 2019-12-30 10:41:15 · 216 阅读 · 0 评论 -
luogu P3469
题目链接题意一张联通无向图,对每个点询问删去该点后,有多少对点本来联通,现在不连通.数据范围点数≤1e5\le 1e5≤1e5,边数≤5e5\le 5e5≤5e5解法割点板子题:首先可以发现只有割点才会额外造成某些点连通性的改变,所以求割点的同时计算贡献.就是记录每个点在dfs树上的子树大小,然后如果是割点,就把这个点的每个儿子的子树节点数乘起来,最后还要+n-1,表示和该点的所有...原创 2020-01-07 14:49:09 · 297 阅读 · 0 评论 -
luogu P5043
题目链接题意给m(m<=50)棵树,每棵树的节点<=50,问和每棵树同构的编号最小的树是哪一棵,每棵树的编号就是输入时的顺序.解法树hash:dfs的同时给每个节点计算一个hash值,然后最后就会有根节点的hash值,因为这种hash与选择哪个点为根关系很大,所以需要把每个点都当做根跑一边,然后得到关于一棵树的每个节点作为根的hash数组,为了比较两棵树是否同构,还需要将这个数...原创 2020-01-06 14:26:37 · 212 阅读 · 0 评论 -
luogu P2057
题目链接题意有n个人,和m对朋友关系,每个人有一个01标记,给每个人从新安排01标记,如果于其本来的标记不同,或者一对朋友的01标记不同,择算作一次冲突,问最少会有几次冲突。解法最小割,首先开两个点S,T分别表示一个人原来的编号是0还是1,然后每个人向对应的节点连边,然后每对朋友之间也连边,注意这里连双向边,因为朋友关系是相互的。这里割一条边的意义相当于发生了一次冲突。#include&...原创 2020-01-01 21:21:41 · 146 阅读 · 0 评论 -
luogu P4070
题意:在线求一个字符串的本质不同子串个数字符串长度≤1e5\le 1e5≤1e5 字符集大小1e91e91e9解法:sam直接在线插入每个字符,插入的时候考虑新字符的贡献,就是len[p]−len[fa[p]]len[p]-len[fa[p]]len[p]−len[fa[p]],len[p]len[p]len[p]指的是p这个节点所代表的字符串的最长长度.#include<bits/...原创 2019-12-21 10:29:48 · 120 阅读 · 0 评论 -
luogu P3620
题意一条数轴上有n个点,需要你给这n个点配对,每个点至多只能属于一个对,一共需要配k对,使得每对点的距离相加之和最小,保证有解数据范围1≤n,k≤1e5,0≤点的坐标≤1e61\leq n,k\leq1e5,0\leq 点的坐标 \leq 1e61≤n,k≤1e5,0≤点的坐标≤1e6解法首先题目条件得出k≤n/2k \leq n/2k≤n/2,所以每对只会选择相邻两点,然后就有了一个初...原创 2019-12-16 18:26:54 · 183 阅读 · 0 评论