05 2018 档案

摘要:题目链接 "BZOJ2277" 题解 orz太难了 如果一个数x是密码,那么所有(x,n)的倍数都是密码 如果两个数x,y是密码,那么所有(x,y)的倍数都是密码 那么如果最后的密码集合为{xi}那么一定存在一个xi是剩余所有数的gcd 所以我们只需找最小的$x 阅读全文
posted @ 2018-05-31 15:48 Mychael 阅读(323) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2659" 题解 真没想到,, 观察式子 k=1p12kqp 有没有想到斜率? 如果构造函数 y=qpx 那么该式子的含义就是直线在 阅读全文
posted @ 2018-05-31 11:43 Mychael 阅读(307) 评论(0) 推荐(1) 编辑
摘要:题目链接 "BZOJ2553" 题解 话说在前,此题卡精度,最好开long double 先建AC自动机 求期望,逆着求,设f[i][j]为长度为i的串,当前匹配AC自动机j节点,之后能产生伤害的期望值 枚举转移,如果转移到一个单词节点,因为产生伤害的单词间不能相连,就直接跳回根节点 阅读全文
posted @ 2018-05-31 10:14 Mychael 阅读(155) 评论(0) 推荐(0) 编辑
摘要:题目链接 "ZOJ3874" 题意简述: 在一个序列中,两点间如果有边,当且仅当两点为逆序对 给定一个序列的联通情况,求方案数对786433取模 题解 自己弄了一个晚上终于弄出来了 首先yy一下发现一个很重要的性质: 联通块内的点编号必须是连续的 证明: 假设一个联通块编号不连续,设a阅读全文
posted @ 2018-05-30 22:17 Mychael 阅读(247) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4503" 题解 水水题。 和残缺的字符串那题几乎是一样的 同样转化为多项式 同样TLE 同样要手写一下复数才A C++ include include include include include include include define Redge(u) for (in 阅读全文
posted @ 2018-05-30 19:21 Mychael 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2697" 题解 好水好水的贪心。。。 容易发现每种特技只表演两次,多表演没有意义,而且差距越长收益越大 然后就可以贪,最大的放两端,次大的往里,然后是第三大....... 证明很简单,假设将两个特技时间交换,那么会产生交换距离乘以C的差值的贡献,显然就不优 阅读全文
posted @ 2018-05-30 16:07 Mychael 阅读(133) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2795" "BZOJ2890" "BZOJ3647" 题解 三倍经验! 我们要快速求区间最小循环节 我们知道循环节有如下性质: ①当L为循环节长度,那么s[l...rL]=s[l+L...r]L|(rl+1) ②如果L为循环节,那么$L x 阅读全文
posted @ 2018-05-30 15:27 Mychael 阅读(186) 评论(0) 推荐(1) 编辑
摘要:题目链接 "BZOJ2823" 题解 "最小圆覆盖" 模板 都懒得再写一次 C++ include include include include include include include define LL long long int define Redge(u) for (int k = 阅读全文
posted @ 2018-05-30 11:40 Mychael 阅读(185) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2924" 题解 题面有误。。是45° 如果两个点间连线与x轴夹角在45°以内,那么它们之间连边 求最小路径覆盖 = 最长反链 由于45°比较难搞,我们利用复数翻转一下,逆时针旋转45° 这样就求一条从左上到右下的最长链 我们将所有点按x排序,令$f[i] 阅读全文
posted @ 2018-05-30 11:30 Mychael 阅读(173) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P3759" 题解 树状数组套主席树板题 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) define REP(i, 阅读全文
posted @ 2018-05-30 08:52 Mychael 阅读(238) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-05-29 16:01 Mychael 阅读(0) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-05-29 11:10 Mychael 阅读(0) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4539" 题解 我们把每次复制出来的树看做一个点,那么大树实际上也就是一棵O(M)个点的树 所以我们只需求两遍树上距离: 大树上求距离,进入同一个点后在模板树上再求一次距离 讨论好一些情况即可 然后求子树第k大的点要用主席树 没了 C++ include include 阅读全文
posted @ 2018-05-29 09:24 Mychael 阅读(139) 评论(0) 推荐(0) 编辑
摘要:题目链接 "Mychael vs Kid" 题解 先说说这题的由来及前身 前身 首先有一个很经典的题目: 维护区间加,查询区间gcd 如果强行用线段树维护的话,区间加之后就没法直接确定当前区间的gcd,不可直接维护 这个时候就用到了gcd的一个性质: $$(a,b) = (a b,b)$ 阅读全文
posted @ 2018-05-28 20:12 Mychael 阅读(199) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2668" 题解 容易想到由S向初始的黑点连边,由终态的黑点向T连边,然后相邻的点间连边 但是这样满足不了交换次数的限制,也无法计算答案 考虑如何满足一个点的交换次数限制 当然是拆点 但是一个位置被经过时会被交换两次,而终点和起点都只交换了一次 那么我们就拆成三个点$le 阅读全文
posted @ 2018-05-28 16:05 Mychael 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1596" 题解 先抽成有根树 设f[i][0|1][0|1]表示以i为根,儿子都覆盖了,父亲是否覆盖,父亲是否建塔的最少建塔数 转移一下即可 C++ include include include include include include define Redge 阅读全文
posted @ 2018-05-28 11:48 Mychael 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3427" 题解 容易发现最终序列一定是{1,0,1}组成的 因为如果有一个位置不是,那么这个位置一定大于1,那么上一个位置一定为1,所以该位置一定加到过1。由于1已经满足条件,而经分析得大于1会使下一个位置的决策不优反劣,所以一定不会大于1阅读全文
posted @ 2018-05-28 10:39 Mychael 阅读(163) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3526" 题解 思来想去,发现很显然可以用线段树维护 每个区间保存所有合法方案的左右端点【当左端点一定是,右端点当然存最小的那个就行了】 这么整的数,11000的概率啊23333 阅读全文
posted @ 2018-05-28 09:39 Mychael 阅读(207) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3542" 题解 线段树裸题,,对每一行每一列开线段树 由于坐标很大,用map维护根下标 化一下式子,只用维护区间和,区间平方和,区间存在的个数 C++ include include include include include include define Redge( 阅读全文
posted @ 2018-05-28 08:42 Mychael 阅读(185) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3832" 题解 神思路orz,根本不会做 设f[i]为到i的最长路,g[i]i出发的最长路,二者可以拓扑序后dp求得 那么一条边(u,v)的对应的最长链就是f[u]+1+g[v] 我们人为加入源汇点STS向每个点连边,每个点 阅读全文
posted @ 2018-05-27 22:14 Mychael 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5月月赛" 题解 好弱啊QAQ只写出三题 A 判断多干个数乘积是否是某个数的倍数有很多方法,比较常用的是取模,但这里并不适用,因为模数不定 会发现数都比较小,所以我们可以考虑分解质因子,查找一下区间各个质因子数是否符合要求 用主席树维护即可 由于105以内不同质因子数最多的 阅读全文
posted @ 2018-05-27 18:35 Mychael 阅读(367) 评论(0) 推荐(1) 编辑
摘要:题目链接 "BZOJ3521" 题解 容易想到用前缀和搞 如果我们令p1j1,记前缀和为s[i] 我们就是要找到一段区间[l,r],使得 i[l,r]s[i]s[l1]0 $$\forall i \in [ 阅读全文
posted @ 2018-05-27 11:49 Mychael 阅读(316) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1458" 题解 对行列分别建边,拆点,设置流量下限 然后S向行连边inf,列向T连边inf,行列之间如果没有障碍,就连边1 然后跑最小可行流即可 阅读全文
posted @ 2018-05-27 10:05 Mychael 阅读(270) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3523" 题解 简单的贪心题 优先与上一个不一样且数量最多的,如果有多个相同,则优先选择非结尾颜色 比较显然,但不知怎么证 C++ include include include include include include include define Redge(u) f 阅读全文
posted @ 2018-05-26 21:41 Mychael 阅读(244) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1599" 题解 最小环模板?周末了养生一下【逃】 解释一下原理 floyd算法每一轮求出以[1,k]为中介点的最短路 我们对于一个环,考虑环上编号最大的点,在k枚举到那个点时,k两边的点之间不经过k的最短路已经计算出来,相连接便是一个环 容易发现最小的环一定 阅读全文
posted @ 2018-05-26 19:55 Mychael 阅读(175) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4245" 题解 套路① 位运算当然要分位讨论,高位优先 考虑在or下,如果该位为0,则每一位都为0 套路② 我们选m段异或和,转化为m个前缀和的点,且其中有一个是n 容易发现,该位结果要为0,则选取的前缀和该位都为0 所以贪心查找所有该位为0的,首先 阅读全文
posted @ 2018-05-26 19:30 Mychael 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4873" 题解 题意很鬼畜,就可以考虑网络流【雾】 然后就会发现这是一个裸的最大权闭合子图 就是注意要离散化一下代号 C++ include include include include include include define Redge(u) for (int k = 阅读全文
posted @ 2018-05-26 17:26 Mychael 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4144" 题解 这题好妙啊,,orz 假设我们在一个非加油站点,那么我们一定是从加油站过来的,我们剩余的油至少要减去这段距离 如果我们在一个非加油站点,如果我们到达不了任意加油站点,我们一定废了 那么我们在一个非加油站点,就一定可以到达最近的加油站,而由于我们剩余的油是要减去到 阅读全文
posted @ 2018-05-26 15:50 Mychael 阅读(214) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3747" 题解 这种找区间最优的问题,一定是枚举一个端点,然后用数据结构维护另一个端点 我们枚举左端点,用线段树维护每个点作为右端点时的答案 当左端点为1时,我们能O(n)预处理出每个位置的答案初始化线段树 当左端点右移一位时,该位上的电影就从区间删除了,记$nxt[i 阅读全文
posted @ 2018-05-26 12:17 Mychael 阅读(242) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3709" 题解 贪心很显然 我们先干掉能回血的怪,当然按照d升序顺序,因为打得越多血越多,d大的尽量往后打 然后再干掉会扣血的怪,当然按照a降序顺序,因为最后受的伤害一定,回的血也一定,先尽量回多的血以尽量承受住当前伤害 C++ include include in 阅读全文
posted @ 2018-05-26 11:23 Mychael 阅读(166) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3714" 题解 我们如果知道了所有的数,同样就知道了所有的前缀和 相反,我们如果求出了所有前缀和,就知道了所有的数,二者是等价的 对于一个区间[l,r]如果我们知道了前缀和sum[l1],我们就知道了sum[r] 所以区间[l,r]相当于连接l1r 阅读全文
posted @ 2018-05-26 10:28 Mychael 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3922" 题解 考虑暴力,修改O(1),查询O(nd) 考虑线段树,如果对每种差值建一棵线段树,修改O(nlogn),查询O(logn) 能不能均摊? 线段树查询快,修改慢 暴力修改快,查询慢 容易发现当d比较大时暴力还是可以接受的,所以我 阅读全文
posted @ 2018-05-26 09:26 Mychael 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3495" 题解 每个城市都有选和不选两种情况,很容易考虑到2 sat 边的限制就很好设置了,主要是每个郡只有一个首都的限制 我们不可能两两之间连边,这样复杂度就爆炸了 于是乎就有了一个非常厉害的方法: 前缀后缀和 我们令1表示选,0表示不选,维护一个郡的前缀和、后缀和 阅读全文
posted @ 2018-05-26 08:29 Mychael 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2597" 题解 orz思维差 既然是一张竞赛图,我们选出任意三个点都可能成环 总方案数为 (n3) 如果三个点不成环,会发现它们的度数是确定的,入度分别为2,1,0,出度为0,1,2 所以一个点的任意两个入度,都会对答案产生一个负的贡献 所以三 阅读全文
posted @ 2018-05-25 19:57 Mychael 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目链接 "hdu6184" 题解 题意是让我们找出所有的这样的图形: 我们只需要求出每条边分别在多少个三元环中,记为x,再然后以该点为中心的图形数就是(x2) 所以我们只需找出所有三元环 据说这是一个套路题 我们将所有无向边改为有向边,由度数小的向度数大的连边,度数相同就 阅读全文
posted @ 2018-05-25 17:47 Mychael 阅读(465) 评论(0) 推荐(1) 编辑
摘要:题目链接 "BZOJ4815" 题解 根据题中的式子,手玩一下发现和gcd很像 化一下式子: $$ \begin{aligned} bf(a,a + b) &= (a + b)f(a,b) \\ \frac{f(a,a + b)}{a + b} &= \frac{f(a,b)}{b} \\ \f 阅读全文
posted @ 2018-05-25 16:50 Mychael 阅读(177) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4897" 题解 发现我们付出的代价与区间长度无关,而与区间权值范围有关 离散化一下权值 我们设f[l][r][x][y]表示区间[l,r]消到只剩权值在[x,y]所需最小代价 f[l][r][0][0]即为消完的最小代价 那么 $$f[l][r][0][0] = 阅读全文
posted @ 2018-05-25 11:47 Mychael 阅读(346) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4896" 题解 thu怎么那么喜欢出trie树的题。。。 我们当然可以按题意模拟建trie 询问的时候,由于存在删除操作,不满足单调性,不能直接二分答案 我们就在每个节点上用vector储存每个值第一次出现的时间点 每次询问找到那个点二分一下即可 阅读全文
posted @ 2018-05-25 09:55 Mychael 阅读(213) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4104" 题解 我们将已知字符排序,由循环就可以得到一个对应关系 如样例就是: 0 第5行 1 第1行 1 第2行 1 第3行 1 第5行 2 第6行 3 第4行 按照这个循序加入答案即可 C++ include include include include include 阅读全文
posted @ 2018-05-25 08:48 Mychael 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4105" 题解 平方操作orz,虽说应该是线段树,但是不会维护啊QAQ 小瞧一眼题解。。。 平方成环?环长lcm小于60? 果然还是打表找规律题。。。。 那就很好做了,先预处理每个数是否在环上,如果当前区间存在数不在环上,就暴力修改 如果当前区间都在环上了,就处理出环, 阅读全文
posted @ 2018-05-25 08:00 Mychael 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4103" 题解 一眼看过去是二维结构,实则未然需要树套树之类的数据结构 区域异或和,就一定是可持久化trie树 观察数据,m非常大,而np比较小,甚至可以每次询问都枚举xi 所以我们可以考虑对yitrie,每次询问取出对应区间的xi在对 阅读全文
posted @ 2018-05-24 20:11 Mychael 阅读(167) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5322" 题解 意思就是使有序的排列尽量少 就是使相同的数尽量少 然后大力贪心即可 C++ include include include include include include define REP(i,n) for (register int i = 1; i (a 阅读全文
posted @ 2018-05-24 16:52 Mychael 阅读(321) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5323" 题解 有一些数是不能被别的数筛掉的 这些数出现最晚的位置就是该排列的t(p) 所以我们只需找出所有这些数,线性筛一下即可,设有m个 然后枚举最后的位置 $$ans = \sum\limits_{i = m}^{n} m!(n m)!{i 1 \choose m 阅读全文
posted @ 2018-05-24 12:28 Mychael 阅读(274) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4567" 题解 题意真是鬼畜= = 意思就是说我们应先将一个串的所有后缀都插入之后再插入这个串,产生代价为其到上一个后缀的距离 我们翻转一下串,转化为前缀,就可以建trie树来解决了 建好trie后单独取出单词节点,贪心先往子树小的节点编号即可 C++ include 阅读全文
posted @ 2018-05-24 09:50 Mychael 阅读(174) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4569" 题解 倍增的思想很棒 题目实际上就是每次让我们合并两个区间对应位置的数,最后的答案ans=9×10tot1tot是联通块数,因为要去前导0,首位不为0即可 如何快速合并两个区间? 倍增! 每次合并两个区间,我们就利用倍增分成 阅读全文
posted @ 2018-05-24 08:02 Mychael 阅读(168) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5011" 题解 一定只有我这种智障会用这么奇怪的方法做这道题。。 由题我们知道最后剩余的一定是一个区间,而且区间内的颜色不存在于区间外 所以我们的目的就是为了找到这样的区间的数量 区间由左右端点确定,我们枚举右端点,尝试维护左端点数量 当我们从右向左枚举到rr右边的颜 阅读全文
posted @ 2018-05-23 22:06 Mychael 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3242" 题解 题意很清楚,找一点使得最远点最近 如果是一棵树,就是直径中点 现在套上了一个环,我们把环单独拿出来 先求出环上每个点外向树直径更新答案,并同时求出环上每个点外向的最远距离val[i] 首先要明白以下事实: ①删掉任意一条边不会使答案更优 ②环上存在一条边,使 阅读全文
posted @ 2018-05-23 19:14 Mychael 阅读(359) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4035" 题解 神题啊。。。orz 不过网上题解好难看,数学推导不写Latex怎么看。。【~~Latex中毒晚期~~】 我们由题当然能很快写出dp方程 设f[i]表示从u出发逃离的期望步数,m为该点度数 $$ \begin{aligned} f[u] &= 阅读全文
posted @ 2018-05-23 15:41 Mychael 阅读(177) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4418" 题解 题意:从一个序列上某一点开始沿一个方向走,走到头返回,每次走的步长各有概率,问走到一点的期望步数,或者无解 我们先将序列倍长形成循环序列,n=(N1)×2 按期望dp的套路,我们设f[i]为从i点出发到达终点的期望步数【一定要 阅读全文
posted @ 2018-05-23 11:20 Mychael 阅读(256) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4008" 题解 要求所有牌造成伤害的期望,就是求每一张牌发动的概率g[i] 我们发现一张牌能否发动,还与其前面的牌是否发动有关 那我们设f[i][j]表示前i张在r轮游戏中总共发动了j张的概率 那么 $$g "i] = \sum\limits_{j = 0} 阅读全文
posted @ 2018-05-23 08:20 Mychael 阅读(150) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1559" 题解 考虑到这是一个包含子串的问题,而且子串非常少,我们考虑AC自动机上的状压dpf[i][j][s]表示长度为i的串,匹配到了AC自动机j号节点,且已匹配集合为s的方案数 直接在AC自动机上转移即可 但是为了防止使用last阅读全文
posted @ 2018-05-22 22:03 Mychael 阅读(225) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1558" 题解 等差数列,当然是差分一下 差分值相同的连续位置形成等差数列,我们所选的两个等差数列之间可以有一个位置舍弃 例如: 1236810 差分后是 11322 左边两个1形成等差,右边两个$2 阅读全文
posted @ 2018-05-22 19:53 Mychael 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2257" 题解 由裴蜀定理我们知道,若干的瓶子如此倾倒最小能凑出的是其gcd 现在我们需要求出n个瓶子中选出K个使gcd最大 每个数求出因数排序即可 阅读全文
posted @ 2018-05-22 15:24 Mychael 阅读(119) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2729" 题解 高考数学题。。。 我们先把老师看做男生,女生插空站 如果两个老师相邻,我们把他们看做一个男生,女生插空站 对于n个男生m个女生的方案数: n!m!(n+1m) 还要特判一下没有男生女生的情况 然后高精即可 阅读全文
posted @ 2018-05-22 14:58 Mychael 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1857" 题解 画画图就发现实际上是在AB上和CD上分别选两个点E,F,使得tAE+tEF+tFD最小 然后猜想到当E固定时,这个值的函数关于|CF|是下凸的 当F总取最优时,关于|AE|也是下凸的 感觉十分的对 两 阅读全文
posted @ 2018-05-22 12:23 Mychael 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2118" 题解 orz竟然是最短路 我们去0后取出最小的a[i],记为p,然后考虑模p下的B 一个数i能被凑出,那么i+p也能被凑出 所以我们只需找出最小的凑出i的代价 我们如果将同余下的和看作点,那么加上一个数就相当于在点间转移的边 所以我 阅读全文
posted @ 2018-05-22 11:30 Mychael 阅读(130) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5340" 题解 我们能很容易维护每个人当前各种血量的概率 设p[u][i]表示u号人血量为i的概率 每次攻击的时候,讨论一下击中不击中即可转移 是O(Qm2)的 现在考虑一下结界 如果我们设f[u][i]表示除了u还存活i个人的概率 那么 $$an 阅读全文
posted @ 2018-05-22 10:12 Mychael 阅读(247) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5343" 题解 明显要二分一下美味度,然后用尽量少的价格去购买饮料,看看能否买到L升,然后看看能否控制价格在g内 尽量少的价格,就优先先选完便宜的饮料,由于询问的是一定美味度范围的,主席树上询问即可 阅读全文
posted @ 2018-05-21 17:07 Mychael 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4869" 题解 这题调得我怀疑人生,,结果就是因为某些地方sb地忘了取模 前置题目: "BZOJ3884" 扩展欧拉定理: cacamodφ(p)+[ap]p(modp) 我们发现当我们进行0操作,就相 阅读全文
posted @ 2018-05-21 15:22 Mychael 阅读(213) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2001" 题解 CDQ分治神题。。。 难想难写。。 比较朴素的思想是对于每个询问都求一遍BST,这样做显然会爆 考虑一下时间都浪费在了什么地方 我们每次求BST实际上就只有一条边不同,我们实际浪费了很多时间在处理相同的边上 那就考虑分治 对于一个待修改的边集,我们将其权 阅读全文
posted @ 2018-05-21 09:58 Mychael 阅读(257) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3573" 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 一个比较简单的想法是枚举根节点权值 但我们可以通过计算出每个节点如若保留原值,根节点会是什么值 阅读全文
posted @ 2018-05-21 07:04 Mychael 阅读(277) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2753" 题解 完了我连kruskal裸题都做不出来了。。 题目是求最小树形图,即有向图最小生成树 我们不能直接上kruskal,而要保证先加入前面的点, 所以我们排序的时候第一关键字改为高度即可 C++ include include include include 阅读全文
posted @ 2018-05-20 21:18 Mychael 阅读(127) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3533" 题解 我们设询问的向量为(x0,y0),参与乘积的向量为(x,y) 则有 $$ \begin{aligned} ans &= x_0x + y_0y \\ y &= \frac{x_0}{y_0}x + \frac{ans}{y_0} \\ \end{al 阅读全文
posted @ 2018-05-20 19:29 Mychael 阅读(218) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1407" 题解 枚举m用扩欧判即可 C++ include include include include include define REP(i,n) for (int i = 1; i 57){if (c == ' ') flag = 1; c = getchar() 阅读全文
posted @ 2018-05-20 14:56 Mychael 阅读(132) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3243" 题解 模数只有23,可以大力讨论 如果模数为2,乘积结果只有10 如果一个向量和前面所有向量乘积都为1,那么其和前面向量前缀和的乘积就唯一确定 我们维护向量前缀和,第一个乘积情况不符的向量一定是答案,然后再枚举另一个向量即 O(nd) 阅读全文
posted @ 2018-05-19 16:14 Mychael 阅读(205) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3671" 题解 模拟题意生成矩阵贪心从小选择即可 每选择一个,就标记其左下右上矩阵 由于每次都是标记一个到边界的矩阵,所以一旦遇到标记过就直接退出即可,可以保证复杂度 还有就是空间和时间有点卡 C++ include include include include includ 阅读全文
posted @ 2018-05-19 11:05 Mychael 阅读(195) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4568" 题解 选任意个数异或和最大,使用线性基 线性基插入O(logn),合并O(log2n) 我们要求树上两点间异或和最大值,由于合并是O(log2n)的,我们尽量只合并一次 那就采用点分治 每次求出到分治重心的线性基,将过分治重心的询问的两个线性基合并即可 阅读全文
posted @ 2018-05-19 09:03 Mychael 阅读(308) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4012" 题解 Mychael并没有A掉,而是T掉了 讲讲主要思路 在点分树上每个点开两棵splay, 平衡树A维护子树中各年龄到根的距离 平衡树B维护子树中各年龄到点分树父亲的距离 然后询问就可以在点分树上用两棵平衡树相减计算了 大常数O(nlog2n)被卡 阅读全文
posted @ 2018-05-18 22:04 Mychael 阅读(214) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1095" 题解 传说中的动态点分治,一直不敢碰 今日一会,感觉其实并不艰涩难懂 考虑没有修改,如果不用树形dp的话,就得点分治 对于每个重心,我们会考虑其分治的子树内所有点到它的距离,然后取所有不同子树中最大的两个相加来更新答案 如果带修改怎么办呢? 考虑一个点u被修改了, 阅读全文
posted @ 2018-05-18 16:13 Mychael 阅读(201) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2299" 题解 题意就是给我们四个方向的向量(a,b),(b,a),(a,b),(b,a),求能否凑出(x,y) 显然我们就可以得到一对四元方程组,用裴蜀定理判断一下方程有没有解即可 C++ include include include include inclu 阅读全文
posted @ 2018-05-18 11:22 Mychael 阅读(150) 评论(0) 推荐(0) 编辑
摘要:我们通常会需要求解形如fn+2=afn+1+bfn的通项公式,其中f0f1已知 我们不妨设fn是一个等比数列,公比为q $$ \begin{aligned} f_{n + 2} &= af_{n + 1} + bf_{n} \\ q^2f 阅读全文
posted @ 2018-05-18 10:56 Mychael 阅读(1306) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P4593" 题解 "orz dalao" upd:经典的自然数幂和,伯努利数裸题 由题我们只需模拟出代价,只需使用S(n,k)=i=1nik这样的前缀和计算 我不知道怎么来的这样一个公式: $$(n + 1)^{k} n^{k} 阅读全文
posted @ 2018-05-17 17:08 Mychael 阅读(886) 评论(5) 推荐(0) 编辑
摘要:题目链接 "洛谷P4591" 题解 设f[i][j]表示前i个串匹配到位置j的方案数,匹配一下第i个串进行转移即可 本来写了hash,发现没过,又写了一个KMP,依旧WA,无奈去翻题解,竟然要取模??!! 题面怎么不讲啊,, C++ include include inc 阅读全文
posted @ 2018-05-17 15:18 Mychael 阅读(401) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P4588" 题解 用线段树维护即可 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) define REP(i,n) 阅读全文
posted @ 2018-05-17 12:31 Mychael 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P4589" 题意可能不清,就是给出一个带权有向图,选出n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 题解 如果要问全部覆盖,就是经典的可重点的DAG最小路径覆盖,floyd求出传递闭包后跑二分图最大匹配即可 如果不能全部覆盖,就二分答案,看看能否 阅读全文
posted @ 2018-05-17 11:25 Mychael 阅读(290) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4592" 题解 可持久化trie树裸题 写完就A了 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) defin 阅读全文
posted @ 2018-05-17 10:44 Mychael 阅读(307) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P3763" 题解 后缀数组裸题 在BZOJ被卡常到哭QAQ 阅读全文
posted @ 2018-05-17 10:01 Mychael 阅读(196) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1513" 题解 真正地理解了一波线段树标记永久化的姿势 每个节点维护两个值vtag v代表儿子中的最值 tag代表未下传的最值 显然节点的区间大于等于v的实际区间 而tag的区间包含节点的区间 我们在修改的时候,沿路v都要修改,底层tag修改 阅读全文
posted @ 2018-05-17 07:25 Mychael 阅读(329) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ2155" 题解 二维线段树水题,蒟蒻本想拿来养生一下 数据结构真的是有毒啊,, ~~TM这题卡常~~ 动态开点线段树会TLE【也不知道为什么】 直接开个二维数组反倒能过 C++ include include include include include include def 阅读全文
posted @ 2018-05-16 21:22 Mychael 阅读(158) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4785" 题解 肝了一个下午QAQ没写过二维线段树还是很难受 首先题目中的树状数组实际维护的是后缀和,这一点凭分析或经验或手模观察可以得出 在mod2意义下,我们实际求出的区间和是[l1,r1],和[l,r]唯一不同的就在于l1r 所以每个询问实 阅读全文
posted @ 2018-05-16 20:30 Mychael 阅读(232) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3456" 题解 之前我们用分治nttO(nlog2n)的复杂度下做了这题,今天我们使用多项式求逆 设fn表示n个点带标号无向连通图数 设gn表示n个点图的数量,显然gn=2(n2) 枚举1号点所在联通块大小, 阅读全文
posted @ 2018-05-16 15:25 Mychael 阅读(165) 评论(0) 推荐(0) 编辑
摘要:我们记deg(A)为多项式A(x)的度,即为A(x)的最高项系数 + 1 对于多项式A(x),如果存在B(x)满足deg(B)deg(A),且 A(x)B(x)1(modxn) 我们称B(x)A(x)在模xn意义 阅读全文
posted @ 2018-05-16 11:38 Mychael 阅读(1832) 评论(0) 推荐(1) 编辑
摘要:题目链接 "uoj185" 题解 设f[i][j]表示i为根的子树,i号点对应图上j号点时的方案数 显然这样dp会使一些节点使用同一个节点,此时总的节点数就不满n个 我们枚举选的点S,再进行dp 然后根据选的点数量进行容斥 【BZOJ卡不过QAQ】 C++ inclu 阅读全文
posted @ 2018-05-16 10:35 Mychael 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3236" 题解 没想到这题真的是如此暴力 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) define REP 阅读全文
posted @ 2018-05-16 08:31 Mychael 阅读(175) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3244" 题解 不会做 "orz" 我们要挖掘出bfs序和dfs序的性质 ①容易知道bfs序一定是一层一层的,如果我们能确定在bfs序中各层的断点,就能确定深度 ②由于bfs序和dfs序儿子遍历顺序是一样的,所以bfs序同一层的点,在dfs序中顺 阅读全文
posted @ 2018-05-16 07:40 Mychael 阅读(366) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4826" 题解 蒟蒻智力水平捉急orz 我们会发现相邻的ij贡献一定是p1,可以很快算出来【然而我一开始忘了考虑调了半天】 我们现在只考虑不相邻的 我们只需要找出所有产生贡献的i,j即可 我们发现每一个产生贡献的i,j都能对应到一个三元组(i,k,j) 阅读全文
posted @ 2018-05-15 20:54 Mychael 阅读(248) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4552" 题解 之前去雅礼培训做过一道题,O(nlogn)维护区间排序并能在线查询 可惜我至今不能get 但这道题有着O(nlog2n)的离线算法 我们看到询问只有一个,自然可以去尝试二分 我们二分一个值,就只关心最终那个位置的值和其的大小关系 所以我们可以令所有$\ 阅读全文
posted @ 2018-05-15 16:56 Mychael 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5299" 题解 就一个毒瘤卡常题。。写了那么久 设f[i][s]表示选了集合s中的点,最后一个是i,进行转移 要先预处理出两点间的点,然后卡卡常就可以过了 C++ include include include include include include inc 阅读全文
posted @ 2018-05-15 15:36 Mychael 阅读(117) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4032" 题解 首先膜hb 空手切神题 一问hash,二问枚举 三问trie树,四问dp 南二巨佬神hb 空手吊打自动机 orzorzorzorzorzorzorz 咳。说正解 要处理子串,直接搬上后缀自动机 要处理子序列,直接搬上序列自动机 阅读全文
posted @ 2018-05-15 11:15 Mychael 阅读(254) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4894" 题解 双倍经验 "P5297" "题解" 阅读全文
posted @ 2018-05-15 08:43 Mychael 阅读(184) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5297" 题解 最近这玩意这么那么火 这题要用到有向图的矩阵树定理 主对角线上对应入度 剩余位置如果有边则为1,不然为0 Mi,i即为以i为根的有向图生成树个数 C++ include include include include include in 阅读全文
posted @ 2018-05-15 08:30 Mychael 阅读(300) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5300" 题解 这题真的是很丧病,,卡高精卡到哭 我们设f[i]表示卸掉前i个环需要的步数 那么 f[i]=2f[i2]+f[i1]+1 直接高精递推不仅MLE而且TLE 然后就要用到数学求通项公式,~~或者打表找规律~~ $$f[n] 阅读全文
posted @ 2018-05-15 07:58 Mychael 阅读(167) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5301" 题解 莫队水题 BZOJ400AC纪念 阅读全文
posted @ 2018-05-14 21:07 Mychael 阅读(115) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3594" 题解 dp难题总是想不出来,, 首先要观察到一个很重要的性质,就是每次拔高一定是拔一段后缀 因为如果单独只拔前段的话,后面与前面的高度差距大了,不优反劣 然后很显然可以设出f[i][j]表示前i个玉米,第i棵必须选,且共拔高了j次的最大值 由之前的性质 阅读全文
posted @ 2018-05-14 20:48 Mychael 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3597" 题解 orz一眼过去一点思路都没有 既然是流量网络,就要借鉴网络流的思想了 我们先处理一下那个比值,显然是一个分数规划,我们二分一个λ=XYk 如果λ成立,则 $$\lambda \le \frac{X Y}{k 阅读全文
posted @ 2018-05-14 17:05 Mychael 阅读(184) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3230" 权限题 题解 后缀数组基础题 询问第K大不同子串和正反lcp长度 ~~如果您RE了,您就要知道询问的输入会爆LL~~ C++ include include include include include include define Redge(u) for (in 阅读全文
posted @ 2018-05-14 15:43 Mychael 阅读(163) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5158" 题解 题中所给的最长上升子序列其实就是一个限制条件 我们要构造出最大的以i开头的最长下降子序列,就需要编号大的点的权值尽量小 相同时当然就没有贡献,所以我们不妨令权值为一个1n的排列 考虑如何满足限制条件 对于所有a[i]=v的点,点与点之间一定 阅读全文
posted @ 2018-05-14 11:27 Mychael 阅读(191) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5154" 题解 先跑出一个匹配方案 然后暴力删去每对匹配再检验一下答案是否减小 使用KM算法提升速度 C++ include include include include include include define REP(i,n) for (int i = 1; i (a 阅读全文
posted @ 2018-05-14 09:52 Mychael 阅读(245) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3609" 题解 我们假设最后合成若干个m,和nmodm,此时合成次数是最多的,也唯一确定胜利者 可以发现,在轮流操作的情况下,胜利者一定可以将终态变为这个状态 所以只用判奇偶性即可 C++ include include include include inclu 阅读全文
posted @ 2018-05-14 09:24 Mychael 阅读(146) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5157" 题解 我们只需计算每个位置为开头产生的贡献大小,就相当于之后每个大于当前位置的位置产生的贡献 + 1之和 离散化后用树状数组维护即可 要注意去重,后面计算的包含之前的,记录下来减去即可 C++ include include include include inclu 阅读全文
posted @ 2018-05-14 08:45 Mychael 阅读(209) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4031" 题解 第一眼:这不裸的矩阵树定理么 第二眼:这个模109是什么鬼嘛QAQ 想尝试递归求行列式,发现这是O(n!)的。。 想上高斯消元,却又处理不了逆元这个东西、、 无奈去翻题解,,, 发现可以用类似辗转相除法去消,而避免除法,,, 这样子依旧是每次一行减去另 阅读全文
posted @ 2018-05-14 07:56 Mychael 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4890" 题解 枚举断开哪一条边,然后对剩余的两棵树分别做一遍换根法树形dp 需要求出每个点到树中其它点距离的最大值f[i]和次大值g[i]【用以辅助换根计算最大值】 求出每棵树中的最长路径,然后再将两棵树中f[i]最小值相连保证相连后产生的最大值最小 $O(n^2 阅读全文
posted @ 2018-05-13 21:37 Mychael 阅读(200) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3456" 题解 据说这题是多项式求逆 我太弱不会QAQ,只能O(nlog2n)分治NTTf[i]表示i个节点的简单无向连通图的数量 考虑转移,直接求不好求,我们知道n个点无向图的数量是2(n2)的,考虑用总数减去不连通的 既 阅读全文
posted @ 2018-05-12 18:03 Mychael 阅读(212) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3622" 题解 既已开题 ~~那就已经没有什么好害怕的了~~ 由题目中奇怪的条件我们可以特判掉nk为奇数时答案为0 否则我们要求的就是糖果大于药片恰好有nk2+k个的方案数,我们记为K 思路1 直接求恰好不好求,想到二项式反演: 如果有 阅读全文
posted @ 2018-05-12 15:00 Mychael 阅读(214) 评论(0) 推荐(1) 编辑
摘要:题目链接 "BZOJ4001" 题解 "Miskcoo" 太神了,orz 阅读全文
posted @ 2018-05-12 08:16 Mychael 阅读(225) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1025" 题解 题意就是问一个1....n的排列在同一个置换不断重复下回到1...n可能需要的次数的个数 和置换群也没太大关系 我们只需知道同一个置换不断重复,实际上就是每个循环节的元素不断在循环节上旋转,所需次数就是所有循环节长度的lcm 这一点很显然 而循环节数 阅读全文
posted @ 2018-05-11 20:50 Mychael 阅读(147) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1004" 题解 burnside定理 在m个置换下本质不同的染色方案数,等于每种置换下不变的方案数的平均数 记L为本质不同的染色方案数,m为置换数,f(i)为置换i下不变的方案数,那么 $$L = \frac{1}{m}\sum\limits_{i = 1} 阅读全文
posted @ 2018-05-11 20:02 Mychael 阅读(173) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4888" 题解 要求所有连续异或和,转化为任意两个前缀和相减 要求最后的异或和,转化为求每一位1的出现次数 所以我们只需要对每一个i快速求出$sum[i] sum[j] \quad [j include include include include include d 阅读全文
posted @ 2018-05-11 17:08 Mychael 阅读(340) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4824" 题解 观察出题目中的关系实际上是完全二叉树的父子关系 我们设f[i][j]为以i为根的节点在其子树中排名为j的方案数 转移时,枚举左右子树分别有几个节点比i小,进行转移 乍一看是O(n3)的,但其复杂度分析和某一题很像 就是在根处枚举两个子树大小 阅读全文
posted @ 2018-05-11 15:36 Mychael 阅读(204) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ3252" 题解 为什么每次写出数位dp都如此兴奋? ~~因为数位dp太苟了~~ ~~因为我太弱了~~ 设f[i][0|1][cnt1][cnt0]表示到二进制第i位,之前是否达到上界,前面已经有cnt11cnt00时的方案数 显然当$cnt1 = 0 阅读全文
posted @ 2018-05-11 08:39 Mychael 阅读(169) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3238" 题解 简单题 经典后缀数组 + 单调栈套路,求所有后缀lcp 阅读全文
posted @ 2018-05-11 07:34 Mychael 阅读(125) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1233" 题解 有一个贪心策略:同样的干草集合,底长小的一定不比底长大的矮 设f[i]表示i...N形成的干草堆的最小底长,同时用g[i]记录此时的高度 那么 $$f[i] = min\{f[j]\} \quad [sum[j 1] sum[i 1] \ge f[j 阅读全文
posted @ 2018-05-11 07:08 Mychael 阅读(148) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ2374" 题解 题意: 给出n个平行于x轴的栅栏,求从一侧栅栏的某个位置出发,绕过所有栅栏到达另一侧x=0位置的最短水平距离 往上说都是线段树优化dp 我写了一个奇怪的线段树过了,似乎并没有和dp沾边 因为每次都是从某个栅栏的端点出发,到达某个位置的值等于[所有这 阅读全文
posted @ 2018-05-10 21:27 Mychael 阅读(201) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ" 题解 背包树形dp板题 就是读入有点无聊,浪费了很多青春 C++ include include include include include include include define LL long long int define REP(i,n) for (int i 阅读全文
posted @ 2018-05-10 16:48 Mychael 阅读(283) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1855" 题解 设f[i][j]表示第i天结束时拥有j张股票时的最大收益 若iW,显然在这之前不可能有交易 f[i][j]=max{f[i1][j],ap[i]j}[jas[i]] 否则,就有三种选择: ① 阅读全文
posted @ 2018-05-10 14:49 Mychael 阅读(176) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ3585" 题解 二次扫描与换根法 对于这样一个无根树的树形dp 我们先任选一根进行一次树形dp 然后再扫一遍通过计算得出每个点为根时的答案 C++ include include include include include define LL long long int de 阅读全文
posted @ 2018-05-10 12:18 Mychael 阅读(282) 评论(0) 推荐(0) 编辑
摘要:题目链接 "选课" 题解 基础背包树形dp C++ include include include include include define LL long long int define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) defi 阅读全文
posted @ 2018-05-10 11:20 Mychael 阅读(177) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2535" 题解 航班之间的关系形成了一个拓扑图 而且航班若要合法,应尽量早出发 所以我们逆拓扑序选点,能在后面出发的尽量后面出发,不会使其它点变得更劣,容易知是正确的 第二问只需枚举航班x,拓扑排序时忽视x,最后无法选点时就是x最早的时间 C++ include i 阅读全文
posted @ 2018-05-10 10:24 Mychael 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ" 题解 "orz" 此题太优美了 我们令xy为最简分数,则xy即,gcd(x,y)=1 先不管k进制,我们知道10进制下如果xy是纯循环的,只要2y5y 可以猜想 阅读全文
posted @ 2018-05-09 19:44 Mychael 阅读(286) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1017" 题解 orz "hzwer" 树形dp神题 设f[i][j][k]表示i号物品恰好花费k金币,并将j个物品贡献给父亲的合成时的最大收益 计算f[i][j][k]时,我们先枚举合成了x个i号物品,计算出此时的花费各种金币下最大收益 然后就可以枚举 阅读全文
posted @ 2018-05-09 14:40 Mychael 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目链接 "hdu5834" 题解 思路很粗犷,实现很难受 设f[i][0|1]表示向子树走回来或不回来的最大收益 设g[i][0|1]表示向父亲走走回来或不回来的最大收益 再设h[i]f[i][0]的次优收益 对于f[i][1],贪心选择所有$f[v][1] 2 w \ge 阅读全文
posted @ 2018-05-09 10:53 Mychael 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ2152" 题解 经典老题,还真暴力 n1000,所以可以O(n2)做 所以可以枚举每个点依附于哪一个点 设f[u]表示以u为根的子树的最小代价 g[u][v]表示u依附于v时以u为根的子树的最小代价 显然 $$f[u] = min\{ 阅读全文
posted @ 2018-05-09 08:41 Mychael 阅读(366) 评论(0) 推荐(0) 编辑
摘要:题目链接 "POJ1848" 题解 由题,一个环至少由三个点组成,一个点作为根时,可以单独成链,可以与其一个儿子成链,或者与其两个儿子成环,与其一个剩余链长度大于等于2的儿子成环。 那么我们设最小代价 f[u][0]表示以u为根全部成环 f[u][1]表示除u外全部成环 $f[u][ 阅读全文
posted @ 2018-05-09 07:47 Mychael 阅读(196) 评论(0) 推荐(0) 编辑
摘要:题目链接 "hdu3586" 题解 二分 + 简单的树形dp 我正有练一下dp的必要了 阅读全文
posted @ 2018-05-08 17:58 Mychael 阅读(143) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4557" 题解 "orz" 比较难的树形dp 不过想想也还好 看数据猜状态,一维是点,一维是D 那么就先设f[i][j]表示i所在子树已处理完毕,还能向上【或向任意方向】覆盖j层的最小代价 考虑转移,会发现子树间会相互影响,一个子树用f[s][j+1]更新了 阅读全文
posted @ 2018-05-08 17:28 Mychael 阅读(157) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4000" 题解 注意题目中的编号均从0开始= = m特别小,考虑状压 设f[i][s]为第i行为s的方案数 每个棋子能攻击的只有本行,上一行,下一行, 我们能迅速找出哪些状态是合法的,以及每个状态所对应的上一行攻击位置的并和下一行攻击位置的并 如果两个状态上 阅读全文
posted @ 2018-05-08 13:29 Mychael 阅读(253) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1487" 题解 就是一个简单的仙人掌最大权独立集 还是不会圆方树 老老实实地树形Dp + 环处理 C++ include include include include include define LL long long int define Redge(u) for (i 阅读全文
posted @ 2018-05-07 19:18 Mychael 阅读(196) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4002" 题解 容易想到b+d2是二次函数x2bx+b2d4=0的其中一根 那么就有 x2=bxb2d4 两边乘一个xn $$x^n = bx^{n 1} 阅读全文
posted @ 2018-05-06 21:01 Mychael 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目链接 "洛谷P3832" 题解 字符串哈希然后丢到hash表里边查询即可 因为k50,1、2操作就暴力维护一下 经复杂度分析会发现直接这样暴力维护是对的 一开始自然溢出WA了,还以为是哈希冲突,改成双哈希后依旧WA 后来才发现是sb了漏了一句QAQ 不卡自然溢出 C++ inclu 阅读全文
posted @ 2018-05-05 21:51 Mychael 阅读(269) 评论(1) 推荐(0) 编辑
摘要:题目链接 "BZOJ3571" 题解 如果知道最小乘积生成树,那么这种双权值乘积最小就是裸题了 将两权值和作为坐标,转化为二维坐标系下凸包上的点,然后不断划分分治就好了 这里求的是最小匹配值,每次找点套一个二分图最小权匹配 为什么用KM算法?因为这道题丧心病狂卡费用流QAQ 写完就A啦,十分的感人 阅读全文
posted @ 2018-05-05 16:37 Mychael 阅读(292) 评论(0) 推荐(0) 编辑
摘要:先orz "litble——KM算法 " 为什么要用KM算法 ~~因为有的题丧心病狂卡费用流~~ KM算法相比于费用流来说,具有更高的效率。 算法流程 我们给每一个点设一个期望值【可行顶标】 对于左边的点来说,就是期望能匹配到多大权值的右边的点 对于右边的点来说,就是期望能在左边的点的期望之上还能产 阅读全文
posted @ 2018-05-05 15:56 Mychael 阅读(766) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2121" 题解 dp怎么那么神呐QAQ 我们要求出最小字符串长度 我们设一个dp[i]表示前i个字符最后所形成的最短字符串长度 对于第i个字符,要么保留,就是dp[i]=dp[i1]+1,要么和前面若干个字符一起被删掉 我们设c[i][j]表示区间 阅读全文
posted @ 2018-05-05 00:03 Mychael 阅读(180) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2395" 题意:无向图中每条边有两种权值,定义一个生成树的权值为两种权值各自的和的积 求权值最小的生成树 题解 如果我们将一个生成树的权值看做坐标,那么每一个生成树就对应一个二维平面上的坐标 在同一个反比例函数图像上的点权值相同,反比例函数xy越小的点越贴近坐标轴 所以答案 阅读全文
posted @ 2018-05-04 11:28 Mychael 阅读(322) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2396" 题解 一种快速判断两个矩阵是否相等的方法: 对于两个nn矩阵,两边同时乘一个n1的随机矩阵,如果结果相等,那么有很大概率两个矩阵相等 如果左边是AB的话,用矩阵的结合律先让B乘就好了,这样子总是一个nn的矩阵乘一个n1的矩阵 复杂度$ 阅读全文
posted @ 2018-05-04 10:16 Mychael 阅读(278) 评论(0) 推荐(0) 编辑
摘要:题目链接 "loj300" 题解 orz "litble" 膜完题解后,突然有一个简单的想法: 考虑到2是质数,考虑Lucas定理: $${n \choose m} = \prod_{i = 1} {\lfloor \frac{n}{2^{i 1}} \rfloor \mod 2^i \choo 阅读全文
posted @ 2018-05-03 19:13 Mychael 阅读(221) 评论(0) 推荐(0) 编辑
摘要:"题目" 题解 除了52 后缀数字对P取模意义下,两个位置相减如果为0,那么对应子串即为P的倍数 只用对区间种相同数个数x贡献(x2) 经典莫队题 P=25就特判一下 阅读全文
posted @ 2018-05-03 17:44 Mychael 阅读(220) 评论(0) 推荐(0) 编辑
摘要:题目 给定长度为n的序列:a1,a2,…,an,记为a[1:n]。类似地,a[l:r](1≤l≤r≤N)是指序列:al,al+1,…,ar 1,ar。若1≤l≤s≤t≤r≤n,则称a[s:t]是a[l:r]的子序列。现在有q个询问,每个询问给定两个数l和r,1≤l≤r ≤n,求a[l:r]的不同子序 阅读全文
posted @ 2018-05-03 16:56 Mychael 阅读(270) 评论(0) 推荐(0) 编辑
摘要:题目 我的室友最近喜欢上了一个可爱的小女生。马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她。每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度。但是在她生日的前一天,我的室友突 然发现他好像拿错了一个手环,而且已经没时间去更换它了!他只能使用一种特殊的方法,将其中一 阅读全文
posted @ 2018-05-01 17:45 Mychael 阅读(175) 评论(0) 推荐(0) 编辑
摘要:题目 给定正整数n,m。求 输入格式 一行两个整数n,m。 输出格式 一个整数,为答案模1000000007后的值。 输入样例 5 4 输出样例 424 提示 数据规模: 1 include include include include define LL long long int define 阅读全文
posted @ 2018-05-01 15:53 Mychael 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目 输入格式 第一行,两个正整数 S 和 q,q 表示询问数量。 接下来 q 行,每行一个正整数 n。 输出格式 输出共 q 行,分别为每个询问的答案。 输入样例 30 3 9 29 1000000000000000000 输出样例 0 9 450000036 提示 对于100%的数据,2 inc 阅读全文
posted @ 2018-05-01 14:34 Mychael 阅读(320) 评论(0) 推荐(2) 编辑
摘要:题目 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心。 现在他想计算这样一个函数的值: S(i, j)表示第二类斯特林数,递推公式为: S(i, j) = j ∗ S(i − 1, j) + S(i − 1, j − 1), 1 i0$ \begin{al 阅读全文
posted @ 2018-05-01 09:29 Mychael 阅读(199) 评论(0) 推荐(0) 编辑
摘要:第二类斯特林数 第二类斯特林数,记为{nm}S(n,m),表示将n个元素划分到m个非空无序集合的方案数 计算式 计算式有两种,递推式和通项式 递推式 第n个元素有两种选择,自己独立为一个集合,或者加入之前的集合 $ 阅读全文
posted @ 2018-05-01 08:26 Mychael 阅读(487) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示