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

jsp项目个人网站开发公司网站建设全包

jsp项目个人网站开发,公司网站建设全包,虚拟主机管理系统源码,凡科网站做的作品如何发布正难则反,考虑长度为 i i i 的排列得到正确的结果的方案数。 设 d p i dp_i dpi​ 表示长度为 i i i 的排列直到循环完也没有提前 return 的方案数。考虑 i i i 所放置的位置,由于不会提前 return,也就说明该数字所在的位置为 [ i − k…

正难则反,考虑长度为 i i i 的排列得到正确的结果的方案数。

d p i dp_i dpi 表示长度为 i i i 的排列直到循环完也没有提前 return 的方案数。考虑 i i i 所放置的位置,由于不会提前 return,也就说明该数字所在的位置为 [ i − k + 1 , i ] [i - k + 1,i] [ik+1,i] 的范围中。因此可以枚举 i i i 的位置为 j j j,则相当于将 [ 1 , i ] [1,i] [1,i] 的区间分为 [ 1 , j − 1 ] , [ j ] , [ j + 1 , i ] [1,j - 1],[j],[j + 1,i] [1,j1],[j],[j+1,i]

第一段为 i − 1 i - 1 i1 个数字中选择 j − 1 j - 1 j1 个,也就是 ( i − 1 j − 1 ) \binom{i-1}{j-1} (j1i1),然后合法的方案数为 d p j − 1 dp_{j - 1} dpj1;第二段放最大值 i i i,第三段还剩下 i − j i - j ij 个数字,随意放置,也就是 ( i − j ) ! (i - j)! (ij)!。虽然说 d p i dp_i dpi 的状态考虑的是排列,但是显然我们只需要考虑数字之间的相对大小,因此第一段的方案数是合理的。可以得到以下转移:

d p i = ∑ j = i − k + 1 i ( i − 1 j − 1 ) × d p j − 1 × ( i − j ) ! dp_i=\sum_{j=i-k+1}^i \binom{i-1}{j-1}\times dp_{j-1}\times (i-j)! dpi=j=ik+1i(j1i1)×dpj1×(ij)!

尝试进行化简,可以得到:

d p i = ∑ j = i − k + 1 i ( i − 1 ) ! ( j − 1 ) ! × ( ( i − 1 ) − ( j − 1 ) ) ! × d p j − 1 × ( i − j ) ! = ∑ j = i − k + 1 i ( i − 1 ) ! ( j − 1 ) ! × d p j − 1 = ( i − 1 ) ! × ∑ j = i − k i − 1 d p j j ! dp_i = \sum_{j=i-k+1}^i \frac{(i - 1)!}{(j - 1)! \times ((i - 1) - (j - 1))!}\times dp_{j-1}\times (i-j)! \\ = \sum_{j=i-k+1}^i\frac{(i - 1)!}{(j - 1)!} \times dp_{j - 1} \\ = (i - 1)! \times \sum_{j=i-k}^{i - 1} \frac{dp_j}{j!} dpi=j=ik+1i(j1)!×((i1)(j1))!(i1)!×dpj1×(ij)!=j=ik+1i(j1)!(i1)!×dpj1=(i1)!×j=iki1j!dpj

维护一段长度为 k k k d p i i ! \frac{dp_i}{i!} i!dpi 的和即可 O ( n ) O(n) O(n) 求出 d p i dp_i dpi

最后再考虑答案。若最后求得的答案是正确的,我们只需要枚举 n n n 所在的位置即可。因此总共合法的方案数为:

a n s = ∑ i = 1 n ( n − 1 i − 1 ) × d p i − 1 × ( n − i ) ! ans = \sum_{i = 1}^n \binom {n - 1}{i - 1} \times dp_{i - 1} \times (n - i)! ans=i=1n(i1n1)×dpi1×(ni)!

最后的答案就是 n ! − a n s n!-ans n!ans。代码如下:

#include <bits/stdc++.h>
#define init(x) memset (x,0,sizeof (x))
#define ll long long
#define ull unsigned long long
#define INF 0x3f3f3f3f
#define pii pair <int,int>
using namespace std;
const int MAX = 1e6 + 5;
const int MOD = 1e9 + 7;
inline int read ();
int n,k;ll tot,sum,dp[MAX],f[MAX],inv[MAX];
ll qpow (ll x,ll y)
{ll res = 1;while (y){if (y & 1) res = res * x % MOD;x = x * x % MOD;y >>= 1;}return res;
}
int main ()
{n = read ();k = read ();inv[0] = f[0] = 1;for (int i = 1;i <= n;++i) f[i] = f[i - 1] * i % MOD;inv[n] = qpow (f[n],MOD - 2);for (int i = n - 1;i;--i) inv[i] = inv[i + 1] * (i + 1) % MOD;dp[0] = sum = 1;for (int i = 1;i <= n;++i){   dp[i] = f[i - 1] * sum % MOD;sum = (sum + dp[i] * inv[i] % MOD) % MOD;if (i >= k) sum = (sum - dp[i - k] * inv[i - k] % MOD + MOD) % MOD;}for (int i = 1;i <= n;++i) tot = (tot + dp[i - 1] * f[n - 1] % MOD * inv[i - 1] % MOD) % MOD;printf ("%lld\n",(f[n] - tot + MOD) % MOD);return 0;
}
inline int read ()
{int s = 0;int f = 1;char ch = getchar ();while ((ch < '0' || ch > '9') && ch != EOF){if (ch == '-') f = -1;ch = getchar ();}while (ch >= '0' && ch <= '9'){s = s * 10 + ch - '0';ch = getchar ();}return s * f;
}
http://www.dtcms.com/wzjs/82527.html

相关文章:

  • 帮别人做网站备案互联网的推广
  • 哪个网站做兼职有保障成都seo优化排名推广
  • 做一名网站编辑要具备什么资格宁德市人社局
  • 盐城网站开发市场腾讯与中国联通
  • 沧州网站建设公司翼马汽车网络营销策划方案
  • 专业商城网站建设公司如何提交百度收录
  • 南京企业自助建站四川seo选哪家
  • 网站下拉广告专门制作小程序的公司
  • 长春市建设工程信息网站天津seo网站推广
  • 外贸型网站该如何推广链接制作
  • vps搭建vpn无法访问国内网站网络推广和网站推广
  • 常德网站建设设计百度搜索引擎的使用方法
  • 嘉兴云推广网站站内优化主要从哪些方面进行
  • 关键词是在网站后台做的吗深圳市seo网络推广哪家好
  • 南京h5网站建设可以看任何网站的浏览器
  • 网站建设 响应式 北京广东疫情最新消息今天又封了
  • 浙江华企做的网站怎么样sns营销
  • 个人备案网站建设方案书目录搜索引擎有哪些
  • 成人用品批发网站一件代发滕州百度推广
  • 做视频分享网站的参考书企业营销网站建设系统
  • 网站建设 开办费百度平台客服电话是多少
  • 地方门户网站资讯该怎么做品牌宣传推广策划方案
  • 网站开发建设技术特点浏览器打开
  • 连山区网站建设厦门人才网唯一官网登录
  • 如何将自己做的网站推广出去app优化
  • 网站的域名可以更改吗b站视频推广网站动漫
  • 电商网站的需求文档企业查询官网入口
  • asp动态网站开发后期制作郑州网站建设专业乐云seo
  • 做网站用那个浏览器免费的推文制作网站
  • 网站如何做链接四川旅游seo整站优化