- 博客(72)
- 收藏
- 关注
转载 虚树教程
问题引入SDOI2011消耗战虚树按照朴素的做法,就是对于每一个询问都跑一边DP。\[Dp[i] = Dp[ i ] + \min( Dp[Son],Cost[i,Son]) \,\,\,(Son不为关键点)\\Dp[i] = Dp[ i ] + Cost[ i, Son ] \,\,\,(Son为关键点)\\Dp[i] = INF\,\,\,(i为叶子)\]这样时间...
2019-09-26 20:54:00 296
转载 [SDOI2011]消耗战
题目链接问题分析显然是虚树题。由于\(\sum k\leqslant 500000\),所以直接套个虚树就好了。时间经过实践是可以的。参考代码#include <bits/stdc++.h>using namespace std;const int Maxn = 250010;const long long INF = 125000000010;const ...
2019-09-26 20:28:00 184
转载 CF1216E Numerical Sequence
题目链接问题分析奇奇怪怪的题。。。首先思路达成一致,从大到小一步一步确定位置。我们一边分析,一边讲算法。112123123412345123456123456712345678123456789123456789101234567891011123456789101112假设我们现在要找的是这个串中的倒数第二个位置(就是1),我们可以这样做:首先,我们想象着把串分开,变成...
2019-09-23 20:08:00 302
转载 vim8.1安装
win下直接就有gvim8.1.exe安装。但linux下直接从apt-get里面下载的vim都是远古版本,需要手动编译安装。首先,下载vim源代码git clone https://github.com/vim/vim.git如果下载不成功,可以试试通过gitee:git clone https://gitee.com/chy-2003/vim.git然后cd vim首先...
2019-09-21 12:22:00 915
转载 luoguP5024 保卫王国
题目链接问题分析其实是比较明显的动态DP。懒于再推一遍式子,直接用 最小权点覆盖=全集-最大权独立集,然后就和这道题一样了。题解可以看这里。然后必须选或者不选的话,就直接把相应的点权变成\(-\infty\)或\(\infty\)就好了。如果是必须选,最后答案里不要忘了加回原来的值。参考程序#include <bits/stdc++.h>using namesp...
2019-09-21 10:45:00 120
转载 动态DP教程
目录 前言 开始 更进一步 前言最后一届NOIPTG的day2T3对于动态DP的普及起到了巨大的作用。然而我到现在还不会开始SP1716 GSS3 - Can you answer these queries III题解位置这道题的题目大意就是维护动态序列最大子段...
2019-09-15 20:53:00 414
转载 SP1716 GSS3 - Can you answer these queries III
题目链接问题分析解法一简单的一道线段树维护\(lmax,rmax,max,sum\)即可。解法二考虑动态DP。\[\begin{aligned}\left [ \begin{matrix} a_i&-\infty&a_i\\a_i&0&a_i\\-\infty & -\infty &0\end{matrix}\righ...
2019-09-10 20:19:00 132
转载 HDU6579 Operation
题目链接问题分析区间求异或和最大,比较自然的想到了线性基。而每次求一个区间的线性基显然是行不通的。我们考虑在每个位置求出首位置到当前位置的线性基。同时我们要使线性基中高位的位置所选的数尽量靠后。这样我们维护线性基的时候在同时维护一个位置信息就好了。参考程序#include <bits/stdc++.h>//#define Debugusing namespace ...
2019-09-08 15:19:00 165
转载 CF1205C Palindromic Paths
题目链接问题分析首先可以想到,坐标和为奇数的位置可以被唯一确定。同样的,如果假定\((1,2)\)是\(0\),那么坐标和为偶数的位置也可以被唯一确定。这样总共使用了\(n^2-3\)次询问。那么接下来就需要在\(3\)步之内判断是否要翻转坐标和为偶数的位置。如果仅仅只是这样简单的判断:printf( "? 1 1 2 3\n" ); fflush( stdout ); ...
2019-09-07 13:37:00 261
转载 CF1213G Path Queries
题目链接问题分析直接按边从小到大加入,求所有的连通点对数量即可。最后离线询问。使用并查集维护Size。参考程序#include <bits/stdc++.h>using namespace std;const int Maxn = 200010;const int MaxAlpha = 200000;struct edge { int u, ...
2019-09-07 10:29:00 139
转载 CF1213F Unstable String Sort
题目链接问题分析题目实际上是一堆大于等于的约束。观察这\(2n-2\)个约束。第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件。不妨设第一组生成的不降序列是\(\{a_i\}\),然后添加的条件是\(a_i\leqslant a_j\)。那么显然,\(i<j\)的时候这个条件是没有用的。而如果\(i>j\),就代表着\(i\)到\(j\)这...
2019-09-07 10:02:00 201
转载 CF1213E Two Small Strings
题目链接问题分析由于三个字母是等价的,所以大致可以分为如下几种情况:aa, abab, acab, baab, bc不难发现,第\(3\)中情况可能造成无解(\(n>1\)时),而剩下的情况都可以由\(aaabbbccc\)或\(abcabcabc\)这样的串解决。所以直接枚举\(3\)个字母的全排列,然后拓展成上面两种情况分别判断一下即可。参考程序#in...
2019-09-07 08:26:00 175
转载 CF1213D Equalizing by Division
easy versionhard version问题分析直接从hard version入手。不难发现从一个数\(x\)能得到的数个数是\(O(\log x)\)的。这样总共有\(O(n\log n)\)个数。然后对每一种数开一个大根堆维护前\(k\)个就好了。参考程序#include <bits/stdc++.h>using namespace std;con...
2019-09-06 20:25:00 164
转载 概率论(离散型)极简入门
目录 古典概型 条件概率 全概率公式 伯努利概型 随机变量 随机变量的数字特征 古典概型定义\[P(A)=\frac{m}{n}\]m:A包含的基本事件数。n:总基本事件数基本事件:样本空间中不可再分的最小事件。...
2019-09-05 20:53:00 939
转载 常用数学公式(不定期更新)
目录 三角函数公式 导数公式 积分公式 泰勒展开公式 \[\newcommand{\arccot}{\mathrm{arccot}\,}\newcommand{\arcsec}{\mathrm{arcsec}\,}\newcommand{\arccsc...
2019-09-05 20:31:00 145
转载 中国剩余定理及扩展中国剩余定理
目录 中国剩余定理CRT 扩展中国剩余定理ExCRT TJOI2009 猜数字HDU 1573 X问题中国剩余定理CRT中国剩余定理是用来求线性同于方程组的。\[\begin{aligned}\left \{ \begin{matrix}x \equiv c_1 (mod...
2019-09-04 13:13:00 192
转载 「CQOI2014」数三角形
题目链接问题分析可以先任意选\(3\)个数,然后减去三点共线的部分。三点共线又分\(2\)种情况:横的或者竖的。这一部分方案数是\(n\times{m\choose 3}+m\times {n\choose3}\)。斜的。不妨设线段一个端点在\((1,1)\),另一个端点在\((i,j)\),\(i,j>1\)。那么线段上的点总共有\(\gcd(i,j)+1\)个点。...
2019-09-04 10:34:00 195
转载 CodeForces451E Devu and Flowers
题目链接问题分析没有想到母函数的做法……其实直接看题思路挺简单的。发现如果每种花都有无限多的话,问题变得十分简单,答案就是\(s+n-1\choose n - 1\)。然后发现\(n\)只有\(20\),于是大力容斥一波就完事了。参考代码#include <cstdio>const long long Max_n = 30;const long long Mo...
2019-09-02 20:51:00 130
转载 HDU4609 3-idiots
题目链接问题分析题意就是求随机取\(3\)条边能组成长方形的概率。其实可以看做求方案数。不妨将边长从小到大排序,得到\(a_1,a_2,\cdots,a_n\)。考虑枚举三角形边长中最大的一条\(a_i\),那么\(a_i\)作为最大边时贡献就是\(a_1,a_2,\cdots,a_{i-1}\)中两项加起来大于\(a_i\)的方案数。然而发现这样比较难将复杂度降到\(O(n\lo...
2019-09-02 16:43:00 133
转载 HDU2082 找单词
问题分析不难想到用母函数做。令自变量\(x\)的次数就是单词价值,那么答案就是\(x\)的\(1\)次到\(50\)次的系数之和。由于我们只需要处理前\(51\)项,所以暴力多项式相乘即可。举个例子,第一组样例的母函数就是:\[G(x)=(1+x)(1+x^2)(1+x^3)=1+x+x^2+2x^3+x^4+x^5+x^6\]出去\(x\)的\(0\)次项系数的和就是\(...
2019-08-30 22:14:00 125
转载 离散数学学习笔记
目录 前言 引言 序的关系 组合数计数 函数估计 图论导引 树 网络流 更好的阅读体验可以到我的github下载PDF。前言本笔记由chy-2003整理于上海交通大学发布于coursera的...
2019-08-26 19:54:00 4628
转载 POJ3608 Bridge Across Islands
题目链接问题分析题意即求两个凸包间的最小距离。一开始十分暴力地写了一个闵可夫斯基和,后来发现变种的旋转卡壳转一转就好了QAQ闵可夫斯基和的思路十分简单,下面看一下旋转卡壳的做法:不难发现两个凸包间的最短距离一定像上图那样。所以我们只需要枚举一个凸包的边,找另一个凸包上的对踵点就好了。这个过程需要执行两次。注意判断线段平行和求点到线段距离的细节。参考程序闵可夫斯基和版:...
2019-08-09 22:45:00 176
转载 POJ2079 Triangle
题目链接问题分析假的题目,假的数据……不可能有少于\(O(n^2)\)的做法的,少于\(O(n^2)\)的做法是不可能的。然而由于假的数据,凸包上的点只有不到\(3000\)个,所以\(n^2\)就好了……秘技是语言选C++而不是G++参考程序#include <cmath>#include <algorithm>#include <cst...
2019-08-09 08:21:00 153
转载 POJ2187 Beauty Contest
问题分析求平面最远点对。凸包+旋转卡壳。WA了5发是因为自作聪明认为找对踵点可以直接看两个点,保持距离最大……然后被下面这组数据叉掉了……input:100 010000 01 1002 1999999 1009998 199100 -900200 -17999800 -17999900 -900output:100000000所以还是老老实实地写吧...
2019-08-08 19:14:00 127
转载 Loj#139 树链剖分
题目链接问题分析一道比较标准的模板题。唯一需要考虑的是换根操作。发现换根对链上的操作并没有影响,考虑对树上以\(u\)为根子树的影响。设原树上以\(u\)为根的子树是\(T\)。如果新的根在\(T\)的外部,那么以\(u\)为根的子树不变。如果新根就是\(u\),那么子树就是整棵树。否则,取原树中\(u\)的一个儿子\(v\),\(v\)包含新的根,那么新的以\(u\)为根的子树就...
2019-08-07 15:00:00 169
转载 ubuntu16.04和vim的配置与美化
目录 ubuntu16.04配置 ubuntu16.04 美化 vim配置 vim美化 vim 进阶 ubuntu16.04配置安装vimsudo apt-get install vim-gnome换源sudo cp /etc/apt...
2019-08-04 14:04:00 750
转载 「清华集训 2017」我的生命已如风中残烛
题目链接问题分析题意不难理解。只是为什么绳子固定的那个端点不算一个钉子然后没有什么想法,于是就考虑暴力。不难发现,每次找到一个圈之后,长度就会剩下不到一半。于是至多找\(\log L\)次圈。每次找圈可能找到\(O(n)\)个点,找下一个点需要\(O(n)\)的时间。于是得到一个虚假的总时间复杂度是\(O(Tm\log L n ^2 )\)。\(3e10\)感觉\(10\)秒不太行...
2019-08-04 10:59:00 262
转载 「清华集训 2017」某位歌姬的故事
题目链接问题分析吐槽一下这个预处理比DP还长的题……首先对限制从小到大排序,然后不难发现对于每一种大小限制都是独立的。离散后考虑\(F[i][j]\)表示以\(i\)结尾,上一个音高为限制大小的位置\(j\)的方案种数。不难发现对于一些右端点相同的限制,左端点最右的限制才有效。这样就可以\(n^2\)动规了。由于要离散化,所以细节很多。参考程序程序没有显式的离散化,并且大量使...
2019-08-02 18:48:00 189
转载 「雅礼集训 2017 Day5」远行
题目链接问题分析要求树上最远距离,很显然就想到了树的直径。关于树的直径,有下面几个结论:如果一棵树的直径两个端点为\(a,b\),那么树上一个点\(v\)开始的最长路径是\(v\rightarrow a\)或\(v \rightarrow b\)。如果有两棵树,直径分别为\(a_1,b_1\)和\(a_2,b_2\),那么在这两棵树间连一条边,新树的直径只可能是\(a_1\r...
2019-07-30 15:30:00 204
转载 「JSOI2018」战争
题目链接题目大意本题解中向量与点互通。题目大概就是判断一个凸包\(B\)平移\(\overrightarrow v\)之后是否与凸包\(A\)有相交。相交即\(\exists b \in B, b + \overrightarrow v =a\in A\)。如果转换一下,就是\(\exists b \in B, a\in A, a - b = \overrightarrow v\...
2019-07-29 18:55:00 258
转载 「NOI2014」魔法森林
题目链接题目分析实则毫无思路……由于权值是两维的,首先尝试正常操作排序一维。然后问题就变成了求另外一维的最小。不难想到另外一维是一个最小生成树。每次的答案就是\(1\)到\(n\)路径上的两个最大加起来(不一定是枚举的一维加上另一维的最大)。然后考虑如何维护。动态加边的最小生成树自然用LCT维护。由于LCT维护的是点值,所以我们要把边拆成一个点加两条边,点上维护原来边上的值。然后...
2019-07-26 18:46:00 135
转载 「HAOI2016」食物链
题目链接解题思路简单的DAG上DP即可。参考程序#include <bits/stdc++.h>using namespace std;const int Maxn = 100010;const int Maxm = 200010;struct edge { int To, Next;};edge Edge[ Maxm ];int Start[...
2019-07-25 15:21:00 359
转载 「SCOI2015」小凸玩矩阵
题目链接问题分析题目给了充足的暗示,我们只需要二分答案然后跑匈牙利即可。要相信匈牙利的速度参考程序#include <bits/stdc++.h>using namespace std;const int Maxn = 310;const int INF = 2147483647;int N, M, K, A[ Maxn ][ Maxn ], Max, Mi...
2019-07-25 09:16:00 176
转载 后缀自动机详解
目录 前言 简介 自动机 后缀自动机概念 如何构建后缀自动机 练习题 前言第\(3\)次尝试学习后缀自动机……下定决心不再背板子参考资料:洛谷博客(KesdiaelKen的雷蒻论坛)2012年noi冬令营clj讲稿前...
2019-07-23 20:46:00 598
转载 「TJOI2019」大中锋的游乐场
题目链接问题分析比较明显的最短路模型。需要堆优化的dij。建图的时候注意细节就好。参考程序#include <bits/stdc++.h>#define LL long long//#define DEBUGusing namespace std;const int Maxn = 10010;const int Maxm = 100010;const i...
2019-07-22 11:04:00 186
转载 「TJOI2019」唱、跳、rap 和篮球
题目链接题目分析据说这是一道生成函数题看到限制条件,我们首先想到的就是对有多少组讨论cxk的人进行容斥。然后就是求剩下的人随便放有多少种方法了。考虑现在每种剩\(a,b,c,d\)人,还需要排\(n\)人,那么方案数就是\[\sum_{i=1}^a\sum_{j=1}^b\sum_{k=1}^c\sum_{l=1}^d [i+j+k+l=n]{n\choose i}{n - i...
2019-07-20 12:58:00 264
转载 「TJOI2019」甲苯先生的滚榜
题目链接问题分析参照数据范围,我们需要一个能够在\(O(n\log n)\)复杂度内维护有序数列的数据结构。那么平衡树是很好的选择。参考程序中使用带旋Treap。参考程序#pragma GCC optimize( 3 )#include <cstdio>#include <ctime>#include <algorithm>names...
2019-07-19 20:11:00 186
转载 「SDOI2017」硬币游戏
题目链接问题分析首先一个显然的做法就是建出AC自动机,然后高斯消元。但是这样的复杂度是\(O(n^3m^3)\)的。我们发现其实只需要求AC自动机上\(n\)个状态的概率,而其余的概率是没有用的。我们不妨设\(i\)赢的概率是\(P_i\)。同时,我们令\(P_0\)为没有任何一个人赢的概率。然后我们考虑从\(P_0\)转移到\(P_i\)。如果我们直接在\(P_0\)后面加上...
2019-03-23 13:41:00 284
转载 Link-Cut Tree(LCT) 教程
目录 前置知识 介绍 Access FindRoot MakeRoot Split Link Cut 关于Splay中操作的一点说明: 模板 前...
2019-03-21 11:06:00 436
转载 「SDOI2017」数字表格
题目链接问题分析\[\begin{aligned}Ans&=\prod_{i=1}^n\prod_{j=1}^mf[\gcd(i,j)]\\&=\prod_{t=1}^nf(t)^{\sum\limits_{i=1}^n\sum\limits_{j=1}^m[\gcd(i,j)=t]}\\&=\prod_{t=1}^nf(t)^{\sum\limit...
2019-03-19 16:11:00 131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人