关于形如\(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的网格模型的更多相关文章

  1. pcl曲面网格模型的三种显示方式

    pcl网格模型有三种可选的显示模式,分别是面片模式(surface)显示,线框图模式(wireframe)显示,点模式(point)显示.默认为面片模式进行显示.设置函数分别为: void pcl:: ...

  2. 使用k-means对3D网格模型进行分割

    使用k-means对3D网格模型进行分割 由于一些原因,最近在做网格分割的相关工作.网格分割的方法有很多,如Easy mesh cutting.K-means.谱分割.基于SDF的分割等.根据对分割要 ...

  3. VTK计算网格模型上的最短路径

    Dijkstra algorithm to compute the graph geodesic.Takes as input a polygonal mesh and performs a sing ...

  4. VTK拾取网格模型上的可见点

    消隐与Z-Buffer 使用缓冲器记录物体表面在屏幕上投影所覆盖范围内的全部像素的深度值,依次访问屏幕范围内物体表面所覆盖的每一像素,用深度小(深度用z值表示,z值小表示离视点近)的像素点颜色替代深度 ...

  5. [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 ...

  6. tyvj 1062 合并傻子 区间dp,典型模型石子归并

    P1062 合并傻子 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 从前有一堆傻子,钟某人要合并他们~但是,合并傻子是要掉RP的...... 描述 在一个园 ...

  7. 区间dp模型之括号匹配打印路径 poj(1141)

    题目链接:Brackets Sequence 题目描写叙述:给出一串由'(')'' [ ' ' ] '组成的串,让你输出加入最少括号之后使得括号匹配的串. 分析:是区间dp的经典模型括号匹配.解说:h ...

  8. UE4编程之C++创建一个FPS工程(二)角色网格、动画、HUD、子弹类

    转自:http://blog.csdn.net/u011707076/article/details/44243103 紧接上回,本篇文章将和大家一同整理总结UE4关于角色网格.动画.子弹类和HUD的 ...

  9. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选的第二部分,其余章节将陆续放出.上一 ...

随机推荐

  1. gith命令行使用之上传和删除

    git这个工具的功能很强大,而使用git bash的命令行来进行git工具的操作尤为重要.而且我个人认为,用命令行进行git工具的操作比起图形界面的git工具,要更容易理解.图形界面的那个叫Torto ...

  2. 关于摄像头PCB图设计经验谈

    摄像头PCB设计,因为客观原因等.容易引起干扰这是个涉及面大的问题.我们抛开其它因素,仅仅就PCB设计环节来说,分享以下几点心得,供参考交流: 1.合理布置电源滤波/退耦电容:一般在原理图中仅画出若干 ...

  3. Kubernetes网络方案 Flannel和calico

    摘抄某博客 1.   Flannel Flannel是为kubernetes设计的一个非常简洁的多节点三层网络方案,解决不同host上的容器互联问题,原理是为每个host分配一个subnet,容器从此 ...

  4. 【CentOS 7】nginx配置web服务器

    1,安装过程 [root@VM_1_14_centos ~]# cd /data/ [root@VM_1_14_centos data]# wget http://nginx.org/download ...

  5. 【Ansible】ansible 任务失败控制

    任务失败控制 Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. 有时一条命令会返回 0 但那不是报错.有时命令不会总是报告它 ‘改变’ 了远程系统 ...

  6. 纯命令行界面下安装并运行官方Android emulator

    纯命令行界面指没有安装Android studio. 下载sdk-tools 可以根据实际需要下载,不需要FQ(2018-04-07) 下载后只有一个tools目录. 平台 SDK 工具包 大小 SH ...

  7. NIO_通道之间传输数据

    通道之间传输数据 transferFrom() transferTo() @Test public void test3() throws IOException { FileChannel inCh ...

  8. textarea拖拽控制

    一.用处 textarea默认时允许用户以拖拽形式来改变textarea大小,但textarea的大小变化会撑大其父节点,有时会破坏整体布局,有时我们并不希望textarea随意拖拽. forklif ...

  9. R语言安装R package的2种方法

    http://www.cnblogs.com/emanlee/archive/2012/12/05/2803606.html

  10. Scrum Meeting 11.03

    成员 今日任务 明日计划 用时 徐越 休息     赵庶宏 编写功能说明书,servlet代码移植 servlet代码移植 3h 薄霖 阅读上一届相关代码,思考改进方法 学习安卓界面设计数据库管理 4 ...