一句话题解

  有些题目觉得价值不是特别大,不值得想单独写一篇随笔,但不至于一句话都不提。(其实是想偷点懒)

  • UVa Live 4327 单调队列优化动态规划。
  • UVa Live 4015 $f_{i,j}$表示从$i$开始走,在$i$的子树内走到$j$最少要走的距离。$g_{i, j}$只是增加一个要走回$i$的限制。转移是显然的。
  • UVa Live 4490 一种书被拿出来再放回去会不会增加贡献取决于这种书有没有完全被取走。然后随便状态压缩一下就过了
  • UVa 11600 转移只与连通块的大小有关。状压所有连通块的大小。(这题居然没有极限数据卡$2^{29}$????)
  • UVa Live 3029 最大子矩形一定是极大子矩形。极大子矩形只用考虑当前枚举的下界以上以下界为底的子矩形。显然用一个单调栈就能维护。
  • UVa 10382 因为喷水装置在中线上,所以只用考虑边界是否被完全覆盖。然后问题等价于选出若干个区间,覆盖大区间。每次选择左端点在当前覆盖的区间的且右端点坐标最大的区间。
  • UVa Live 4254 显然二分答案,每次选择$d$最小的任务执行,贪心地选择靠左的空闲时间段,用并查集维护已经被完全占用的时间段。按秩合并后可以做到$O((n + D)\log D)$.。
  • UVa Live 3516  每次考虑第一次访问的子树对应的一段。如果它是第$l + r$个字符到第$k - 1$个字符,那么满足$a_l = a_k = a_r$.
  • uoj 182 在某次操作后,每个位置上的数可以表示为$\frac{k_1 x + b_{1}}{k_2 x + b_2}$的形式,分离系数,对于分数部分,将它化为$c\times \frac{1}{x + d}$的形式,这一部分单独求和,分别维护分子和分母的多项式,多点求值,剩下的直接算。
  • UVa Live 4123 考虑可以直接计算出这个多边形的内拐点和外拐点的数量。考虑一下能够看到每个点的范围就能够证明多边形内存在一个点能够看到所有点的充要条件是不存在连续的两个$270^{o} $拐点。考虑一首一尾的情况,剩下的直接组合数计算。
  • UVa 4119 在$x = 1, \cdots, n + 1$判断是否是$D$的倍数。用逐差法很容易证明。
  • UVa Live 3704 循环矩阵做乘法时只用记录第一行。
  • UVa 11529 补集转化一下,变成求每个点在多少个三角形外部。如果画一条经过这一个点的直线,那么三个点都在同侧的三角形必定不包含它。把这条线转一圈就可以不重不漏地把每个三角形算一次。
  • UVa 10253 考虑按照串并联交替的顺序分解网络,将它转化成树的计数问题。由于叶节点个数不同的树一定不同构,可以分开考虑。每次考虑加入叶节点个数为$j$的子树,方案数可以乘上一个某个方程的非负整数解的个数。
  • bzoj 4514 设$f(x)$表示$x$写成$p_1p_2\cdots p_k$的形式中的$k$,把商为质数的条件可以换成$|f(x) - f(y)| = 1$,然后就可以建二分图。二分答案跑费用流。
  • bzoj 1070 把第$i$个修车师傅拆成$n$个点,第$j$个点表示倒数第$j$个修的车。然后随便建建图就能费用流了。
  • bzoj 2597 等价于最小化不合法三元环的个数(“三元环”中存在一个点在这三个点的导出子图内入度为2就不合法),把每个人拆成两个点,中间连边,容量为1,费用依次为$in_i, in_i + 1, \cdots, n - 1$,对于每个还不确定的赛局建一个点,向与它有关的两个人连边。
  • 洛古 P5108 建后缀树,dfs一遍,求每个点的子树内的后缀的最小左端点。然后扫一遍,得到答案,做完了。
  • Codeforces 1107F 对于把$k_i$用完和不用完分开处理。然后随便dp一下就行了。
  • Codeforces 1043F 显然答案低于$\log_2 V$,然后简单容斥数方案数,判断一下$gcd$恰好为1的方案数模若干个质数是否是0.
  • bzoj 4596 限制可以转化成没有公司没有建边,然后可以直接容斥加矩阵树定理。对于不连通的情况可以减一下枝。
  • Codeforces 976F 把割意义转化成删掉这条边,这样对于每个点的度限制变成上界,直接跑网络流。
  • Codeforces 1009G 对于每个字母建一个点,然后每一对中有字符c建一个点,建边留作练习。
  • Codeforces 884F 直接贪心,判断能不能填这个字符用Hall定理。
  • uoj 269 用一次NTT把点值转成牛顿级数。
  • Codeforces 1141G 答案是第$k + 1$大的度数,dfs一遍就能构造了。
  • uoj 206 Subtask1每次询问边界,Subtask2,1次询问出最大值和最小值,然后答案大于等于$\lfloor (mx - mi) / (n - 1) \rfloor$,每这么多分一段,每段问一次,做完了。
posted @ 2018-11-06 22:50 阿波罗2003 阅读(...) 评论(...) 编辑 收藏