![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
综合思维题
Thomas_ZQQ@Runespoor
这个作者很懒,什么都没留下…
展开
-
【题解】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 · 559 阅读 · 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 · 261 阅读 · 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 · 109 阅读 · 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 · 402 阅读 · 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 · 258 阅读 · 0 评论 -
【比赛小结】atcode的一场奇怪比赛 2019.2.9
连接还是记录一下这场糟糕的比赛F题一个显然的结论是只需要管前i个位置最多选多少个红球和蓝球。只要满足这个条件的序列一定是可以构造的。这个感性的猜一猜再转化一下就是长度为i的前缀的球一定来自前i个,顺着更新一遍mx就好。比赛的时候竟然觉得这个东西太简单,肯定是错的就没有写。求mx还想复杂了。需要make sure自己的结论!思维要更加清晰!#include<bits/stdc++...原创 2019-02-14 12:19:00 · 228 阅读 · 0 评论 -
【题解】codeforces 1023G. Pisces 最长反链 数据结构维护差分 启发式合并
problem题解这道题非常巧!我的姿势水平太落后,一开始还在想费用流,如何优化建边(可能是因为看到题目tag里有个flow。一定不能被这些tag影响,要自己摸索题目算法)费用流是经典模型:把在每一天拆点,一个表示必须用,一个表示用了的给以后的点使用。同:餐巾计划问题要是优化建边树分治?边都是nlog^2,简直是胡思乱想!Dilworth定理全集U是一个偏序集U的链划分使用的最...原创 2019-03-05 20:04:52 · 337 阅读 · 0 评论 -
【题解】uoj236 【IOI2016】railroad(欧拉图+最小生成树)
这篇题解很好总结:特殊的哈密顿回路通常考虑转化成欧拉回路。把NP问题转化成可解的东西把速度看成点,一个很巧妙的转化!这题利用了欧拉回路存在的充要条件每个联通块的进入和出去的边数相同,等价于所有点出入度相同。然后要一次性走完,还要联通,因此要最小生成树。离散化后unique一下就没有孤立点了。所有留下的点都要联通#include<bits/stdc++.h>using ...原创 2019-03-11 15:22:14 · 406 阅读 · 0 评论 -
【题解】UOJ #422. 【集训队作业2018】小Z的礼物
题面题解min-max 容斥 : min-max容斥介绍或者看我的,虽然非常不详细转化成求一个集合第一个被选的期望因为覆盖的方案数只有2 * n * m - n - m那么就想把覆盖方案数相同的方案放在一起DP轮廓线DP,f[S][k]表示轮廓线状态为S,覆盖方案为k的方案数。注意这个DP转移的时候要带上min-max容斥的正负号。知道k以后,期望就是:(2 * n * m - ...原创 2019-04-27 10:06:07 · 315 阅读 · 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 · 181 阅读 · 0 评论 -
【题解】HDU 4532 XHXJ's LIS 数位dp
题面&题解注意:lis用记录每个长度的末尾的方法求,性质是每个末尾严格递增,所以可以简化状态! 前导0可以直接在处理lis的转移的时候特判需要把k相同的询问放在一起,然后预处理(或者分开记忆化)不顶上界的情况。否则会TLE!#include<bits/stdc++.h>using namespace std;#define rep(i,l,r) for(regi...原创 2019-02-12 17:47:59 · 161 阅读 · 0 评论 -
【题解】UOJ #388. 【UNR #3】配对树 找性质+链剖或线段树合并
题目题解**关键是把区间配对后的答案转化成每条边的贡献。可以发现,每条边贡献当且仅当子树内的点数为奇数。并且每条边最多贡献一次****那么可以对每条边分别考虑。移动右端点,插入一个点相当于该点到根的路径权值取反,直接链剖就好了**再进一步转化考虑每条边贡献次数。即长度为偶数且在子树内出现数的次数为奇数的区间个数,线段树合并维护线段树合并做法...原创 2019-02-07 18:42:01 · 184 阅读 · 0 评论 -
【比赛小结和题解】Codeforces Global Round 1 注意贪心,简单dp技巧,还有AC自动机+数位dp
从重要的题开始题解连接1110G - Tree-Tac-Toe题意:给出一棵树,上面有白点和未染色点,白色先手,轮流染色。当染成3个连续白点获胜。问是平局还是白胜。 n &amp;lt;= 5e5**这道贪心很好!首先通过加点把白点转化成无色。加点只要保证进行相同的染色后先后手不变,并且状态和以前一致。这样转化大大减少了分类讨论的情况。即使不转化也能讨论。但是转化后模型简单很多!***...原创 2019-02-08 09:53:49 · 1773 阅读 · 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 · 1831 阅读 · 0 评论 -
【题解】codeforces1097H数位dp+合并技巧
题目题意按原题给出一个序列生成方式。求第[l,r]为间有多少子串A满足A <= B<= 定义为每一位都小于等于题解思路:维护长度为d^i的区间的信息,使得区间可以合并。这样合并区间的思路非常常见。在计数和线段树。。。都可以用到注意:维护的时候如果位数不够补充成0 这样合并的时候不用再check整块是否合法关于位运算,用all维护所有状态,可以方面的实现删除和保留一...原创 2019-02-08 12:26:11 · 375 阅读 · 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 · 429 阅读 · 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 · 186 阅读 · 0 评论 -
【题解】codeforces 1097E. Egor and an RPG game 构造+找性质
题目题解构造一个序列,使得最长上升子序列长度=最长下降子序列{1,3,2,6,5,4,10,9,8,7,15,14,13,12,11}.发现答案下界 为最大的k 满足(k + 1) * k / 2 <= n每次求出最长上升子序列长度,设为len若len <= k , 则直接用k个下降子序列覆盖。否则,删除最长上升子序列,递归。易证次数<= k本题的思路就是用最长...原创 2019-02-09 11:56:44 · 317 阅读 · 0 评论 -
【题解】CF1060F Shrinking Tree 概率树形dp 好题!
题面link题目描述(中文)对于一棵有 nn 个节点的树 TT 。当 TT 的节点数多于一个时,反复执行以下操作:等概率地选取 TT 中的一条边。收缩选取的边:即合并这条边连接的两个点 uu 和 vv 。得到的新点的编号等概率地从 uu 和 vv 中选取一个。当这个过程结束时, TT 只剩一个节点了,它的编号可能是 1,…,n中的任意一个数 。对于每个编号,请输出最终得到这个编号的概率。...原创 2019-02-11 16:38:15 · 361 阅读 · 0 评论 -
【学习小结】概率、期望好题
1. Hello 2018 F. Strongly Connected Tournament题意n 个人比赛,标号小的赢标号大的概率为p每轮两两比赛,不在强连通分量中的人决出排名,在强连通分量中的继续重复此步骤问期望比赛场数n<=2000n <= 2000n<=2000题解思路:答案只与人数有关,与标号无关。dp时推式子,每次计算最后一个联通块...原创 2020-02-02 14:56:32 · 131 阅读 · 0 评论