CF1153F Serval and Bonus Problem[通俗易懂]

CF1153F Serval and Bonus Problem[通俗易懂]CF1153F Serval and Bonus Problem

大家好,又见面了,我是你们的朋友全栈君。

 Serval and Bonus Problem

1.转化为l=1,最后乘上l

2.对于一个方案,就是随便选择一个点,选在合法区间内的概率

3.对于本质相同的所有方案考虑在一起,贡献就是合法区间个数/(2*n+1)

4.运用条件概率或者直接解释,只需求出所有本质不同的方案的合法区间个数的和

5.DP即可。

#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
    char ch;x=0;bool fl=false;
    while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
    for(x=numb;isdigit(ch=getchar());x=x*10+numb);
    (fl==true)&&(x=-x);
}
template<class T>il void output(T x){
   
   if(x/10)output(x/10);putchar(x%10+'0');}
template<class T>il void ot(T x){
   
   if(x<0) putchar('-'),x=-x;output(x);putchar(' ');}
template<class T>il void prt(T a[],int st,int nd){
   
   for(reg i=st;i<=nd;++i) ot(a[i]);putchar('\n');}

namespace Miracle{
const int N=4008;
const int mod=998244353;
int n,k,l;
int qm(int x,int y){
    int ret=1;
    while(y){
        if(y&1) ret=(ll)ret*x%mod;
        x=(ll)x*x%mod;
        y>>=1;
    }
    return ret;
}
int ad(int x,int y){
    return x+y>=mod?x+y-mod:x+y;
}
int f[N][N][2];
int main(){
    rd(n);rd(k);rd(l);
    f[0][0][0]=1;
    for(reg i=1;i<=2*n+1;++i){
        for(reg j=0;j<=i;++j){
            for(reg x=0;x<=1;++x){
                if(i+j+(1-x)<=2*n+1){
                    // cout<<i<<" "<<j<<" "<<x<<endl;
                    f[i][j][x]=ad(f[i][j][x],(ll)f[i-1][j+1][x]*(j+1)%mod);
                    if(j>0)f[i][j][x]=ad(f[i][j][x],f[i-1][j-1][x]);
                    if(x==1&&j>=k)f[i][j][x]=ad(f[i][j][x],f[i-1][j][0]);
                    // cout<<" val "<<f[i][j][x]<<endl;
                }
            }
        }
    }
    // cout<<f[2*n+1][0][1]<<endl;
    ll jie=1;
    for(reg i=n+1;i<=2*n+1;++i) jie=(ll)jie*i%mod;
    ll ans=(ll)f[2*n+1][0][1]*qm(2,n)%mod*qm(jie,mod-2)%mod;
    cout<<(ll)ans*l%mod;
    return 0;
}

}
signed main(){
    Miracle::main();
    return 0;
}

/*
   Author: *Miracle*
   Date: 2019/4/13 19:58:12
*/

 

转载于:https://www.cnblogs.com/Miracevin/p/10713639.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106876.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • delphi有办法旋转或翻转图片么?

    delphi有办法旋转或翻转图片么?

    2021年7月29日
    68
  • 手眼标定(一):Opencv4实现手眼标定及手眼系统测试[通俗易懂]

    手眼标定(一):Opencv4实现手眼标定及手眼系统测试[通俗易懂]Opencv4实现手眼标定及手眼系统测试(一)前言程序环境原理如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入前言由于项目需要,要在win10环境下实现“眼在…

    2022年4月29日
    414
  • 树莓派容易坏吗_树莓派的使用

    树莓派容易坏吗_树莓派的使用清华下载地址下载地址下载地址xshell下载地址③树莓派插入TF卡后,等连接上手机就可查看IP地址2.远程登录①打开后选择新建②软件更新源③系统更新源④开始更新4.图形化显示界面为方便大家更直观的感受,可以下载一个图形化的显示桌面,这里推荐VNC(windows也自带了该功能,因为太卡了故不推荐,想用的可以试试:远程桌面连接)⭐有条件的可以直接连上显示屏使用①VNC的网盘连接,大家直接下载就行②打开树莓派的VNCServer(默认关闭)A.在

    2022年10月9日
    0
  • IDEA 2022.01.12激活码【中文破解版】「建议收藏」

    (IDEA 2022.01.12激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~40…

    2022年4月2日
    101
  • mysql 快速 修改 表名

    mysql 快速 修改 表名2019独角兽企业重金招聘Python工程师标准>>>…

    2022年5月6日
    48
  • 使用命令查看Linux内核版本的三种方法

    使用命令查看Linux内核版本的三种方法想知道您的系统使用哪个 Linux 内核版本吗 以下是在 Linux 终端中检查内核版本的几种方法 当您需要了解系统上正在使用的确切 Linux 内核版本时 您可能会遇到这种情况 借助功能强大的 Linux 命令行 您可以轻松地找到答案 如何找到 Linux 内核版本在撰写本文时 我正在使用 Ubuntu18 04 但是这些命令是通用的 可以在 Fedora Debian CentOS SUSELin

    2025年6月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号