$n \leq 1e9$底边长的泳池,好懒啊泥萌自己看题吧,$k \leq 1000$。答案对998244353取膜。

现在令$P$为安全,$Q$为危险的概率。刚好$K$是极其不好算的,于是来算$\leq K$,然后用$calc(K)-calc(K-1)$解决。$f(i,j)$--$i$行$j$列的矩形中,第$i$行有危险,前$i-1$行都没有危险,而最大矩形$\leq K$的概率,枚举最后一个危险格递推,$f(i,j)=\sum_{k=0}^{j-1}f(i,k)P^{i-1}Qg(i,j-k-1)$,其中$g(i,j)$表示$i$行$j$列矩形的前$i$行都没危险,而最大矩形$\leq K$的概率,就是$f$的一个前缀和。最后$h(i)$表示$i$列的答案,$h(i)=\sum_{j=i-K}^{i}h(j-1)*Q*g(1,i-j)$,注意一开始的$h(i)+=g(1,i)$。

然后就可以拿到70分。90分的话加个矩阵快速幂,100分加个多项式取膜。只写70.

 //#include<iostream>
#include<cstring>
#include<cstdio>
//#include<math.h>
//#include<set>
//#include<queue>
//#include<bitset>
//#include<vector>
#include<algorithm>
#include<stdlib.h>
using namespace std; #define LL long long
int qread()
{
char c; int s=,f=; while ((c=getchar())<'' || c>'') (c=='-') && (f=-);
do s=s*+c-''; while ((c=getchar())>='' && c<=''); return s*f;
} //Pay attention to '-' , LL and double of qread!!!! int n,K,X,Y,P,Q;
const int mod=;
int powmod(int a,int b)
{
int ans=;
while (b) {if (b&) ans=1ll*ans*a%mod; a=1ll*a*a%mod; b>>=;}
return ans;
} #define maxn 1011
int f[maxn][maxn],g[maxn][maxn],h[maxn],pp[maxn],qq[maxn]; int calc(int K)
{
memset(f,,sizeof(f)); memset(g,,sizeof(g));
for (int i=;i<=K+;i++) g[i][]=;
for (int i=K+;i>;i--)
for (int j=,to=K/(i-);j<=to;j++)
{
for (int k=;k<j;k++)
{
f[i][j]=(f[i][j]+1ll*f[i][k]*pp[i-]%mod*Q%mod*g[i][j-k-])%mod;
f[i][j]=(f[i][j]+1ll*g[i][k]*pp[i-]%mod*Q%mod*g[i][j-k-])%mod;
}
g[i-][j]=(g[i][j]+f[i][j])%mod;
}
memset(h,,sizeof(h)); h[]=;
for (int i=;i<=n;i++)
{
if (i<=K) h[i]=g[][i];
for (int j=max(,i-K);j<=i;j++)
h[i]=(h[i]+1ll*h[j-]*Q%mod*g[][i-j])%mod;
}
return h[n];
} int main()
{
n=qread(); K=qread(); X=qread(); Y=qread(); P=1ll*X*powmod(Y,mod-)%mod; Q=(mod+-P)%mod;
pp[]=qq[]=; for (int i=;i<=K;i++) pp[i]=pp[i-]*1ll*P%mod,qq[i]=qq[i-]*1ll*Q%mod;
printf("%d\n",(calc(K)-calc(K-)+mod)%mod);
return ;
}

