摘要:
题目分析: 首先想一个DP方程,令f[m][n]表示当前在前n个村庄选了m个基站,且第m个基站放在n处的最小值,转移可以枚举上一个放基站的村庄,然后计算两个村庄之间的代价。 仔细思考两个基站之间村庄的代价,会发现对于一个村庄,它需要付出代价的时候当且仅当上一个基站控制不到它,下一个基站也控制不到它, 阅读全文
摘要:
题目分析: 首先这种乱七八糟的题目就分块。然后考虑逆序对的统计。 一是块内的,二是块之间的,三是一个块内一个块外,四是都在块外。 令分块大小为$S$。 块内的容易维护,单次维护时间是$O(S)$。 块之间的有两种维护方法,一种是在块内维持有序,那么修改的时候进行一次插排,查询的时候枚举每一块,然后二 阅读全文
摘要:
题目分析: yy一下就知道了,合并用可并堆少个log。 代码: 阅读全文
摘要:
题目分析: 以前一直不会这个方法, 我好菜啊。 转移分为三个部分,一个是直接成功,一个是转移到E1,还有一个是转移到自己周围的一圈儿点。 如果是叶子那么只能转移到父亲,如果不是叶子可以把非叶子的转移代换,这样也只转移到父亲,判一下无解就行了。 代码: 阅读全文
摘要:
题目分析: 题目是求$E(MAX_{i=1}^n(ai))$, 它等于$E(\sum_{s \subset S}{(-1)^{|s|-1}*min(s))} = \sum_{s \subset S}{(-1)^{|s|-1}*E(min(s))}$。 那么设计期望DP,令$f[i][j][k]$表示 阅读全文
摘要:
题目分析: 考虑欧拉序,这里的欧拉序与ETT欧拉序的定义相同而与倍增LCA不同。然后不妨对于询问$u$与$v$让$dfsin[u] \leq dfsin[v]$,这样对于u和v不在一条路径上,它们可以改成询问$dfsin[u]$到$dfsin[v]$。否则改成$dfsout[u]$到$dfsin[v 阅读全文
摘要:
题目大意:求有所有颜色的路径数。 题目分析:参考codeforces997C,先利用基的FMT的性质在$O(2^k)$做FMT,再利用只还原一位的特点在$O(2^k)$还原,不知道为什么网上都要点分治。 代码: 阅读全文
摘要:
题目分析: 从起点开始询问终点连通性,优先右走。从终点开始询问起点连通性,优先上走。 代码: 阅读全文
摘要:
题目大意: 给一些没安排权值的边和安排了权值的边,没被安排的边全要被选入最小生成树,问你最大能把它们的权值和安排成多少。题目分析:假设建好了树,那么树边与剩下的每一条边都能构成一个环,并且非树边的权值是环中最大的,所以钦定边权不大于非树边即可。用并查集维护一下。 代码: 阅读全文
摘要:
题目分析: 首先不难注意到式子就是异或卷积,所以考虑用分治乘法推出优化方法。我们把一个整体$f$拆成$f-,f\pm,f+$,然后另一个拆成$g-,g\pm,g+$.这样做的好处是能更清楚的分析问题。下面我们下宽油(大雾)。发现三个部分要求的式子是在两者相乘中选不同的三个,所以我们发现三个部分中每取 阅读全文