- 博客(9)
- 收藏
- 关注
原创 CodeForces - 1271D
很多时候我们会为带有 gcd\gcdgcd 的和式的处理而发愁,因为 gcd\gcdgcd 实在不好处理,于是我们一般会退而求其次去枚举 gcd\gcdgcd 来求解问题。然而,找到所有最大公约数为给定值的数对是一件非常困难的事,这件事情往往会成为卡住我们思路的关键,况且大多数时候题目的数据范围是不允许我们枚举数对的。 莫比乌斯反演是一个处理带有 gcd\gcdgcd 的和式的常用套路,他允许你把枚举最大公约数转化为枚举约数,这样处理起来会方便很多。 莫比乌斯函数 我们先考虑这样一个函数 μ(n)\
2021-11-18 13:55:50 83
原创 CodeForces - 1271D
显然对于每个城堡,派人越晚越好,我们令每个城堡只会在进行到最晚的能派人到这个城堡的时候考虑是否派人,对于派人,攻占完每一个城堡后考虑派人,显然先考虑重要性最大的。 那么我们就可以进行 dp 了,设 $dp[i][j]$ 表示攻占完第 $i$ 个城堡后,有 $j$ 个人的答案。 枚举当前城堡打完后会派出去几个人进行转移。 ``` #include <bits/stdc++.h> #define mp(x, y) make_pair(x, y) #define pb emplace_back
2021-11-18 13:53:11 203
原创 E - Easy genes
E 题目大意 求长度为 lll 的不包含子串 101 和 111 的 01 串有多少个。 solution 考虑对于 01 串 101 和 111 建立关于字符串匹配的自动机(AC自动机),如图: 当匹配到 444 号节点的时候说明匹配到了一个 101 或者 111,我们最终要求的就是匹配不到 444 号节点的串的数目。 记录 f[i][j]f[i][j]f[i][j] 为当前填到第 iii 个数,匹配到自动机上的状态 jjj 的方案数,这样我们就可以根据自动机的转移来建立 dp 方程如下: f[i][0
2021-07-20 23:13:57 195
原创 CodeForces - 732D
二分答案即可。 在一个天数 xxx 内考虑,显然考试越往后拖越好,于是尽量把考试往后拖。 至于复习,当然是先考的先复习,判断一下就行了。 注意细节 #include <bits/stdc++.h> const int MAXN = 1e5 + 6; int n, m; int d[MAXN], a[MAXN], p[MAXN], pp[MAXN]; bool check(int x) { int cnt = m; memset(p, 0, sizeof(p)); memset(pp,
2021-03-25 22:20:04 95
原创 Frogs - HDU5514
icpc沈阳2015的题目。 容斥原理和数论的应用。 题目大意为给你一个数组 a[i]a[i]a[i](a[i]a[i]a[i] 即为第 iii 只青蛙的步长) 和若干格子编号为 000 到 m−1m - 1m−1,对于任意的正整数 k,ik, ik,i,编号为 k∗a[i]mod mk * a[i] \mod mk∗a[i]modm 的格子会被占用,问所有被占用的格子的编号之和。 首先对于一个 a[i]a[i]a[i],显然所有编号为 gcd(a[i],m)\gcd(a[i], m)gcd(a[i]
2021-02-01 19:10:04 122
原创 点分治
题目点这里 大连2016 的 G 题,调了半天的点分。 题目为给你一棵树,树上的每个点都有一个权值,求包含所有权值的路径数目。 由于权值最大只有 101010,所以点分治的思路很明显了,枚举每条路径起点的同时枚举权值找终点,时间复杂度 O(2knlogn)O(2^kn\log n)O(2knlogn)。 #include <bits/stdc++.h> const int MAXN = 5e4 + 5; struct Edge { struct Node *to; struct Edg
2021-01-29 18:41:43 133 1
原创 莫比乌斯反演!
在平时,我们经常会需要对带 gcd\gcdgcd 的和式进行处理,然而,gcd\gcdgcd 实在难以处理,所以我们一般退而求其次,改为枚举 gcd\gcdgcd,然而,这也不是个很好的办法,因为我们无法很快的求出有哪些数对 (x,y)(x, y)(x,y) 满足 gcd(x,y)=k\gcd(x, y) = kgcd(x,y)=k,而处理带 gcd\gcdgcd 的和式的一大杀器便是莫比乌斯反演,所以我们来介绍一下。 文章目录莫比乌斯函数莫比乌斯函数的重要等式莫比乌斯反演公式莫比乌斯反演的作用另
2020-07-07 12:57:36 251
原创 20200706D
题目点击这里 题目大意 给定一个长度为 nnn 的序列 aia_iai,共有 mmm 个询问,每次询问包含一个区间 l,rl, rl,r,求出满足 x,y∈[l,r],ax=ayx,y \in [l, r], a_x = a_yx,y∈[l,r],ax=ay 的所有数对 (x,y)(x, y)(x,y) 中 ∣x−y∣|x - y|∣x−y∣ 的最小值,即相等的两个元素之间的最小距离。 解法 不难想到对于 axa_xax 来说只有上一个和他相同的元素或者下一个和他相同的元素才有可能对答案造成贡献,所
2020-07-06 22:54:54 187
原创 网络流!
网络流!网络流模型最小割模型二分图最大匹配二分图的最小点覆盖二分图的最大独立集二分图的最大团两个集合!最大权闭合子图DAG上的最小路径覆盖有上下限的网络流费用流模型有递增费用的费用流 网络流好难啊! 整理一下网络流的常见模型。 网络流模型 网络流的模型很多很难想,但是如果知道建图方式后就会发现建图很显然。 最小割模型 我们已经知道了最大流是什么东西,那么最小割就是在这个图上删掉若干的边,使得不存在一条从源点到汇点的路径,并且删掉的边权值和最小。 做法就是直接对原图跑最大流即可,求出来的最大流就是最小割。 这
2020-07-06 13:01:04 157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人