09 2018 档案
摘要:CSL的校园卡 思路: bfs,用状压表示走过的区域,然后和x1,y1,x2,y2构成所有的状态,然后标记一下就可以了 代码:
阅读全文
摘要:方格填色 思路: 用矩阵快速幂优化dp 代码:
阅读全文
摘要:D - Factorization 思路:把相同的质因子看成相同的小球,求把这些小球放进n个盒子里的方案数。 代码:
阅读全文
摘要:1853 思路: 容斥原理 先预处理出所有的幸运数字,然后去重,然后用容斥原理求 有一个优化,从大的开始求lcm,如果大于b了就不用枚举了,这是因为两个大于1e5的乘起来就会 所以最后枚举的子集只用在小于1e5中考虑就行了,小于1e5只有很少 还有要用unsigned long long,不然会溢出
阅读全文
摘要:ABland Yard 思路: 用了类似拓扑排序的方法来判环 代码:
阅读全文
摘要:4053 思路: 主席树 先分别求前缀和后缀的逆序数 然后要求某一段的逆序数,就可以根据前缀或着后缀根据容斥求出答案, 这样需要枚举这一段中的数,求之前或者之后有多少个比他大或比他小的数, 这个可以通过用主席数维护权值线段树来做 然后每次枚举断开后小的那段区间,这样最多需要枚举n*log(n)次 复
阅读全文
摘要:E - Maximum Matching 思路: 半欧拉图 定理:一个度数为奇数的点的个数小于等于2的联通图存在欧拉通路,即半欧拉图 对于这道题目的图,点的个数为4,所以最坏的情况下4个点的度数都为奇数,在这种情况下只要删去一条边就可以满足条件了 欧拉回路算法:大圈小圈法,从起点开始跑每条边,把每条
阅读全文
摘要:错排数:D(n) = (n-1) [D(n-2) + D(n-1)], D(1) = 0, D(2) = 1 问题:n封信放入n个信封,要求全部放错方案数 解决方案: 假设n个元素的错排数记为D(n) 第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法; 第二步,放编号为k的元素,这时
阅读全文
摘要:数数字 思路: 数位dp 代码:
阅读全文
摘要:Ka Chang 思路: dfs序+树状数组+分块 先dfs处理好每个节点的时间戳 对于每一层,如果这一层的节点数小于sqrt(n),那么直接按照时间戳在树状数组上更新 如果这一层节点个数大于sqrt(n),那么直接存一下这一层每个节点的大小(都是一样的),这样的层数不会超过sqrt(n)层 然后查
阅读全文
摘要:中位数 思路: 二分答案 代码:
阅读全文
摘要:括号 思路: dp 状态:dp[i][j]表示到i位置为止未匹配的 '(' 个数为j的方案数 状态转移: 如果s[i] == '(' dp[i][j] = dp[i-1][j] + dp[i-1][j-1] 如果s[i] == ')' dp[i][j] = dp[i-1][j] + dp[i-1][
阅读全文
摘要:3949 思路: 线性基,线性基的每个元素尽可能小 将k转换成二进制与排好序的线性基相对应 如果线性基的个数小于n,说明n个元素线性相关,所以可以构成0,k要减1 代码:
阅读全文
摘要:D - All Your Paths are Different Lengths 思路: 二进制构造 首先找到最大的t,使得2^t <= l 然后我们就能构造一种方法使得正好存在 0 到 2^t - 1 的路径 方法是:对于节点 i 到 i + 1,添加两条边,一条边权值是2^(i-1),一条边权值
阅读全文

浙公网安备 33010602011771号