传送门

好题。

考察了莫队和组合数学两个知识板块。


首先需要推出单次已知n,mn,mn,m的答案的式子。

我们令f[i]f[i]f[i]表示当前最大值为第iii个数的方案数。

显然iii之后的数都是单调递减且连续的。

所以后面的方法是1种。

考虑第111~i−1i-1i−1个位置。

显然放法数为∑j=1i−1f[j]\sum _{j=1} ^{i-1}f[j]∑j=1i−1​f[j]

又因为f[1]=1,f[i−1]=∑j−1i−2f[j]f[1]=1,f[i-1]=\sum _{j-1} ^{i-2}f[j]f[1]=1,f[i−1]=∑j−1i−2​f[j]

因此f[i]=∑j=1i−1f[j]=∑j=1i−2f[j]+f[i−1]=2∗f[i−1]=2if[i]=\sum _{j=1} ^{i-1}f[j]=\sum _{j=1} ^{i-2}f[j]+f[i-1]=2*f[i-1]=2^if[i]=∑j=1i−1​f[j]=∑j=1i−2​f[j]+f[i−1]=2∗f[i−1]=2i

于是此时Ans=∑i=1n(mi)∗2i−1Ans=\sum _{i=1} ^n \binom {m} {i}*2^{i-1}Ans=∑i=1n​(im​)∗2i−1

然后考虑在已知当前答案时如何快速求出其它答案。

我们把n,mn,mn,m看成两个下标l,rl,rl,r,现在要转移到l′,r′l',r'l′,r′。

唉是不是有点莫队的味道。

于是我们只需要考虑如何O(1)O(1)O(1)转移。

令S(l,r)=∑i=1l(ri)∗2i−1S(l,r)=\sum _{i=1} ^l \binom {r} {i}*2^{i-1}S(l,r)=∑i=1l​(ir​)∗2i−1

于是

S(l+1,r)=S(l,r)+(rl+1)∗2lS(l+1,r)=S(l,r)+\binom {r} {l+1}*2^lS(l+1,r)=S(l,r)+(l+1r​)∗2l

S(l−1,r)=S(l,r)−(rl)∗2l−1S(l-1,r)=S(l,r)-\binom {r} {l}*2^{l-1}S(l−1,r)=S(l,r)−(lr​)∗2l−1

r的转移可以在杨辉三角上面看。

相当于把一行上下挪动。

推一推发现:

S(l,r+1)=3S(l,r)+(r0)∗20−(rl)∗2lS(l,r+1)=3S(l,r)+\binom {r} {0}*2^0-\binom {r} {l}*2^lS(l,r+1)=3S(l,r)+(0r​)∗20−(lr​)∗2l

S(l,r−1)=S(l,r)+(r−1l)∗2l−(r0)∗203S(l,r-1)=\frac {S(l,r)+\binom {r-1} {l}*2^l-\binom {r} {0}*2^0} {3}S(l,r−1)=3S(l,r)+(lr−1​)∗2l−(0r​)∗20​

发现这些东西预处理之后都是可以O(1)O(1)O(1)转移的。

于是就可以用莫队了。

代码