LOJ#2304. 「NOI2017」泳池的更多相关文章

  1. LOJ 2304 「NOI2017」泳池——思路+DP+常系数线性齐次递推

    题目:https://loj.ac/problem/2304 看了各种题解…… \( dp[i][j] \) 表示有 i 列.第 j 行及以下默认合法,第 j+1 行至少有一个非法格子的概率,满足最大 ...

  2. loj #2305. 「NOI2017」游戏

    #2305. 「NOI2017」游戏 题目描述 小 L 计划进行 nnn 场游戏,每场游戏使用一张地图,小 L 会选择一辆车在该地图上完成游戏. 小 L 的赛车有三辆,分别用大写字母 AAA.BBB. ...

  3. loj#2305. 「NOI2017」游戏 2-sat

    链接 https://loj.ac/problem/2305 https://www.luogu.org/problemnew/show/P3825 思路 3-sat神马的就不要想了,NP问题 除去x ...

  4. LOJ 2303 「NOI2017」蚯蚓排队——链表+哈希表

    题目:https://loj.ac/problem/2303 想到合并的时候可以只考虑接口附近的50个,但不太会分析复杂度,而且没有清楚地想到用哈希值对应个数. 看了题解才会…… 一直想用 splay ...

  5. LOJ 2302 「NOI2017」整数——压位线段树

    题目:https://loj.ac/problem/2302 压30位,a最多落在两个位置上,拆成两次操作. 该位置加了 a 之后,如果要进位或者借位,查询一下连续一段 0 / 1 ,修改掉,再在含有 ...

  6. 「NOI2017」泳池

    DP式子比后面的东西难推多了 LOJ2304 Luogu P3824 UOJ #316 题意 给定一个长度为$ n$高为$ \infty$的矩形 每个点有$ 1-P$的概率不可被选择 求最大的和底边重 ...

  7. *LOJ#2306. 「NOI2017」蔬菜

    $n \leq 100000$种蔬菜,每个蔬菜有:一单位价格:卖第一单位时额外价格:总量:每天腐烂量.每天能卖$m \leq 10$单位蔬菜,多次询问:前$k \leq 100000$天最多收入多少. ...

  8. LOJ#2307. 「NOI2017」分身术

    $n \leq 100000$个点,$m \leq 100000$次询问,每次问删掉一些点后的凸包面积. 不会啦写个20暴力,其实是可以写到50的.当个计算几何板子练习. //#include< ...

  9. LOJ#2303. 「NOI2017」蚯蚓排队

    $n \leq 200000$的$1 \leq a_i \leq 6$的蚯蚓,有三种操作:让一只队头蚯蚓接在一只队尾蚯蚓后面:让一队蚯蚓从某个蚯蚓后面断成两队:问:给个字符串,问他的..算了你们直接看 ...

随机推荐

  1. Hibernate中session的save方法问题

    今天在使用session.save(),进行插入数据操作时,一直没有成功,也没有报错.后来发现是因为没有创建事务,提交事务的原因 你对flush和commit的意思没有理解到:1,flush代表刷新, ...

  2. gradle更换国内镜像、配置本地仓库地址

    gradle更换国内镜像,安装包解压后init.d文件夹下面创建init.gradle文件,内容如下 allprojects{ repositories { def REPOSITORY_URL = ...

  3. Java AES加密解密工具 -- GUI 、在线传输文件

    原理 对于任意长度的明文,AES首先对其进行分组,每组的长度为128位.分组之后将分别对每个128位的明文分组进行加密. 对于每个128位长度的明文分组的加密过程如下:     (1)将128位AES ...

  4. Python基础——判断和循环

    判断 缩进代替大括号. 冒号(:)后换号缩进. if test=100 if test>50: print('OK') print('test') if-elif-else test=50 if ...

  5. HDU 3727 Jewel 主席树

    题意: 一开始有一个空序列,然后有下面四种操作: Insert x在序列尾部加入一个值为\(x\)的元素,而且保证序列中每个元素都互不相同. Query_1 s t k查询区间\([s,t]\)中第\ ...

  6. 包含min函数的栈 【微软面试100题 第二题】

    题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 参考题目:剑指offer第21题. 题目分析: 1. ...

  7. 大数据学习——sparkSql对接mysql

    1上传jar 2 加载驱动包 [root@mini1 bin]#  ./spark-shell --master spark://mini1:7077 --jars mysql-connector-j ...

  8. day01_01.了解php

    1.了解PHP 第一个程序 echo 'hello world'; 和python的区别,python是 print (hello world) 并且python结尾没有;2.X版本不需要加括号,但是 ...

  9. [java开发篇][dom模块] 遍历解析xml

    http://blog.csdn.net/andie_guo/article/details/24844351 XML DOM节点树 XML DOM将XML文档作为树结构,树结构称为一个节点树.所有的 ...

  10. 【Luogu】P2486染色(树链剖分)

    题目链接 线段树维护左端颜色,右端颜色,颜色段数量. 合并的时候看左子树的右端颜色是不是等于右子树的左端颜色,如果等于那么颜色段数量要-1S 然后在树剖跳链的时候搞同样的操作qwq 然后就没有然后了 ...