AGC056E-Cheese【dp】

前言

奶酪可能会长腿,但绝对不会变质
_ _,_ _ _ _ _ _ _


正题

题目链接:https://atcoder.jp/contests/agc056/tasks/agc056_e


题目大意

有一个长度为nnn的环,第i+0.5(0≤i<n)i+0.5(0\leq i<n)i+0.5(0i<n)位置上各有一只老鼠。

然后进行以下操作n−1n-1n1次:
iii个位置有ai%a_i\%ai%的概率被选择(选择一个),然后在这个位置上放一个奶酪,这个奶酪会顺时针跑,跑到一个老鼠的位置时有50%50\%50%的概率被吃掉,老鼠如果吃过奶酪就会离开。

求每只老鼠被留到最后的概率。

1≤n≤50,∑i=0n−1ai=1001\leq n\leq 50,\sum_{i=0}^{n-1}a_i=1001n50,i=0n1ai=100


解题思路

考虑第nnn只老鼠留到最后的概率,因为无论是哪只奶酪吃什么老鼠都是一样的,所以我们可以考虑开始时就将所有的奶酪放下来,然后让它们一起绕着环走。

同样的,奶酪的移动顺序也是无关紧要的,所以我们可以考虑让所有的奶酪先绕道第nnn只老鼠的面前然后一起统计。

那么先考虑dpdpdp,设fi,j,kf_{i,j,k}fi,j,k表示现在已经放下的奶酪都已经走到了位置iii处,然后已经放下了jjj个奶酪,已经有kkk个被老鼠吃了。

那么每次的转移分成两部分,第一部分是放奶酪,枚举这个位置放置了xxx个奶酪,需要注意的是除了概率以外因为这个方案是涉及可重排列的,所以还需要乘上一个1x!\frac{1}{x!}x!1

第二部分是吃奶酪,因为每只奶酪只会吃一个老鼠,所以统计没有这些奶酪都没有被吃的概率,很方便转移。

那么假设目前有kkk个奶酪走到了第nnn只老鼠前,那么说明前面还剩下k−1k-1k1只老鼠没有被吃,那么考虑这种情况下第nnn只老鼠被留到最后的概率。

考虑一个神必的证明方法,我们考虑绕一圈绕到第iii只老鼠处还剩下xxx个奶酪,然后考虑iiii+1i+1i+1之间被留到最后的概率:

  • 如果iiii+1i+1i+1都吃到了,我们显然得不出两个的概率关系。
  • 如果iiii+1i+1i+1都没被吃到,我们也得不出来,考虑下一轮。
  • 如果iii吃了并且i+1i+1i+1没吃,概率是(1−12x)12x−1(1-\frac{1}{2^x})\frac{1}{2^{x-1}}(12x1)2x11
  • 如果iii没吃并且i+1i+1i+1吃了,概率是12x(1−12x)\frac{1}{2^x}(1-\frac{1}{2^x})2x1(12x1)

那么记pip_ipi表示iii留到最后的概率,就有pi:pi+1=12x(1−12x):(1−12x)12x−1=1:2p_i:p_{i+1}=\frac{1}{2^x}(1-\frac{1}{2^x}):(1-\frac{1}{2^x})\frac{1}{2^{x-1}}=1:2pi:pi+1=2x1(12x1):(12x1)2x11=1:2
然后又因为∑i=1k−1pi=1\sum_{i=1}^{k-1}p_i=1i=1k1pi=1,所以有pi=2i−12k−1p_i=\frac{2^{i-1}}{2^{k}-1}pi=2k12i1,那么我们要求的就是p1=12k−1p_1=\frac{1}{2^k-1}p1=2k11

然后这样是求第nnn只老鼠的,改一下其他的aia_iai就好了。

