hdu 6377 : 度度熊看球赛
题解:
- 将原问题转换为 对于全部 (2n)! 种情况,每种情况对ans的贡献为 D^k,其中k表示该情况下有k对情侣座位相邻。
- 预处理好共有 i (1<=i<=N)对情侣时,出现 j (0<=j<=i) 对情侣坐在一起时情况数,用dp[i][j]记录
- 初始条件为dp[1][1]=2
- 当总情侣对数由 i 向 i+1 转移时,j 有四种变化的可能
- j-1 → j : 新来的情侣“一起”插入到不打断先前情侣的“相邻”座位处 dp[i+1][j] += 2 * dp[i][j-1] * (2*i+1-(j-1))
- j → j : 新来的情侣“一起”插入到打断先前某对情侣的“相邻”座位处 dp[i+1][j] += 2 * dp[i][j] * j ,或者“分开”插入到不打断先前情侣的“不相邻”座位处 dp[i+1][j] += 2 * dp[i][j] * C(2*i+1-j,2)
- j+1 → j : 新来的情侣,一个插入到打断先前某对情侣的座位处,另一个插入到不打断先前情侣的座位处 dp[i+1][j] += 2 * dp[i][j+1] * (j+1)*(2*i+1-(j+1)
- j+2 → j : 新来的情侣“分开”插入到打断先前某两对情侣的“相邻”座位处 dp[i+1][j] += 2 * dp[i][j+2] * C(j+2,2)
- 以上为预处理过程
- 最后 ans += d^i * dp[n][i] ,i=0→n
代码如下
#include<bits/stdc++.h>
using namespace std;
typedef long long LL; const LL mod=; LL qpow(LL x,LL n) //求x^n%mod
{
LL ret=;
for(; n; n>>=)
{
if(n&) ret=ret*x%mod;
x=x*x%mod;
}
return ret;
} int C(LL a,LL b=)
{
return a*(a-)%mod*qpow(b,mod-)%mod;
} const int N=1e3+;
LL dp[N][N]; void init()
{
dp[][]=;
for(int i=;i<N;i++)
{
dp[i+][]=*dp[i][]%mod*C(*i+,)%mod+
*dp[i][]%mod**i%mod+
*dp[i][]%mod;
dp[i+][]%=mod;
for(int j=;j<=i+;j++)
{
dp[i+][j]=*dp[i][j-]%mod*(*i+-(j-))%mod+
*dp[i][j]%mod*(j+C(*i+-j,))%mod+
*dp[i][j+]%mod*((j+)*(*i+-(j+))%mod)%mod+
*dp[i][j+]%mod*C(j+,)%mod;
dp[i+][j]%=mod;
}
}
} int main()
{
init();
LL n,d;
while(~scanf("%lld%lld",&n,&d))
{
LL ret=;
if(n==)
{
printf("%lld\n",*d%mod);
continue;
}
for(int i=;i<=n;i++) ret=(ret+dp[n][i]*qpow(d,i)%mod)%mod;
printf("%lld\n",ret);
}
}
hdu 6377 : 度度熊看球赛的更多相关文章
- HDU 6377 度度熊看球赛 (计数DP)
度度熊看球赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- hdu 6377 度度熊看球赛 (dp)
大意: $n$对情侣, $2n$个座位, 对于一个方案, 若$k$对情侣相邻, 则喧闹值增加$D^k$, 求喧闹值期望. 跟CF 840C一样, 设$dp[i][j]$为$i$个人, 有$j$对情侣相 ...
- hdu 6118 度度熊的交易计划
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))
度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 【判连通】HDU 6113 度度熊的01世界
http://acm.hdu.edu.cn/showproblem.php?pid=6113 [题意] 度度熊是一个喜欢计算机的孩子,在计算机的世界中,所有事物实际上都只由0和1组成. 现在给你一个n ...
- 2017"百度之星"程序设计大赛 - 初赛(A) [ hdu 6108 小C的倍数问题 ] [ hdu 6109 数据分割 ] [ hdu 6110 路径交 ] [ hdu 6112 今夕何夕 ] [ hdu 6113 度度熊的01世界 ]
这套题体验极差. PROBLEM 1001 - 小C的倍数问题 题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6108 (2017"百度之星 ...
- HDU 6113 度度熊的01世界
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 6118 度度熊的交易计划(最小费用最大流)
Problem Description度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个 ...
随机推荐
- python__005
一.字符串格式化 #字符串的拼接#msg='i am a best boy'+'非常帅'print(msg)name=input('name:')hobby=input(('hobby:'))age= ...
- CSRF token的原理
参考: http://www.cnblogs.com/zhaof/p/6281482.html 简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.cs ...
- #Java学习之路——基础阶段二(第十一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- java中变量的线程安全性
静态变量:线程非安全.静态变量即类变量,位于方法区,为所有对象共享,共享一份内存,一旦静态变量被修改,其他对象均对修改可见,故线程非安全.实例变量:单例模式(只有一个对象实例存在)线程非安全,非单例线 ...
- 洛谷 P1273 有线电视网 题解
题面 按照常见树形背包定义状态:设dp[u][j]表示在以u为根的子树中,选择j个客户所能获得的最大收益. 状态转移:dp[u][j]=max(dp[u][j-k],dp[v][k]-w(u,v)); ...
- OLT设置vlan透传及ONU端口划vlan
CZ-PX-ShangShi-FTTH-OLT-A#show runn System current configuration:!Software Version ISCOM5800E-SMCB_1 ...
- python-day14(正式学习)
目录 三元表达式 列表推导式 字典生成式 zip()方法 生成器 yield关键字 迭代套迭代 send(value) close() throw() 自定义range方法 生成器表达式 匿名函数 与 ...
- notes-19-05-10
一 mysql查找一个表中字段相同的数据 2019-05-10 15:51:03 多字段 ) 二 Referer的作用?2019-05-17 10:03:48 (来自网络) 1.防盗链我在www ...
- openlayers之框选放缩DragZoom(vue项目)
环境vue3.0项目 最初是以npm i ol -s方式安装的ol,import方式导入引用,但是实际使用的时候一直报ol is not defined,最后选择在HTML以script标签引入ol, ...
- 在ubuntu上使用Openresty+lua实现WAF----折腾笔记
1.1 参考loveshell的waf实现思路,再此感谢下面其中一部分是转载 1.2 WAF的功能 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝.支持URL白名单,将不需要过滤的URL进行定 ...