码迷,mamicode.com
首页 > 其他好文 > 详细

省选模拟65

时间:2020-04-08 17:35:37      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:dep   math   直接   答案   表示   区间dp   部分   模拟   lin   

A. 容器

直接区间DP复杂度很高
限制相同,借鉴插头dp思路从左向右保存插头。
定义\(f(i,j,k)\)为i点存在j个插头还有k个可建插头,k限制了总数。
枚举i为多少插头(区间)的右端点,i+1新增多少插头。
形式为\(f(i,j,k)\times \binom{k}{a}\binom{j}{b} -> f(i+1,j+a-b,k-a)\)

B. 果树

同种颜色点很少,枚举其中两点x y,令dep[x]>dep[y]
分类讨论不合法的点对分布在哪

  1. y是x的祖先。(y除x方向子树)和(x子树)
  2. 非祖孙关系。(x子树)和(y子树)

把路径a->b,看成点对(a,b),坐标系二维表示,用dfs序找出区间
那么对于x y来说不合法的路径就是一些矩形。
对于所有x y的矩形求并,就是所有不合法路径。
取反后,(i,i)这种点对单算,其他/2。
扫描线+线段树求矩形面积并即可。

C. 流浪

答案等同于每个点被经过>=K次的路径数之和
设当前考虑点为(x,y)
路径拆成三个部分(都不经过障碍):

  1. \(A[i]:(0,0)-i->(x,y)\),第一次到达。
  2. \(C[i]:(x,y)-i->(x,y)\),自环且内部无自身自环
  3. \(B[i]:(x,y)-i->(?,?)\),随便走

A B C都可以DP得到,然后对C做背包DP,处理出i步走K-1个自环的方案数。
三个部分卷在一起就是答案。

省选模拟65

标签:dep   math   直接   答案   表示   区间dp   部分   模拟   lin   

原文地址:https://www.cnblogs.com/hzoi-yzh/p/12661306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!