[CEOI2016] kangaroo(排列dp)

problem

luogu-P5999

solution

每个点只能跳一次,显然跳出来形成的顺序是一个排列。不难联想到最近刷的排列 dpdpdp

然后,我觉得难点在于怎么转化这个跳的规则,因为现在并不确定能否按排列 dpdpdp 一样分段做。

跳的顺序形成的排列必须满足以下两个条件之一:

  • 排列中第 iii 个元素必须小于两边的元素。
  • 排列中第 iii 个元素必须大于两边的元素。

排列的起终点(墙)为 s,ts,ts,t

转化后发现,这是可以排列 dpdpdp 的。

我们从小到大考虑 iii。设 f(i,j):f(i,j):f(i,j):iii 个数将排列分成了 jjj 段的合法方案数。

  • iii 不是墙。

    • 合并两段,jjj 段有 j−1j-1j1 个空。f(i,j)←f(i−1,j+1)∗jf(i,j)\leftarrow f(i-1,j+1)*jf(i,j)f(i1,j+1)j

    • 新插一段,可以插在任何位置,但若 sss 已过则不能插首,若 ttt 已过则不能插尾。

      f(i,j)←f(i−1,j−1)∗(j−(i>s)−(i>t))f(i,j)\leftarrow f(i-1,j-1)*\big(j-(i>s)-(i>t)\big)f(i,j)f(i1,j1)(j(i>s)(i>t))

  • iii 是墙。只能放在首尾。

    • 单独成段。f(i,j)←f(i−1,j−1)f(i,j)\leftarrow f(i-1,j-1)f(i,j)f(i1,j1)
    • 与相邻段合并,相当于延伸。f(i,j)←f(i−1,j)f(i,j)\leftarrow f(i-1,j)f(i,j)f(i1,j)

时间复杂度 O(n2)O(n^2)O(n2)

