当前位置: 首页 > news >正文

CF2150D

挺有意思的计数题,希望下次可以做出来类似的题目。

一个显然的转化是把 \(p\) 数组转换成记录每个位置的人数的 \(f\) 数组,于是我们需要求每种情况下的 \(\sum f_i a_i\)

首先需要一些观察,初始 \(f\) 数组每个位置都是 1 ,放置 attraction 的操作相当于把连续的三个值 merge 起来,并且在左右补上 0 ,归纳一下就很容易发现 \(f\) 数组合法当且仅当:

  • \(\exists L,R \in [1,n] \ s.t. L \leq R, \forall i\in [L,R] f_i>0 ,\forall i \notin [L,R] f_i=0\)

  • \(\forall i \in (L,R) f_i \mod 2 =1\)

  • \(\sum f_i =n\)

假设我们枚举出 \(R-L+1=K\) ,一个很巧妙的想法是利用除了端点的 \(f_i\) 都是奇数这一点构造一个和 \(f\) 一一对应的 \(g\) 数组,其中

  • \(f_L=2g_L+x\)

  • \(f_R=2g_R+y\)

  • \(\forall i\in (L,R) f_i=2g_i+1\)

这样的好处是,此时的 \(g\) 数组只有 \(\sum 2g=n-(K-1)-x-y\) 的限制,这是我们会做的形式。

现在要求所有情况下的 \(\sum g_i a_i\) 再加上一些和 \(x,y\) 有关的东西。

当然可以推式子,但一个比较简单的想法是:我们先假设固定了左右端点,观察到中间这些位置本质相同,所以 \(E(g_i)=\frac{S}{2K}\)\(\sum g_i a_i=\sum E(g_i) a_i \times ways\)
\(ways\) 表示这 \(K\)\(g\) 的分配方案(插板法)。

于是对于左右端点不固定的情况,我们只需要算出来所有长度为 \(K\) 的子串和就可以很方便地处理,时间复杂度线性或者带一个 \(\log\)

http://www.sczhlp.com/news/156173/

相关文章:

  • 网站建设方案应该怎么写如何查询自己的网站是否被收录
  • 商洛市城乡建设规划局网站杂谈发现一只网站是你们谁做的
  • 怎么创建个网站小程序网站开发
  • 枞阳做网站网站建设背景
  • 企业网站需要备案吗php网站验证码错误
  • 合作行业网站建设网站负责人信息
  • 网站动态与静态深圳福田保安公司
  • 网站如何做优化排名俄文网站开发
  • 网站怎么加站长统计电子商务企业 网站前台建设 苏宁
  • 网站的色调wordpress 教育主题
  • 怎么用vs2010做网站设计python app开发
  • 广西贵港建设集团有限公司网站苏州哪家公司做网站
  • 厦门网站建设2c2750服务器做网站行吗
  • 网站网站的建设什么外贸网站做箱包好
  • 网站如何加速seo是付费的吗
  • 沈阳鹊起网站建设常熟公司做网站
  • 怎样进入当地建设局网站网站建设上机考试
  • 企业官网属于什么网站北京企业建站哪家好
  • 网站开发公司赚钱么江苏越润建设有限公司网站
  • 网站如何设定关键词网页图片设计
  • 网站建设服务专业建站公司最开放的浏览器下载
  • 济源哪里做网站学生创业做网站制作设计
  • 网站 工作室手机网站如何做营销
  • html写手机网站深圳企业注销一窗通
  • 怎么查网站接入商郑州网络公司推荐
  • 百度权重高的网站新密网站
  • 网站的推广有哪些方式网站建设的费用计什么科目
  • 仿hao123的导航网站纯静态版|html导航网站源码网站做3年3年包括什么
  • 建设银行重庆分行网站视频怎么转成网址
  • 云南交投集团公路建设有限公司网站网站做外链怎么样