当前位置: 首页 > wzjs >正文

做网站分析网址域名ip解析

做网站分析,网址域名ip解析,wordpress静态资源加载不,做网站等保收费题意 给定 n n n, m m m,求满足以下限制的长度为 n n n 的序列数目: 每个元素在 [ 1 , m ] [1,m] [1,m] 之间;一次操作定义为删除一个长度至少为 2 2 2 且区间两端相等的区间,该序列需要在若干次操作内被删空。 …

题意

给定 n n n m m m,求满足以下限制的长度为 n n n 的序列数目:

  1. 每个元素在 [ 1 , m ] [1,m] [1,m] 之间;
  2. 一次操作定义为删除一个长度至少为 2 2 2 且区间两端相等的区间,该序列需要在若干次操作内被删空。

答案对 1 0 9 + 7 10^9+7 109+7 取模。

1 ≤ n ≤ 3000 1 \le n \le 3000 1n3000 1 ≤ m ≤ 1 0 9 1 \le m \le 10^9 1m109

思路

容易发现一个性质:对于一个序列 S S S,在后面加入 x x x,那么 S S S 中第一次出现 x x x 的位置直到末尾添加的 x x x 都会被删去。

我们考虑对 1 ∼ n 1\sim n 1n 每一位填数字,我们发现填的数字是什么其实并不重要,因为我们要求的是序列数目而不是具体的序列种类。我们需要知道的是有多少种 x x x 可以被添加到末尾

根据上面的性质,我们可以知道一个可以被全部删除的序列长什么样子(下文称为合法的):可以是首尾数字相同的序列 S 0 S_0 S0,也可以是很多个不同的 S 0 S_0 S0 拼接而成的 S S S,它们都是合法的。

那我们考虑维护合法的和不合法的状态(不合法状态可以转移到合法的)。设 f i , j , o p f_{i,j,op} fi,j,op 表示前 i i i 个数,出现了“有效的”数 j j j 种,当前序列状态为 o p op op 的方案数:

  • o p = 0 op=0 op=0 表示该序列不合法,需要添加一个 x x x 使之合法;
  • o p = 1 op=1 op=1 表示该序列合法。

有效的是什么意思?是指后面可以添加的 x x x 是这 j j j 种数的一个,使之变成合法的序列(在这里要搞清楚这个定义,后面有一个状态转移和这个强相关才能理解)。

初始时当然是 f 1 , 1 , 0 = m f_{1,1,0}=m f1,1,0=m,可以填 m m m 种数中的一个。

考虑转移:枚举当前数列长度 i i i 和数的种类数 j ≤ min ⁡ ( i , m ) j\le\min(i,m) jmin(i,m),此处考虑向后转移。

对于 f i + 1 , j , 1 f_{i+1,j,1} fi+1,j,1,可以从前 i i i 个不合法的转移过来,填 j j j 种数中的一个;合法亦然。有效数的量不变:
f i + 1 , j , 1 ← f i , j , 1 × j f i + 1 , j , 1 ← f i , j , 0 × j \begin{matrix} f_{i+1,j,1}\leftarrow f_{i,j,1}\times j\\ f_{i+1,j,1}\leftarrow f_{i,j,0}\times j \end{matrix} fi+1,j,1fi,j,1×jfi+1,j,1fi,j,0×j

对于前 i + 1 i+1 i+1 个不合法的,可以是前 i i i 个合法的,添加一个 j j j 种数之外的数 m − j m-j mj 种,那么这个前 i + 1 i+1 i+1 个不合法的序列的有效数有 j + 1 j+1 j+1 个了:
f i + 1 , j + 1 , 0 ← f i , j , 1 × ( m − j ) f_{i+1,j+1,0}\leftarrow f_{i,j,1}\times(m-j) fi+1,j+1,0fi,j,1×(mj)

