一类dp的网格模型
关于形如\(f_{i,j} = \sum_{t=1}^{|w|}\sum_{k=1}^{|v|}f_{i+w_t,j+v_k}\),其中\(w_t,v_k\)为一个定值的\(dp\)转移。
可以考虑放到坐标上,画出其转移路线,然后考虑组合意义。
Section1
求\(\sum_{i,j} \binom{a_i+b_i+a_j+b_j}{a_i+a_j}\),其中\(a,b\leq 4000,n\leq 10^6\)。
\(\binom{a_i+b_i+a_j+b_j}{a_i+a_j}\)等价于从\((-a_i,-b_i)\)走到\((a_j,b_j)\)的方案数。
建图后直接从左下往右上暴力\(dp\)出解。
Section2
定义一个\(n\)的排列合法,当且仅当:设\(n\)的位置为\(x\),有:
\[p_1<p_2<p_3....<p_{x-1}<p_x>p_{x+1}>....>p_{n-1}>p_n\]
有\(m\)个限制\((pos,v)\),形如\(p_{pos} = v\),
数据范围:\(m\leq n\leq 10^5\),求合法排列数。
考虑从小往大放,设\(f_{i,j}\)表示放完\(1,2...i\),左侧放了\(j\)个。
转移方程:\(f_{i,j} =f_{i-1,j-1} +f_{i-1,j}\)。
初始在\((0,0)\)每次放一个相当于移动\((+1,0)\)或\((+1,+1)\)。
限制相当于限制\(f_{v,j}\)必须通过特定方向到达该点。
而每一列最多就两个特殊点,直接对特殊点进行\(dp\),最后一列特殊处理一下即可。
Section3
[JLOI2015]骗我呢
考虑突变的位置,设\(f_{i,j}\)表示做到第\(i\)行,该行突变位置为\(j\)。
有:\(f_{i,j} = f_{i,j-1} +f_{i-1,j+1}\),其中\(f_{i,0} = f_{i-1,0}\)。
画出转移路线,把转移路线拽直可以发现,问题转化为:
从\((0,0)\)出发,到达\((n+m,n)\),且不经过\(y=x+2\)和\(y=x-(m+1)\)的方案数u。
容斥计算。
Section4
[NOI2018]冒泡排序
设\(f_{i,j}\)表示还剩下\(i\)个要放,前面的最大值为\(j\)的方案数。
显然当前点要么放比\(j\)大的数,要么放还没放的数中最下的那个。
由于我们是逆推所以:\(f_{i,j} = f_{i-1,j} + \sum_{k=j+1}^{n} f_{i-1,k} = \sum_{k=j}^n f_{i-1,k}\)。
考虑统计答案,枚举在哪个点\(i\)开始处于自由态。
由于不会放\(a_i\),而\(a_i\leq max_{pre}\),所以一定只能放比\(max_{pre}\)大的数。
此时的方案数为\(\sum_{k=max_{pre}+1}^n f_{n-i,k} = f_{n-i+1,max_{pre}+1}\)。
唯一的问题变为如何快速处理\(f\)。
显然合法的\(f_{i,j}\)需要满足\(j\ge n-i\),画出转移路线图,问题转化为:
从\((0,n)\)出发,不经过\(y=-x+(n-1)\)到达\((i,j)\)的方案数。
这是经典问题,答案为 \(\binom{i+n-j}{i} - \binom{i+n-j}{i+1}\)。
一类dp的网格模型的更多相关文章
- pcl曲面网格模型的三种显示方式
pcl网格模型有三种可选的显示模式,分别是面片模式(surface)显示,线框图模式(wireframe)显示,点模式(point)显示.默认为面片模式进行显示.设置函数分别为: void pcl:: ...
- 使用k-means对3D网格模型进行分割
使用k-means对3D网格模型进行分割 由于一些原因,最近在做网格分割的相关工作.网格分割的方法有很多,如Easy mesh cutting.K-means.谱分割.基于SDF的分割等.根据对分割要 ...
- VTK计算网格模型上的最短路径
Dijkstra algorithm to compute the graph geodesic.Takes as input a polygonal mesh and performs a sing ...
- VTK拾取网格模型上的可见点
消隐与Z-Buffer 使用缓冲器记录物体表面在屏幕上投影所覆盖范围内的全部像素的深度值,依次访问屏幕范围内物体表面所覆盖的每一像素,用深度小(深度用z值表示,z值小表示离视点近)的像素点颜色替代深度 ...
- [ural1057][Amount of Degrees] (数位dp+进制模型)
Discription Create a code to determine the amount of integers, lying in the set [X; Y] and being a s ...
- tyvj 1062 合并傻子 区间dp,典型模型石子归并
P1062 合并傻子 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 从前有一堆傻子,钟某人要合并他们~但是,合并傻子是要掉RP的...... 描述 在一个园 ...
- 区间dp模型之括号匹配打印路径 poj(1141)
题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...
- UE4编程之C++创建一个FPS工程(二)角色网格、动画、HUD、子弹类
转自:http://blog.csdn.net/u011707076/article/details/44243103 紧接上回,本篇文章将和大家一同整理总结UE4关于角色网格.动画.子弹类和HUD的 ...
- (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(2)
本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选的第二部分,其余章节将陆续放出.上一 ...
随机推荐
- 结对测试 vs 随机测试
在接口测试过程中,最关键的是对参数的各种情况进行测试. 随机测试是指随机选择一些参数值来测. 结对测试是指parewise算法生成较高“性价比”的组合情况来测. 随机测试存在的问题 随机,这两个字本身 ...
- CentOS 下 SonarQube 6.7 的下载、配置、问题排查
CentOS 下 SonarQube 6.7 的下载.配置.问题排查 系统: CentOS 7 x86_64 SonarQube 版本: 6.7.3 Java 版本: 1.8.0_171 MySQL ...
- keyup在移动端失效解决方法
keyup在移动端失效解决方法: $("#OBJ").on("input propertychange", function(){ }); 采用 input 与 ...
- Docker配置
Docker基本配置 1.安装 在ubuntu下面执行 wget -qO- https://get.docker.com/ | sh 命令安装Docker. 如果命令的方式无法安装,也可以使用apt- ...
- Docker 自定义网络
1.创建自定义网络 docker network create -d bridge --subnet 172.25.0.0/16 network_name 2.redis docker 添加到网络 d ...
- Linux上安装设置mysql 5.7.24
一,准备 1,先查看Linux是32位还是64位 getconf LONG_BIT 如果返回的是32,那么就是32位 如果返回的是64,那么就是64位 2,如果服务器不能联网,就先去官网下载好压缩包, ...
- iOS自学-UILabel常见属性
#import "ViewController.h" #import <CoreText/CoreText.h> @interface ViewController ( ...
- Answer the questions(回答自己的问题)
第一章: 问题:我们现在学了这个专业,如果想全面去了解,应该还要学习哪些课程? 回答:其实软件工程只是一个比较大的范畴,以后如果要出去工作,我们还要细分,比如说开发安卓,开发游戏,web架构方面等很多 ...
- python learning2.py
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] # 取前3个元素的笨方法 r = [] n = 3 for i in range(n): r.appe ...
- mongo导入导出命令
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...