2018.10.23 NOIP训练 Leo的组合数问题(组合数学+莫队)的更多相关文章

  1. 2018.10.18 NOIP训练 01矩阵(组合数学)

    传送门 组合数学好题. 题目要求输出的结果成功把概率转化成了种类数. 本来可以枚举统计最小值为iii时的概率. 现在只需要统计最小值为iii时的方案数,每一行有不少于iii个1的方案数. 显然一行选i ...

  2. 2018.10.31 NOIP训练 锻造(方程式期望入门题)(期望dp)

    传送门 根据题目列出方程: fi=pi∗(fi−1+fi−2)+(1−pi)∗(fi+1+fi)f_i=p_i*(f_{i-1}+f_{i-2})+(1-p_i)*(f_{i+1}+f_i)fi​=p ...

  3. 2018.10.30 NOIP训练 【模板】树链剖分(换根树剖)

    传送门 纯粹是为了熟悉板子. 然后发现自己手生了足足写了差不多25min而且输出的时候因为没开long longWA了三次还不知所云 代码

  4. 2018.10.29 NOIP训练 数据结构(带修改莫队)

    传送门 带修莫队板题. 直接按照经典写法做就行了. 代码

  5. 2018.10.26 NOIP训练 数数树(换根dp)

    传送门 换根dpdpdp傻逼题好像不好码啊. 考虑直接把每一个二进制位拆开处理. 先dfsdfsdfs出每个点到1的异或距离. 然后分类讨论一波: 如果一个点如果当前二进制位到根节点异或距离为1,那么 ...

  6. 2018.10.23 NOIP模拟 “新”的家园(缩图+dijksta/spfa)

    传送门 考试70分骗分写挂了=30分=全场最低. 哎今天230垫底了. 这题出的挺好. 对于非关键点直接缩点. 每次把要查的insertinsertinsert进缩好的图里面跑spfa/dijkstr ...

  7. 2018.10.23 NOIP模拟 行星通道计划(bit)

    传送门 卡常题. 成功卡掉了作死写树套树的zxy. 然而对我的二维bit无能为力. 直接维护两棵bit. bit1[i][j]bit1[i][j]bit1[i][j]表示左端点小于等于iii,右端点小 ...

  8. 2018.10.23 NOIP模拟 战争(并查集)

    传送门 跟bzoj1015: [JSOI2008]星球大战是同一道题啊讲道理. 随便合并一下就能过了. 代码

  9. 2018.10.19 NOIP训练 变化的序列(线性dp)

    传送门 f[i][j]f[i][j]f[i][j]表示后iii个对答案贡献有jjj个a的方案数. 可以发现最后a,ba,ba,b的总个数一定是n∗(n−1)/2n*(n-1)/2n∗(n−1)/2 因 ...

随机推荐

  1. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

    这次为程序添加鼠标事件和键盘事件 当检测到鼠标事件和键盘事件的信息时,捕获其信息并将信息传送到需要信息的对象处理.为此,需要一个可以分派信息的对象,这个对象能够正确的把信息交到正确的对象. 实现思路: ...

  2. python之类的相关知识

    面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之 ...

  3. Eclipse中Ctrl+Shift+f快捷键无效的解决方式

    某天突然发现idea非常重要的快捷键ctrl+shift+f无效了,网上搜了很多都说是qq快捷键冲突,但是找了下qq快捷键却没有解决,现在给大家一个解决快捷键冲突的思路: 1.查看QQ快捷键--> ...

  4. sql查询分析器中显示行号

    -- 工具-> -- 选项-> -- 文本编辑器-> -- 所有语言-> -- 常规-> -- 显示-> -- 行号

  5. Hibernate 的update语句性能详解

    Hibernate 中如果直接使用 Session.update(Object o); 会把这个表中的所有字段更新一遍. 比如: view plaincopy to clipboardprint? p ...

  6. Linux 软件 安装到 /usr,/usr/local/ 还是 /opt 目录

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32./u ...

  7. C#语法基础

    泛型 1.default(T)可以返回T类型的空值,因为你不知道T是值类型还是引用类型,所以别擅自用null 2.泛型约束 很多时候我们不希望使用者太过自由 我们希望他们在使用我们设计的泛型类型时 不 ...

  8. 元素的定位tag_name,link_text,class_name

    tag_name 就是根据HTML的标签的名称来定位的: 案例:打开我要自学网,会有用户名和密码的输入框 例如:拿51zxw.net为例 from time import sleep #加载浏览器驱动 ...

  9. Spark之 Spark Streaming整合kafka(Java实现版本)

    pom依赖 <properties> <scala.version>2.11.8</scala.version> <hadoop.version>2.7 ...

  10. Codeforces Round #534 (Div. 2)

    B. Game with string 题意: 给出一个字符串s只包括小写字母.当轮到一个玩家的时候,他可以选择两个连续且相等的字母并且删除它.当一个玩家没得删的时候他就输了. 题解: 乍一看有点懵, ...