也可以是前 i i i 个不合法的转移过去,为了使这个长度为 i + 1 i+1 i+1 的序列不合法,我们也要添加 j j j 种数之外的数 x ′ x' x,可以有 m − j m-j mj 种。但是现在这个这个长度为 i + 1 i+1 i+1 的不合法序列的有效颜色有多少呢?

我们发现这个 x ′ x' x 不属于前 i i i 个的 j j j 种的任意一个,如果在这个这个长度为 i + 1 i+1 i+1 的不合法序列后面再添加一个 x ′ x' x,是不能将其变成合法的
在这里插入图片描述
因此有效数的种数并非 j + 1 j+1 j+1,而是 j j j

最后答案就是 ∑ i = 1 m f n , i , 1 \displaystyle\sum_{i=1}^{m}f_{n,i,1} i=1mfn,i,1

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=3002,mod=1e9+7;
ll n,m;
ll f[N][N][2];
//前i个,出现了j种数,后面可以加j种颜色中的一个使之合法
//当前序列,0不合法1合法,的方案数 
//后面加的什么颜色不重要 
int main()
{scanf("%lld%lld",&n,&m);f[1][1][0]=m;for(ll i=1;i<n;i++){for(int j=1;j<=min(i,m);j++){f[i+1][j][1]=(f[i+1][j][1]+f[i][j][0]*j%mod)%mod;//后面加已经有的j种颜色 f[i+1][j][1]=(f[i+1][j][1]+f[i][j][1]*j%mod)%mod;//后面加已经有的j种颜色 f[i+1][j+1][0]=(f[i+1][j+1][0]+f[i][j][1]*(m-j)%mod)%mod;//后面加还没有的m-j种颜色 f[i+1][j][0]=(f[i+1][j][0]+f[i][j][0]*(m-j)%mod)%mod;//后面加还没有的m-j种颜色,不合法//但是在后面直接加这个新加的颜色,整段还是不合法//因此在后面只能加原来的j种颜色 }}ll ans=0;for(int i=1;i<=m;i++)ans=(ans+f[n][i][1])%mod;printf("%lld",ans);return 0;
}
http://www.dtcms.com/wzjs/305598.html

相关文章:

  • 禅城做网站百度推广官网首页
  • 上海建站宝盒搜索引擎优化文献
  • 沈阳seo顾问公司长沙靠谱seo优化费用
  • 淘宝关键词排名查询工具免费seo智能优化
  • 凡科网可以免费做网站吗百度爱采购推广怎么收费
  • 大众点评网怎么做团购网站淘宝关键词查询工具哪个好
  • 建设日语网站seo技术公司
  • 桂林视频网站制作深圳外贸网络推广渠道
  • 网站功能性介绍百度竞价软件哪个好
  • 重庆金融网站建设个人网页在线制作
  • 苏州沧浪区做网站的seo顾问服务咨询
  • 淘宝客单页网站程序域名查询阿里云
  • 关于认真做好门户为网站建设seo是干啥的
  • 建设手机网站费用搜索引擎优化的基本原理
  • 网站设计师认证培训宁波优化网站哪家好
  • 美国建设新闻网站网站联盟广告
  • 公司起名字大全免费4个字广告优化师发展前景
  • wordpress文字居中短视频seo优化
  • 怎么做网站的域名解析百度竞价广告收费标准
  • 温州 网站建设公司上海网站设计
  • 汕头网站建设网络营销和推广的方法
  • 青羊区建设厅网站嘉兴seo外包公司费用
  • 网站域名区别视频推广渠道有哪些
  • 微网站开发技巧在线生成个人网站源码
  • 正常做网站多少钱抖音视频排名优化
  • 做阿里巴巴网站需要多少钱开发制作app软件
  • 网站开发的研究思路确认已有81人感染
  • 网站建设报价费用是多少百度浏览器网址链接
  • 承德网站网站建设win7系统优化工具
  • 机票网站建设方式目前最新的营销方式有哪些