上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 48 下一页
摘要: 简述 用于优化于深度状态有关的 dp 转移,时空复杂度均为 O(n) 。其中每个节点的状态是用指针分配内存。 CF1009F Dominant Indices 题意:设 d(u,x) 为 u 子树中到 u 距离为 x 的节点数。对于每个点,求一个最小的 k,使得 d(u,k) 最大。 #includ 阅读全文
posted @ 2021-07-23 16:35 仰望星空的蚂蚁 阅读(19) 评论(0) 推荐(0)
摘要: 前言 本博客偏 math。 Valera and Swaps 构造一个操作序列,每次 swap(p[i],p[j]) ,使得最终序列经过最少 k 次操作后能使每个 p[i]=i 。输出字典序最小。 结论1. 连边 i->p[i],则 操作数=n-环的个数 。 正确性显然。 分类讨论: 若 cnt<k 阅读全文
posted @ 2021-07-23 09:11 仰望星空的蚂蚁 阅读(30) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> #define ll long long using namespace std; const int mx=2e6; const int mod=1e9+7; int n,m; ll res,fac[mx+5],inv[mx+5]; //相同的字符 阅读全文
posted @ 2021-07-22 09:26 仰望星空的蚂蚁 阅读(11) 评论(0) 推荐(0)
摘要: 学到了一些 trick 。虽然考场上只做了 3 道题。 C. The Union of k-Segments 比较棘手的是 l[i]=r[i] 的情况,此时线段退化成了点。 这里提供一个不用分类讨论的做法。 首先离散化,然后 把离散化的值乘2 ,这样构建了一些中点。 对于修改 [l,r] 等价于 u 阅读全文
posted @ 2021-07-21 22:03 仰望星空的蚂蚁 阅读(16) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> #define mp make_pair #define PII pair<string,int> #define pb push_back #define vec vector #define All(x) x.begin(),x.end() #de 阅读全文
posted @ 2021-07-21 10:05 仰望星空的蚂蚁 阅读(12) 评论(0) 推荐(0)
摘要: 简述 有 n 个变量,每一个变量有且仅有 0/1 两种取值。通过高效建边,可以用 tarjan缩点 算法在 O(m) 时间内解决。 实现 关键:建边。 定理1: 证明:该定理是对缩点后的 DAG 按拓扑序自底向上进行选择、删除得到的结论。换句话说,如果当前强联通里的点有的已经选择了,那么整个强联通都 阅读全文
posted @ 2021-07-20 22:14 仰望星空的蚂蚁 阅读(26) 评论(0) 推荐(0)
摘要: E. 题意:求最小生成树。 Solution: 数论+生成树。 我们将尝试快速模拟 Kruskal 算法的过程。 发现在第 i 个状态,假设操作前有 A 个联通块,操作后 B 个块,那么代价等于 (A-B) * c[i] 。 考虑 w 和 v 联通等价于:w=v+k1a1+k2a2+ ... +k_ 阅读全文
posted @ 2021-07-20 21:56 仰望星空的蚂蚁 阅读(16) 评论(0) 推荐(0)
摘要: 简介 树上启发式合并简称 dsu on tree ,其思想在于 暴力跑轻儿子的贡献 ,同时用桶记录下 重儿子的贡献 ,可以用于一类树的统计问题或 dp 优化,可以做到时间复杂度 O(nlogn) ,空间复杂度 O(n) 。 引入 直接讲实现方法吧。毕竟其他方法都没有实际意义。 Part 1. 预处理 阅读全文
posted @ 2021-07-20 08:22 仰望星空的蚂蚁 阅读(9) 评论(0) 推荐(0)
摘要: A. 状压 dp 。考虑到合并和分裂是互逆操作,所以只需要考虑合并操作。 trick: 将 b[i] 设置为 -b[i] ,题目转化为对一个序列,找到尽量多的和为 0 的集合。暴力转移是 O(3^(n+m)) ,我们考虑优化转移。 注意到 sum=0 时贡献加一,可以设计出如下转移方程 : dp[i 阅读全文
posted @ 2021-07-19 22:28 仰望星空的蚂蚁 阅读(25) 评论(0) 推荐(0)
摘要: 题目大意:在黑板上又一个序列,每次操作可以选择一个数减1,或者是合并两个数,一个数被减至1则自动消除,不能操作者输。 解题思路:结论,对于大于1的数可以看成是一个整数s,为消除他们的总操作步数,包括减1以及合并,c为列中1的个数,如果s>2的话,c或者是s为奇数则为必胜,否则必败。若s≤2的话(s= 阅读全文
posted @ 2021-07-17 20:42 仰望星空的蚂蚁 阅读(42) 评论(0) 推荐(0)
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 48 下一页