【NOI2017】泳池
题解:
满分的笛卡尔树以后再学吧。。
40分还是比较好想的
但是状态挺复杂的
直接贴代码了
代码:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define IL inline
#define rint register ll
#define rep(i,h,t) for (rint i=h;i<=t;i++)
#define dep(i,t,h) for (rint i=t;i>=h;i--)
#define me(x) memset(x,0,sizeof(x))
ll n,k,x,y;
ll mo=;
ll f[][][][][][][][];
ll ans=;
void js(ll &x,ll y)
{
x=(x+y)%mo;
}
void gcd(ll x,ll y,ll &a,ll &b)
{
if (y==)
{
a=; b=; return;
}
gcd(y,x%y,b,a);
b=b-a*(x/y);
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
cin>>n>>k>>x>>y;
ll x1,y1;
gcd(y,mo,x1,y1);
ll pp=(x*x1)%mo;
int p[];
p[]=;
rep(i,,k) p[i]=(p[i-]*pp)%mo;
rep(i,,k) p[i]=(p[i]*(1ll-pp))%mo;
if (n==)
{
cout<<(p[k]%mo+mo)%mo<<endl;
return ;
}
f[][][][][][][][]=;
rep(i,,n)
{
ll kk=i%,tt=(i+)%;
me(f[kk]);
rep(i,,k)
{
rep(i1,,k)
{
if ((i1+(i>=))>k) break;
rep(j1,,k/)
{
if ((j1+(i>=))*>k) break;
rep(i2,,k/)
{
if ((i2+(i>=))*>k) break;
rep(j2,,k/)
{
if ((j2+(i>=))*>k) break;
rep(i3,,k/)
{
if ((i3+(i>=))*>k) break;
rep(j3,,)
{
if (j3==&&i>=) break;
rep(k1,,)
{
bool t=;
if ((i1+(i>=))==k) t=;
if ((j1+(i>=))*==k) t=;
if ((i2+(i>=))*==k) t=;
if ((j2+(i>=))*==k) t=;
if ((i3+(i>=))*==k) t=;
if (i==k) t=;
js(f[kk][(i>=)?i1+:][(i>=)?j1+:][(i>=)?i2+:][(i>=)?j2+:][(i>=)?i3+:][i>=][k1|t],
f[tt][i1][j1][i2][j2][i3][j3][k1]*p[i]);
int ans1=;
ans1++;
}
}
}
}
}
}
}
}
}
rep(i1,,)
rep(j1,,)
rep(i2,,)
rep(j2,,)
rep(i3,,)
rep(j3,,)
js(ans,f[n%][i1][j1][i2][j2][i3][j3][]);
cout<<(ans%mo+mo)%mo<<endl;
return ;
}
【NOI2017】泳池的更多相关文章
- [NOI2017]泳池——概率DP+线性递推
[NOI2017]泳池 实在没有思路啊~~~ luogu题解 1.差分,转化成至多k的概率减去至多k-1的概率.这样就不用记录“有没有出现k”这个信息了 2.n是1e9,感觉要递推然后利用数列的加速技 ...
- BZOJ4944: [Noi2017]泳池
BZOJ4944: [Noi2017]泳池 题目背景 久莲是个爱玩的女孩子. 暑假终于到了,久莲决定请她的朋友们来游泳,她打算先在她家的私人海滩外圈一块长方形的海域作为游泳场. 然而大海里有着各种各样 ...
- 【BZOJ4944】[NOI2017]泳池(线性常系数齐次递推,动态规划)
[BZOJ4944][NOI2017]泳池(线性常系数齐次递推,动态规划) 首先恰好为\(k\)很不好算,变为至少或者至多计算然后考虑容斥. 如果是至少的话,我们依然很难处理最大面积这个东西.所以考虑 ...
- [NOI2017]泳池
题目描述 有一个长为\(n\),高为1001的网格,每个格子有\(p\)的概率为1,\((1-p)\)的概率0,定义一个网格的价值为极大的全一矩形,且这个矩形的底要贴着网格的底,求这个网格的价值为\( ...
- Luogu3824 [NOI2017]泳池 【多项式取模】【递推】【矩阵快速幂】
题目分析: 用数论分块的思想,就会发现其实就是连续一段的长度$i$的高度不能超过$\lfloor \frac{k}{i} \rfloor$,然后我们会发现最长的非$0$一段不会超过$k$,所以我们可以 ...
- [学习笔记]Cayley-Hilmiton
Cayley–Hamilton theorem - Wikipedia 其实不是理解很透彻,,,先写上 简而言之: 是一个知道递推式,快速求第n项的方法 k比较小的时候可以用矩阵乘法 k是2000,n ...
- NOI2010~NOI2018选做
[NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. ...
- UOJ#316. 【NOI2017】泳池
传送门 一道 \(DP\) 好题 设 \(q\) 为一个块合法的概率 套路一恰好为 \(k\) 的概率不好算,算小于等于 \(k\) 的减去小于等于 \(k-1\) 的 那么设 \(f_i\) 表示宽 ...
- LOJ#2304. 「NOI2017」泳池
$n \leq 1e9$底边长的泳池,好懒啊泥萌自己看题吧,$k \leq 1000$.答案对998244353取膜. 现在令$P$为安全,$Q$为危险的概率.刚好$K$是极其不好算的,于是来算$\l ...
- 「NOI2017」泳池
DP式子比后面的东西难推多了 LOJ2304 Luogu P3824 UOJ #316 题意 给定一个长度为$ n$高为$ \infty$的矩形 每个点有$ 1-P$的概率不可被选择 求最大的和底边重 ...
随机推荐
- WPA简介
摘选自 https://www.sohu.com/a/199641521_683126 WPA 全名 WI-FI Protected Access, 有WPA 和WPA2两个标准,是一种保护无线网络的 ...
- OpenCV中RGB和HSV转换的问题
1.一般情况下HSV模型各分量的取值范围为:H为0到360°,S为0到100%,V为0到255.但是在OpenCV中在由RGB转换到HSV的过程中,发现HSV中H为0到180°,S为0到255,V为0 ...
- 前端----css的继承性和层叠性
css有两大特性; 继承性和层叠性 继承性 继承:给父级设置一些属性,子级继承了父级的该属性, 这就是我们的css中的继承, 需要注意的是 有一些属性是可以继承下来的: color , font ...
- 前端 ----jQuery的动画效果
03-jQuery动画效果 jQuery提供的一组网页中常见的动画效果,这些动画是标准的.有规律的效果:同时还提供给我们了自定义动画的功能. 显示动画 方式一: $("div" ...
- JAVA实现网络文件下载
HttpURLConnection conn = null; OutputStream outputStream = null; InputStream inputStream = null; try ...
- 【进阶1-1期】理解JavaScript 中的执行上下文和执行栈(转)
这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://mp.weixin.qq.com/s/tNl5B4uGdMkJ2bNdbbo82g 阅读笔记 执行上下文是当前 JavaScrip ...
- ECS分区挂载数据盘
地址:https://help.aliyun.com/document_detail/25426.html?spm=5176.11065259.1996646101.searchclickresult ...
- 我不是机器人:谷歌最新版验证码系统ReCaptcha破解已开源
选自 Github 作者:George Hughey 机器之心编译 每个人都讨厌验证码,这些恼人的图片中包含你必须输入的字符,我们只有正确地填写才能继续访问网站.验证码旨在确认访问者是人还是程序,并防 ...
- 通过设置ie的通过跨域访问数据源,来访问本地服务
1.首先设置通过域访问数据源 设置通过域访问数据源 2.javascript脚本ajax使用本地服务登录(评价,人证的类似)接口 <html> <head> <scrip ...
- Windows&Word 常用快捷键
Win:显示开始菜单 Win + E:打开文件管理器 Win + D:显示桌面 Win + L:锁定计算机 Win + I:打开设置 Win + M:最小化所有窗口 Alt + F4:1.用来关闭当前 ...