code

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mod 1000000007
#define maxn 2005
int f[maxn][maxn];
int n, s, t;signed main() {scanf( "%lld %lld %lld", &n, &s, &t );f[1][1] = 1;for( int i = 2;i <= n;i ++ )if( i ^ s and i ^ t )for( int j = 1;j <= n;j ++ )f[i][j] = (f[i - 1][j - 1] * (j - (i > s) - (i > t) ) + f[i - 1][j + 1] * j) % mod;elsefor( int j = 1;j <= n;j ++ )f[i][j] = (f[i - 1][j - 1] + f[i - 1][j]) % mod;		printf( "%lld\n", f[n][1] );return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316396.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

D - Counting Stars HDU - 7059

D - Counting Stars HDU - 7059 题解: 长度为n的序列a&#xff0c;有三个操作&#xff1a; 对某个区间进行询问对于某个区间内的每个数ai&#xff0c;减去ai&(-ai)对于某个区间内的每个数ai&#xff0c;加上2k2^k2k,k满足2k<ai<2k12^k < a_{i} <2^{k1}2k<…

为什么我们要做单元测试?(二)

引子当我第一篇博客发布&#xff0c;并被张善友老师的公众号转载之后&#xff0c;在公众号文章和博客园的留言中&#xff0c;许多开发者纷纷表示&#xff0c;单元测试作为企业行为&#xff0c;与实施的技术栈不同&#xff0c;不是开发者个人行为&#xff0c;实施单元测试花费的…

[CF1368E] Ski Accidents(神仙结论构造)

problem CF1368E Ski Accidents solution 这个 47n\frac 47n74​n 的限制&#xff0c;提示这存在一个特定构造方案&#xff0c;由 777 我们联想到 124712471247。 暗示把顶点分为三类 A,B,CA,B,CA,B,C&#xff0c;满足 ∣C∣≤2∣B∣≤4∣A∣|C|\le 2|B|\le 4|A|∣C∣≤2∣…

P4159 [SCOI2009] 迷路

P4159 [SCOI2009] 迷路 题意&#xff1a; 该有向图有 n 个节点&#xff0c;节点从 1 至 nn 编号&#xff0c;windy 从节点 1 出发&#xff0c;他必须恰好在 t 时刻到达节点 n。 现在给出该有向图(带边权)&#xff0c;你能告诉 windy 总共有多少种不同的路径吗&#xff1f; …

程序员修神之路--提高网站的吞吐量

点击上方蓝色字体&#xff0c;关注我们菜菜哥&#xff0c;有个事你还得帮我呀呦西&#xff0c;YY妹子&#xff0c;最近天这么热了&#xff0c;你怎么还穿这么多&#xff1f;苦笑一下.....前几天写了几个接口&#xff0c;领导让提高一下接口吞吐量这是你技术提高的大好机会呀可吞…

P2151 [SDOI2009]HH去散步

P2151 [SDOI2009]HH去散步 题意&#xff1a; HH有个一成不变的习惯&#xff0c;喜欢饭后百步走。所谓百步走&#xff0c;就是散步&#xff0c;就是在一定的时间 内&#xff0c;走过一定的距离。 但是同时HH又是个喜欢变化的人&#xff0c;所以他不会立刻沿着刚刚走来的路走回…

Function Query(树状数组)

problem 给定一个长度为 nnn 的排列 aaa。有 qqq 个询问&#xff0c;每次询问一个区间 [l,r][l,r][l,r]。求这个区间的 kkk 值。 其中 k∑ilr∑ji1rf(ai,aj),f(x,y)k\sum_{il}^r\sum_{ji1}^rf(a_i,a_j),f(x,y)k∑ilr​∑ji1r​f(ai​,aj​),f(x,y) 为一个递归函数&#xff0c…

一份.NET 容器化的调查小结

小编在上个月在微信公众号“dotnet跨平台” 做了一个针对.NET 容器化的调查&#xff1a;.NET Core 容器化调查&#xff0c;参与人数702人&#xff0c;由于软件定义基础设施方兴未艾&#xff0c;编排和自动化领域kubernetes占据了主体地位&#xff0c;在平时的工作中和身边的同学…

P2148 [SDOI2009]ED

P2148 [SDOI2009]E&D 题意&#xff1a; 有2n堆石子&#xff0c;第2k-1堆和第2k堆是一组&#xff0c;现在两个人轮流操作&#xff0c;每次操作任选一组石子&#xff0c;然后将改组中的一堆石子移走&#xff0c;将另一堆式子分割成两堆&#xff0c;形成新的两堆石子&#x…

扒一扒.NET Core的环境配置提供程序

前言很久之前&#xff0c;在玩Docker的时候顺便扒了扒&#xff0c;最近&#xff0c;终于下定决心花了些时间整理并成文&#xff0c;希望能够给大家一些帮助。目录 .NET Core中的配置ASP.NET Core中的配置扒一扒环境变量提供程序为什么是“__”&#xff1f;“__”如何变成了“&…

[HNOI2016] 序列(线段树 + 莫队 + 倍增)

problem luogu-P3246 心路历程卡常历程问题存疑 一直在想莫队的做法。发现左右指针的移动对应一段左/右端点固定的子序列&#xff0c;然后可以一个数代表一段相同的贡献。 就开始求 lsti,nxtilst_i,nxt_ilsti​,nxti​ 了。 仔细想想需要找到 lstlsti<l≤lstilst_{lst_…

cf1523C. Compression and Expansion

cf1523C. Compression and Expansion 题意&#xff1a; 让你模拟出一个书的目录&#xff0c;对于每一行给你一个数字&#xff0c;表示这个目录的最后一个数&#xff0c; 题解&#xff1a; 我们用vector存当前的目录情况&#xff0c;读到下一行&#xff0c;在尽量少删上一行…

《从零开始学ASP.NET CORE MVC》:ASP.NET Core 中的 Main方法(5)

本文出自《从零开始学ASP.NET CORE MVC》推荐文章&#xff1a;ASP.NET Core Web 项目文件ASP.NET Core 中的 Main方法一个开始专心写字的人在ASP.NET Core项目中&#xff0c;我们有一个名为Program.cs的文件。在这个文件中&#xff0c;我们有一个public static void Main&#…

[HNOI2016] 大数(莫队)

problem luogu-P3245 solution 将这个 nnn 位数从右往左的记录取模 ppp 的结果&#xff0c;即 f(i)(f(i−1)∗10si)%pf(i)(f(i-1)*10s_i)\% pf(i)(f(i−1)∗10si​)%p。 显然一个子串是 ppp 的倍数必然满足&#xff1a;f(r)−f(l−1)10r−l1≡0(modp)\frac{f(r)-f(l-1)}{10…

2021牛客暑期多校训练营9

2021牛客暑期多校训练营9 题号题目知识点AA Math ChallengeBBest SubgraphCCellsDDivide-and-conquer on TreeEEyjafjallaFFinancial Order ExecutionGGlass BallsHHappy NumberIIncentive ModelJJam

.NET中的状态机库Stateless

标题&#xff1a;.NET中的状态机库Stateless 作者&#xff1a;Lamond Lu 地址&#xff1a;https://www.cnblogs.com/lwqlun/p/10674018.html[1]介绍什么是状态机和状态模式状态机是一种用来进行对象建模的工具&#xff0c;它是一个有向图形&#xff0c;由一组节点和一组相应的转…

[APIO2016] 划艇(dp + 组合数 + 前缀和优化)

problem luogu-P3643 solution 有个显然的暴力 dpdpdp。设 dp(i,j):dp(i,j):dp(i,j): 到了第 iii 个学校&#xff0c;其参加且派出 jjj 个划艇的方案数。 枚举上一个参加的学校以及派出的划艇&#xff0c;则有转移&#xff1a;dp(i,j)∑k<i,j<jdp(k,j′)dp(i,j)\sum_…

.net core webapi 前后端开发分离后的配置和部署

背景&#xff1a;现在越来越多的企业都采用了在开发上前后端分离&#xff0c;前后端开发上的分离有很多种&#xff0c;那么今天&#xff0c;我来分享一下项目中得的前后端分离。B/S Saas 项目&#xff1a;&#xff08;这个项目可以理解成个人中心&#xff0c;当然不止这么点功…

Happy Number

Happy Number 题意 &#xff1a; 开心数是由仅由2&#xff0c;3&#xff0c;6组成的&#xff0c;问第n个开心数是哪个&#xff1f; 1<n<1e9 题解&#xff1a; 正解应该是&#xff1a; 首先确定k大数有几位&#xff1a; 然后就知道k大数是x位下的第k’大的 把2看成0&a…

[HNOI2015] 接水果(倍增 + 整体二分)

problem luogu-P3242 solution 本题的难点在于如何判定路径之间是否覆盖。 这里我们尝试树常见的 dfs\text{dfs}dfs 序。 考虑 x−yx-yx−y 路径如果要覆盖 u−vu-vu−v 路径需要满足怎样的条件。 以下均假设 dfs(u)<dfs(v),dfs(x)<dfs(y)dfs(u)<dfs(v),dfs(x)&…