题解
Thomas_ZQQ@Runespoor
这个作者很懒,什么都没留下…
展开
-
【题解】【UR #5】怎样跑得更快 反演技巧
【UR #5】怎样跑得更快题解见vfk的反演讲义思路非常经典:当我们要求值时,把与相同变量有关的部分令成同一函数,经过多次反演最后求解代码中的细节:无解的判断:非0数除0这种推式子的题调的时候必须检查代码和式子和相互对应关系,输出调试和gdb都是没有用的。只能静心一句句的读代码而我写题的时候不够专注,所以clear()函数忘了调用。推式子有个地方数组名大小写混了,调了很久遇到这种“...原创 2019-02-02 22:44:29 · 220 阅读 · 0 评论 -
【题解】Codeforces 1063F. String Journey 后缀数组+贪心
题目题解这是一道字符串好题!有几个重要的性质帮助解题:1. 每次只增加一个字符,答案不会变差2. 如果以i开头最优答案为k,则1,…,k - 1,都行3. 用dp[i]表示i开头的最优答案,dp[i + 1] + 1 >= dp[i]所以每次只需要枚举答案k,check当前是否合法。注意check的时候是询问是否有位置j满足1. j >= i + k , lcp(i...原创 2019-02-12 21:38:08 · 177 阅读 · 0 评论 -
【题解】codeforces 1039D. You Are Given a Tree 树形dp+二分答案
题解答案显然递减,并且变化点只有根号个。当路径长度>=sqrt(n)时,答案显然小于根号n所以二分答案找变化点即可这样根号的性质很常见!还有一类思路是sz不同的子树只有根号种这题还有更厉害的做法,留坑nsqrt(n * logn) 的做法要卡常,dfs太慢,每次check应该用bfs。#include<bits/stdc++.h>using namespace s...原创 2019-02-12 22:19:38 · 258 阅读 · 0 评论 -
【题解】Winter 2019 - Problems - 1030 Mixture Magic 数位DP
题意求和 sum = |LCS(x,y)| , x <= n, y <= n , n <= 1e5题解先说一个错误的做法考场上思考太不成熟了枚举S作为lcs的子串,计数包含lcs的串的个数,然后再减掉以包含S的LCS方案数。这样是错误的,因为两个串的lcs可能有多个长度相同的串,比如“12“,“21”的LCS可以是“1“或“2”正解是枚举一个数a,建立后缀自动机,然...原创 2019-02-13 20:41:38 · 104 阅读 · 0 评论 -
【题解】codeforces 1103D - Professional layer 质因数分解+状压DP
题意N个数A[i],可以给每个数除不超过K的因数,使得所有数GCD为1代价是除的数个数 * 除的数的权值和N <= 1e6 , A[i] <= 1e12题解**考虑所有数gcd的所有质因数,设D=P1a1P2a2 *…Pkak , 显然当次数为1的时候个数最大,这时最多只有11个质因数把A[i]化简为只含D的质因数的向量,不同向量只有最多M = 12000个(注意这时A[i...原创 2019-02-14 10:37:28 · 401 阅读 · 0 评论 -
【题解】codeforces 868 F. Yet Another Minimization Problem 决策单调性优化DP
题面题解题意给定一个序列 {a1,a2,⋯,an},要把它分成恰好 k 个连续子序列。每个连续子序列的费用是其中相同元素的对数,求所有划分中的费用之和的最小值。2≤n≤105,2≤k≤min(n,20),1≤ai≤n题解显然具有决策单调性,可以用四边形不等式优化DP唯一的问题是怎么快速计算w(l,r)的贡献用分治的写法。暴力从fa区间的左右端点移动到当前左右端点计算贡献即可。考...原创 2019-02-14 11:42:55 · 254 阅读 · 0 评论 -
【题解】【THUWC2017】随机二分图(动态规划)概率DP+状压
题面题解 yyb把后两种边拆分,因为只考虑边对完美匹配的方案的贡献,即该边出现且被使用才贡献(出现但是没有被使用视为没有出现)这个状压需要记左右点的匹配状态,因为存在强制选四个点的边。并且为了去重,每次只能枚举左边最小存在点的出边,合法状态不多,直接记忆化如果是一般的完美匹配,直接记f(i,S) : 考虑到左边第i个点,挨着匹配即可注意如果一对边有公共顶点,不用加/减额外的贡献,因为不...原创 2019-02-20 22:48:31 · 157 阅读 · 0 评论 -
【比赛小结】Codeforces Global Round 2
题解Problem F - Niyaz and Small Degreesfrom OI界第一麻瓜上面的题解写得很好我强行写了treap维护还是尽量用stl,好写很多。我主要是因为太久没有写过treap了。顺便改了一下码风删除点要把边彻底删除,不能打标机,否则复杂度仍然是错的。这题首先应该想到固定x的DP。一个简单的记录到fa的边是否删除的DP。然后根据度数的性质删去无关节点。...原创 2019-04-10 12:47:49 · 176 阅读 · 0 评论 -
【训练记录】2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest
题解E - Easy Reading题意:给定一个udlr组成的字符串和一个01矩阵。玩家按照字符串方向移动,初始为0,经过格子染为1。问是否存在子串能绘制出给定矩阵。题解:用two pointers优化到O(n)次判定。因为肯定保证1的个数相同。多项式哈希,∑value(x,y)axbymod  m\sum{value(x...原创 2019-04-03 15:17:50 · 277 阅读 · 0 评论 -
【题解】LOJ #6183. 看无可看 生成函数 + 分治FFT
题解推出f的通项:fn=a×3n−b×(−1)nf_n=a\times 3^n-b\times (-1)^nfn=a×3n−b×(−1)n最后我们要求:∑s′⊆s,∣s∣=k∏x∈s′wx\sum_{s'\subseteq s,|s|=k} \prod_{x\in s'} w^xs′⊆s,∣s∣=k∑x∈s′∏wx这个可以看成生成函数,分治FTT...原创 2019-04-23 12:34:24 · 352 阅读 · 0 评论 -
【题解】【CF666E】Forensic Examination(后缀自动机,线段树合并)
题解看 yyb的博客翻译:给定一个串S和若干个串Ti每次询问S[pl…pr]在Tl…Tr中出现的最多次数,以及出现次数最多的那个串的编号。**parent树上线段树合并很常规但是有个疑问:这个在trie树上进行一次节点映射,trie上节点被原串覆盖次数是均摊的啊,所以线段树合并复杂度会不会有问题,比如parent树深度子树出现位置特别大需要对线段树合并的复杂度再学习一下****...原创 2019-01-30 22:26:14 · 391 阅读 · 0 评论 -
【题解】codeforces1097G. Vladislav and a Great Legend 树形dp+计数
题目连接题意给定一棵树,选择一个点集合X,权值F(X)= 联通该集合边的条数求对所有点集合X,sigma(F(X) k)n &amp;lt;= 1e5 , k &amp;lt;= 200题解一开始以为用斯特林数维护k次方。但是不太会转化题解给出了一个巧妙的转化:把k次方看成选一个k维向量,统计每个向量的出现次数。为了统计方便,先统计有序且不重复出现的i维向量(1&amp;lt;=i&amp;lt;=k),然后...原创 2019-02-09 09:42:21 · 185 阅读 · 0 评论 -
【题解】bzoj 2138: stone hall定理+线段树
题目题解**选出的点必须存在完备匹配。于是用hall定理转化问题考虑每个区间都符合hall定理则肯定有解因为区间不包含可以用TR[R] - TL[L - 1]表示在【L,R】的询问区间每次询问是前缀max 和 后缀min之差 , 因为所有区间都满足hall定理才行具体看yyb的题解、。我就不赘述了 **注意:前缀max包含0位置,所以最小值为0#include<bits/...原创 2019-02-07 09:51:14 · 311 阅读 · 0 评论 -
【题解】bzoj 3307: 雨天的尾巴 线段树合并
DescriptionN个点,形成一个树状结构。有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品。完成所有发放后,每个点存放最多的是哪种物品。Input第一行数字N,M接下来N-1行,每行两个数字a,b,表示a与b间有一条边再接下来M行,每行三个数字x,y,z.如题Output输出有N行每i行的数字表示第i个点存放最多的物品是哪一种,如果有...原创 2019-02-07 14:36:04 · 243 阅读 · 0 评论 -
【题解】UOJ#418. 【集训队作业2018】三角形 线段树合并+贪心
题目题解题解考虑确定顺序的过程,每次操作+w[i] , -sigma(w[j]) 让前缀最大值最小。不能只考虑儿子的顺序贪心,因为在子树之间可能有奇怪的顺序,不是按照子树依次填的因为有限制,儿子先填,父亲后填,把序列倒过来考虑,抓化成父亲先填儿子后填。这样每个点只被一个点限制,才好贪心维护二元组(B[i]−A[i],B[i]),B[i]=sigma(w[j]),A[i]=w[i] ...原创 2019-02-07 17:50:52 · 550 阅读 · 0 评论 -
【题解】UOJ #388. 【UNR #3】配对树 找性质+链剖或线段树合并
题目题解**关键是把区间配对后的答案转化成每条边的贡献。可以发现,每条边贡献当且仅当子树内的点数为奇数。并且每条边最多贡献一次****那么可以对每条边分别考虑。移动右端点,插入一个点相当于该点到根的路径权值取反,直接链剖就好了**再进一步转化考虑每条边贡献次数。即长度为偶数且在子树内出现数的次数为奇数的区间个数,线段树合并维护线段树合并做法...原创 2019-02-07 18:42:01 · 179 阅读 · 0 评论 -
【比赛小结和题解】Codeforces Global Round 1 注意贪心,简单dp技巧,还有AC自动机+数位dp
从重要的题开始题解连接1110G - Tree-Tac-Toe题意:给出一棵树,上面有白点和未染色点,白色先手,轮流染色。当染成3个连续白点获胜。问是平局还是白胜。 n &amp;lt;= 5e5**这道贪心很好!首先通过加点把白点转化成无色。加点只要保证进行相同的染色后先后手不变,并且状态和以前一致。这样转化大大减少了分类讨论的情况。即使不转化也能讨论。但是转化后模型简单很多!***...原创 2019-02-08 09:53:49 · 1752 阅读 · 0 评论 -
【bzoj】3745: [Coci2015]Norma
题意:n <= 5e5题解:** 首先,想到确定最大值,最小值的区间一起统计。因为是统计所有区间,第一想法是枚举右端点,维护所有左端点的答案用单调栈分别维护最小值,最大值,把贡献拆开讨论一下,需要用线段树维护mx(i) * mn(i), mx(i) * mn(i) * i,mx(i) * i,mn(i) * i,mx(i),mn(i) 6个和。因为更新的时候要么更新最大值,要么更新...原创 2019-01-30 07:11:47 · 193 阅读 · 0 评论 -
【LOJ】#6374. 「SDWC2018 Day1」网格 【容斥套容斥】
【LOJ】#6374. 「SDWC2018 Day1」网格 这是一道计数好题,不难,但是需要对二项式反演的理论非常熟悉包含三层容斥,关于3个限制:不能在原地,x,y的步数限制,非法向量处理方法都是枚举至少超出限制所有容斥都是二项式反演:从至少k转移给恰好0,应该乘C(k,0) * (-1)^k,相当于没有乘组合数注意容斥的时候每一步之间是要组合和排列的一定要把题目限制看清楚:如果这...原创 2019-01-30 08:50:55 · 1825 阅读 · 0 评论 -
【题解】codeforces1097H数位dp+合并技巧
题目题意按原题给出一个序列生成方式。求第[l,r]为间有多少子串A满足A <= B<= 定义为每一位都小于等于题解思路:维护长度为d^i的区间的信息,使得区间可以合并。这样合并区间的思路非常常见。在计数和线段树。。。都可以用到注意:维护的时候如果位数不够补充成0 这样合并的时候不用再check整块是否合法关于位运算,用all维护所有状态,可以方面的实现删除和保留一...原创 2019-02-08 12:26:11 · 368 阅读 · 0 评论 -
【题解】codeforces 1065G. Fibonacci Suffix 合并技巧+按位贪心
题目连接题意:给出一个斐波那契序列,F[0] = “0” , F[1] = “1” , F[i] = F[i - 2] + F[i - 1]. 求第k小的后缀的前m位。题解直接按位贪心每次check一个前缀在F[n]中的出现次数。这个可以维护pre,suf , num表示F[i]和当前串的前后缀匹配长度和当前串出现次数长度不够默认可以匹配,用bitset优化合并复杂度O(n * m...原创 2019-02-08 15:21:49 · 421 阅读 · 0 评论 -
【题解】ICPC焦作2018
% wxhG和L好像在其他的博客,我分成专题的例题了。K - Counting Failures on a Trie比较经典的题目就是问一个子串被拆分后trie的几个前缀匹配注意这个trie只表示n个不同子串,每个节点表示一个,可以hash表存下来然后预处理每个位置的匹配长度查询用一个倍增维护注意把倍增定义清楚:我是定义失配2 i 到的位置。这个定义下直接合并没有问题。边界的...原创 2019-05-07 19:46:17 · 729 阅读 · 0 评论