2019暑期金华集训 Day6 杂题选讲】的更多相关文章

自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\(f(x)\)表示最后一个数小于等于\(x\)的答案,从左往右加入数并维护\(f(x)\). 加入\(A\)的时候\(f(x)\)要加上\(|x-A|\),再对\(f(x-1)\)取min. 显然\(f(x)\)是一个分段函数,而且斜率是连续整数. 于是只需要维护拐点就可以知道函数长什么样.每次就是…
自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\times B=|A||B|\sin \theta \] 二维叉积:\(A\times B=x_1y_2-x_2y_1\). 三维叉积: \[ A\times B=\left| \begin{matrix} i&j&k\\ Ax&Ay&Az\\ Bx&By&Bz \e…
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n\leq k^2\) 暴力 \(n\geq k^2\),找点x,求直线l经过x,且点数最多,点数\(\geq k+1\),递归,否则再找一个 One Point Nine Nine 现在平面上有\(n\)个点,已知有一个常数\(D\). 任意两点的距离要么\(\leq D\),要么\(\geq 1.…
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数的最小值,然后就获得了\(O(n^3)\)的DP. 不妨每个点的度数都减1,那么总度数就变成\(n-2\)了. 考虑原来\(i\)的作用是什么:要限制选的点数不能超过\(n​\). 此时我们总度数小于\(n\),所以只要度数不为0的点的总度数不超过n-2那么就肯定有点数不超过n.所以我们可以先认为所…
自闭集训 Day7 分治 主定理 由于我沉迷调题,这个地方没听课. 某些不等式 咕了 nth_element 使用快速排序的思想,选一个中间点,看左右有多少个. 期望复杂度\(O(n)\). 首先把一个序列分成5份,每份大小\(n/5\),叠成一个矩阵,对每一列进行排序. 现在中间一行就是每一列的中位数,递归下去求它的中位数. 然后把中位数比他小的列放左边,比他大的放右边. 于是我们知道至少\(0.3n\)比他小/比他大,也就是至多\(0.7n\)比他小/比他大. 于是我们找到了一个比较好的轴点…
自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数.我们不关心这个函数的具体的取值,只关心多项式的系数.在需要的时候可以把\(x​\)当成任意值. 例题 求\(\{n^2\}\)的生成函数. 这个--只要知道\(\{{n+k-1\choose k-1}\}\)的生成函数是\(\frac 1 {(1+x)^k}\)就没了. 例题 简单生成函数题,不讲了…
自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对应原串的一个子串. 每一个终止节点对应一些后缀. 所有到同一个点的路径对应的子串互为后缀,长度连续. parent树是反串的后缀树. SAM可以用来构造SA.(???) 回文树 一个串的本质不同的回文子串的个数是\(O(n)​\)的. 每个点只表示一个回文串. SAM和回文树的复杂度都是均摊的,所以…
自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集(???). POI 2014/2015 某题 类似于GDOI2019,线段树或者堆直接做. Gym101372 E 首先肯定要缩点. 给每个点赋一个随机权值,然后把每一个点的权值更新成能到的所有的点权值的min. 由于\([0,1]​\)的\(n​\)个随机权值的\(\min ​\)期望是\(\f…
CF469E \(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数.输出方案. \(n\le 10^5,|a_i|\le 10^5\). 首先每个数肯定都只会被选一次,因为两个 \(1\) 没有一个 \(1\) 一个 \(2\) 优. 然后发现 \(1\) 和 \(-1\) 不会同时选,不如选 \(1\) 和 \(-2\) 或者 \(2\) 和 \(-1\). 考虑缩小问题规模.如果所有数都是偶数,直接全部除以 \(2\).否则一定要在 \(1\…
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查询可以缩点,那么访问的区间数是均摊\(O(1)\)的.(??) 所以用splay维护LCT是一个log,而线段树维护就是两个log. 捉迷藏 边分治多好,干什么点分治-- 每个点开个堆维护子树最远点.开个堆维护儿子最远点的前二大的值.开个堆维护全局最大值,然后随便搞. 边分治由于每次只需要合并两个子…