时间复杂度:O(n5)O(n^5)O(n5)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=55,P=998244353;
ll n,fac[N],inv[N],pw[N],pr[N];
ll a[N],f[N][N][N];
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
signed main()
{scanf("%lld",&n);fac[0]=inv[0]=inv[1]=pw[0]=pr[0]=1;for(ll i=2;i<N;i++)inv[i]=P-inv[P%i]*(P/i)%P;for(ll i=1;i<N;i++)fac[i]=fac[i-1]*i%P,inv[i]=inv[i-1]*inv[i]%P;for(ll i=1;i<N;i++)pw[i]=pw[i-1]*inv[2]%P,pr[i]=pr[i-1]*2ll%P;for(ll i=0;i<n;i++)scanf("%lld",&a[i]),a[i]=a[i]*power(100,P-2)%P;ll sum=0;for(ll s=0;s<n;s++){//f[i][j][k]表示到s+i,j个奶酪,被吃了k个memset(f,0,sizeof(f));f[0][0][0]=1;for(ll x=1;x<=n;x++){for(ll i=0;i<n;i++)for(ll j=0;j<=i;j++)for(ll k=0,r=1;k<=i-j;k++,r=r*a[(s+x)%n]%P)(f[x][i][j]+=f[x-1][i-k][j]*r%P*inv[k]%P)%=P;if(x==n)continue;for(ll i=0;i<n;i++)for(ll j=i-1;j>=0;j--){(f[x][i][j+1]+=f[x][i][j]*(1-pw[i-j])%P)%=P;(f[x][i][j]=f[x][i][j]*pw[i-j]%P)%=P;}}ll ans=0;for(ll i=1;i<=n;i++)(ans+=f[n][n-1][n-i]*fac[n-1]%P*power(pr[i]-1,P-2)%P)%=P;printf("%lld ",(ans+P)%P);sum=(sum+ans)%P;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

张高兴的 .NET Core IoT 入门指南:(二)GPIO 的使用

什么是 GPIOGPIO 是 General Purpose Input Output 的缩写&#xff0c;即“通用输入输出”。 Raspberry Pi 有两行 GPIO 引脚&#xff0c; Raspberry Pi 通过这两行引脚进行一些硬件上的扩展&#xff0c;与传感器进行交互等等。Raspberry Pi B/2B/3B/3B/Zero 引脚图简单的讲&am…

acwing1304. 佳佳的斐波那契

1304. 佳佳的斐波那契 题意&#xff1a; S(n)表示Fibonacci的前n项和mod m T(n)(F12F23F3…nFn)mod m 给n和m&#xff0c;求T(n) 题解&#xff1a; 矩阵快速幂 参考题解 关键在于构造矩阵相乘的形式 代码&#xff1a; #include<bits/stdc.h> #define debug(a,b) pri…

CF1444C Team-Building(可持久化并查集)(二分图)

解析 容易想到补集思想&#xff0c;寻找那些组之间不能形成二分图 二分图一般的两个判定方法&#xff1a; 染色并查集 这里考虑并查集&#xff08;看题解似乎染色也可做&#xff09; 先把所有组内的边合并并查集 如果某个组自己内部就有奇环&#xff0c;显然不能和任何点配…

[2021.4.7多校省选模拟33]A,B,C

文章目录考试复盘ABC考试复盘 今天的题其实蛮温柔的 考完试预估分160160160&#xff0c;好家伙到手的只有14\frac{1}{4}41​ 第一题是原题&#xff0c;做过的&#xff0c;虽然忘记怎么做了。。。⊙︿⊙ 但是因为本身较简单&#xff0c;考场上也想到了正解 但是因为我的SBS…

C# 8 新提案让泛型 Attribute 成为现实

从一开始&#xff0c; Attribute 就是.NET 的一部分。因此&#xff0c;它们在引入泛型之前就已经被创建好&#xff0c;这意味着如果要引用属性中的类型&#xff0c;必须暴露一个 Type 参数或属性。例如&#xff1a;[TypeConverter(typeof(X))]这种模式存在一些限制。在上面的示…

P5044-[IOI2018] meetings 会议【dp,笛卡尔树,线段树二分】

正题 题目链接:https://www.luogu.com.cn/problem/P5044 题目大意 给出一个长度为nnn的序列hhh&#xff0c;定义dis(x,y)max{hi}(x≤i≤y)dis(x,y)max\{h_i\}(x\leq i\leq y)dis(x,y)max{hi​}(x≤i≤y)。 qqq次询问给出一个区间[L,R][L,R][L,R]&#xff0c;找到一个x∈[L,R]…

模板:线段树标记永久化

为了那不可知的询问永远坚守于此 解析 众所周知线段树的区间修改是需要打懒标记的 多数时候&#xff0c;这个标记在询问子区间时需要下传 而标记永久化&#xff0c;就是指不下传懒标记的一种操作 在某些时候标记不便下传时有所应用 比如zkw线段树和二维线段树等 然而zkw线段树…

1305. GT考试

1305. GT考试 题意&#xff1a; 准考证长度为n位&#xff0c;不吉利数字有m位&#xff0c;问不出现不吉利数字的准考证有多少种&#xff0c;答案mod K 题解&#xff1a; 动态规划kmp矩阵快速幂 设dp[i][j]表示长度为i&#xff0c;且不包含S串&#xff0c;且末尾部分与S串的…

.NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

内容&#xff1a;本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证作者&#xff1a;zara(张子浩) 欢迎分享&#xff0c;但需在文章鲜明处留下原文地址。在这一篇文章中我们希望使用OpenID Connect这种方式来验证我们的MVC程序&#xff08;需要有IdentityServe…

[CF/AT]各大网站网赛 体验部部长第一季度工作报告

文章目录CodeForces#712 (Div. 1)——1503A. Balance the BitsB. 3-ColoringC. Travelling Salesman ProblemD. Flip the Cards108 (Rated for Div. 2)——1519A. Red and Blue BeansB. The Cake Is a LieC. Berland RegionalD. Maximum Sum of ProductsE. Off by OneCodeforce…

G - Tiling FZU - 2040(未解决)

G - Tiling FZU - 2040 题意&#xff1a; m * n的矩阵&#xff0c;通过任意大小的矩阵&#xff0c;有多少种填充方式&#xff1f; 图片为3 * 2的矩阵有如下填充方式&#xff1a; 题解&#xff1a; 矩阵快速幂 目前还没参透 代码:

P7520-[省选联考 2021 A 卷]支配

正题 题目链接:https://www.luogu.com.cn/problem/P7520 题目大意 给出nnn个点mmm条边的一张有向图&#xff0c;一号点为起始点&#xff0c;qqq次独立的询问加入一条边后有多少个点的支配集发生了变化。 1≤n≤3000,1≤m≤2n,1≤q≤21041\leq n\leq 3000,1\leq m\leq 2\times…

11.16 模拟:总结

220pts 100100020 整体还可以&#xff0c;虽然T3挂掉了&#xff0c;但T1T2做出来还是不错的 问题&#xff1a; 开局审错了题&#xff01;T2调了太久T3写挂了白给了40… &#xff08;我临交前就觉得T3细节这么多很可能挂还检查了一遍&#xff09; 只能说我的直觉很灵敏了 这…

C# 8 的新提案:new 关键字类型推断

在很多情况下&#xff0c;一个地方只允许出现一种可能的类型。C# 仍然要求你明确列出类型&#xff0c;但如果目标类型“new”表达式提案被采用&#xff0c;那么就不再需要这些样板代码。从表面上看&#xff0c;这个特性看起来与 var 关键字恰好相反。它不是根据表达式推断出变量…

CF1540B Tree Array(期望,dp)

解析 关于合理的实现 这题卡在最后的小破dp是我没想到的 一开始看到200的数据范围就不禁笑出了声 lca直接On求&#xff01; 然后就开始大力分类讨论 然后就卡在了一个问题上 两个栈AB&#xff0c;分别有a和b个元素&#xff0c;随机从两个栈中弹出一个元素&#xff0c;求最后A栈…

pjudge#21614-[PR #1]守卫【Kruskal生成树,费用流】

正题 题目链接:http://pjudge.ac/problem/21614 题目大意 给出一张nnn个点mmm条边的一张图&#xff0c;有kkk个守卫&#xff0c;每个守卫都有一个点集SSS表示这个守卫可以被派遣到这个点集中的某个点&#xff0c;然后你可以选择一些边删除&#xff0c;要求使得每个点都恰好和…

I - The Mad Mathematician FZU - 2042(未解决)

I - The Mad Mathematician FZU - 2042 题意&#xff1a; 给你一段伪代码&#xff1a;如图 现在给你A&#xff0c;B&#xff0c;C&#xff0c;D&#xff0c;E&#xff0c;的具体值&#xff0c;问你sum是多少 0<A,B,C,D,E<263-1 题解&#xff1a; 数位dp&#xff1f;…

程序员修仙之路--高性能排序多个文件

点击上方蓝色字体&#xff0c;关注我们菜菜呀&#xff0c;昨天晚上班级空间崩溃了程序员主力 Y总what&#xff1f;菜菜我看服务器上写了很多个日志文件&#xff0c;我看着太费劲了&#xff0c;能不能按照日期排序整合成一个文件呀&#xff1f;程序员主力 Y总Y总要查日志呀&…

CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)

解析 比较复杂的一道题 看数据范围&#xff0c;我们肯定要从种类很少的颜色入手 因为第二种加边方式和颜色密切相关 所以设计disi,kdis_{i,k}disi,k​表示 i 号节点到颜色为 k 的节点的最小步数 通过对每个k bfs一遍就能得出答案 然后两个点之间的距离就可以写出转移式&#…

P5366-[SNOI2017]遗失的答案【状压dp,FWT】

正题 题目链接:https://www.luogu.com.cn/problem/P5366 题目大意 给出一个n,G,Ln,G,Ln,G,L。 qqq次询问在1∼n1\sim n1∼n中选择若干个数字并且数字xxx必选&#xff0c;要求这些数的gcdgcdgcd为GGG且lcmlcmlcm为LLL的方案数。 1≤n,G,L,x≤108,1≤q≤1051\leq n,G,L,x\leq 1…