zoukankan      html  css  js  c++  java
  • CF1204E

    神仙计数题啊。(或者是我计数太烂了?)


    首先这个最大前缀和的很难融入到计数里面,很自然的想到对每个最大前缀和计数然后乘起来相加。

    最大前缀和恰好等于某数比较难,套路地按差分思想计算最大前缀和小于等于某数的序列个数。但思考无果(

    考虑正难则反,求至少有一个位置的前缀和大于等于该数的序列个数。由于起点从零开始,只要算至少有一个位置的前缀和等于该数的序列个数,即画成折线后穿过 (y=i) 的个数。

    首先如果 (n-mgeq i),那么根据离散版的拉格朗日中值定理或者按照图形直观理解,知道所有序列都满足,答案就是 (dbinom{n+m}n)。否则只需要考虑 (n-m<i)

    考虑容斥?考虑仅让第一次到达 (i) 的位置做贡献?都思考无果,最好可以做到 FFT 优化的平方对数。下面就是很神仙的一步了!考虑转化,把至少穿过一次 (y=i) 的折线这样一个不好数的东西转化成另一个东西。我们发现将这样的折线第一次穿过 (y=i) 前面的部分按 (y=i) 翻折依然连续,否则不可能连续。那么容易得到 (2i o n-m) 的折线和这样的折线形成双射。而这是好算的!就是 (dbinom{n'+m'}{n'}),其中 (n',m') 解个方程就可以出来。

    时间复杂度平方或线性。

    P.S. 解方程过程:(n'-m'=n-m+2i,n'+m'=n+m),解得 (n'=n+i,m'=m-i)。(bzd 是哪个毒瘤管理员连二元一次方程组的解法也要求放在紫题题解里/kel/kel)

    珍爱生命,远离抄袭!
  • 相关阅读:
    分享
    慕课网-软件测试基础-学习笔记
    向量内积(点乘)和外积(叉乘)概念及几何意义
    使用opencv3+python实现视频运动目标检测
    解决opencv3运行opencv2代码时报错的修改备忘录
    分享
    OpenCV学习笔记
    LeetCode
    LeetCode
    npm安装包很慢
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-cf1204e.html
Copyright © 2011-2022 走看看