题意:

描述

一共有\(n+m\)道题,其中\(n\)道答案是\(A\),\(m\)道答案是\(B\);

你事先知道\(n和m\),问在最优情况下的期望答错次数,对\(998244353\)取模;

范围

\(n,m \le 1e5\)

题解

  • 考虑答对的期望次数;
  • 显然最优策略是答个数多的那一个;
  • 这样如果把状态写成一个 $n \times m $ 网格图,那么一个点的贡献 \({i,j}\) 就是 \(max(i,j)\) ;
  • 考虑所有从\((0,0)\)走到\((n,m)\)的方案的和,答案就是

\[\begin{align}
n + m - \frac{\sum_{i=0}^{n} \sum_{j=0}^{m} \frac{max(i,j)}{i+j}C_{i+j}^{i}C_{n-i+m-j}^{n-i} }{C_{n+m}^{n}} (i+j!=0)
\end{align}
\]

  • 然后我就去特别死板的化式子。。。。。。,浪费了很多时间;

  • 答案也确实是一个比较特别的式子 :

    \[n - \frac{ \sum_{i=0}^{n} C^{i}_{2i}C^{n-i}_{n+m-2i} }{2C_{n+m}^{n}} (n<=m)
    \]

  • 考虑实际意义,对于一个实际的路径,在\(i!=j\)的点一定是可以知道回答什么,所以一定不会错,即会答对\(max(n,m)\)次

  • 而在\(i==j\)的点会随便回答一个,答对的次数是\(1/2\);

  • 所以去掉一个\(max(n,m)\)之后只考虑所有\(i==j\)的点\(O(n)\)计算;

    #include<bits/stdc++.h>
    #define ll long long
    #define mod 998244353
    using namespace std;
    const int N=1000010;
    int n,m,fac[N],ifac[N],inv[N];
    int cal(int x,int y){return (ll)fac[x+y]*ifac[x]%mod*ifac[y]%mod;}
    int cal2(int x,int y){return (ll)fac[x]*fac[y]%mod*ifac[x+y]%mod;}
    int main(){
    freopen("fft.in","r",stdin);
    freopen("fft.out","w",stdout);
    scanf("%d%d",&n,&m);
    fac[0]=ifac[0]=1;
    for(int i=1;i<=n+m;++i){
    if(i==1)inv[i]=1;else inv[i]=(ll)(mod-mod/i)*inv[mod%i]%mod;
    fac[i]=(ll)fac[i-1]*i%mod;
    ifac[i]=(ll)ifac[i-1]*inv[i]%mod;
    }
    int ans=0;
    /*
    for(int i=0;i<=n;++i)
    for(int j=0;j<=m;++j)if(i==j)*/
    for(int i=1;i<=n&&i<=m;++i){
    int j=i;
    ans = (ans + (ll)max(i,j) * inv[i+j] %mod * cal(i,j) %mod * cal(n-i,m-j) %mod )%mod;
    // ans = (ans + (ll)min(i,j) * inv[i+j] %mod * cal(i,j) %mod * cal(n-i,m-j) %mod )%mod;
    }
    ans = (ll)( min(n,m) - (ll)ans * cal2(n,m)%mod + mod)%mod;
    // ans = ((ll)n + m - (ll)ans * cal2(n,m)%mod + mod)%mod;
    // ans = ((ll)ans *cal2(n,m)%mod);
    cout << ans << endl;
    return 0;
    }

【纪中集训2019.3.13】fft的更多相关文章

  1. 【纪中集训2019.3.27】【集训队互测2018】小A的旅行(白)

    题目 描述 ​ \(0-n-1\)的图,满足\(n\)是\(2\)的整数次幂, $ i \to j $ 有 $ A_{i,j} $ 条路径: ​ 一条路径的愉悦值定义为起点和终点编号的\(and\)值 ...

  2. 【纪中集训2019.3.23】Deadline

    题意 描述 一个二分图\((A,B)\),每个点额外有一个颜色0或者1: 匹配时,只能相同颜色的点匹配: 给出\(A\)中的颜色,问如何分配\(B\)种的颜色使得\((A,B)\)的最大匹配最小: 范 ...

  3. 【纪中集训2019.3.12】Z的礼物

    题意 已知\(a_{i} = \sum_{j=1}^{i} \{^{i} _{j} \}b_{j}\), 给出\(a_{1} 到 a_{n}\) : 求\(b_{l} 到 b_{r}\)在\(1e9+ ...

  4. 【纪中集训2019.3.12】Mas的仙人掌

    题意: ​ 给出一棵\(n\)个点的树,需要加\(m\)条边,每条边脱落的概率为\(p_{i}\) ,求加入的边在最后形成图中仅在一个简单环上的边数的期望: \(1 \le n \ , m \le 1 ...

  5. 【纪中集训2019.3.23】IOer

    题目 描述 你要在\(m\)天内,刷\(n\)道题,每天可以刷的题的数目不限: 第\(i\)天可以刷的题目的种类是\(ui+v\): 两种刷题的方案不同当且仅当某天刷题的数量不同或者依次刷题的种类不同 ...

  6. 【纪中集训2019.3.11】Cubelia

    题目: 描述 给出长度为\(n\)的数组\(a\)和\(q\)个询问\(l,r\). 求区间\([l,r]\)的所有子区间的前缀和的最大值之和: 范围: $n \le 2 \times 10^5 , ...

  7. 「中山纪中集训省选组D1T1」最大收益 贪心

    题目描述 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清:一个时刻只能做 ...

  8. 纪中集训 Day 2

    今天(其实是昨天= =)早上起来发现好冷好冷啊= = 吃完饭就准备比赛了,好吧B组难度的题总有一道不知到怎么写QAQ 太弱了啊!!! 蒟蒻没人权啊QAQ 今天第4题不会写,在这里说说吧 题目的意思就是 ...

  9. 纪中集训 Day1

    今天早上起来吃饭,发现纪中伙食真的是太差了!!!什么都不热,早餐的面包还好,然后就迎来了美好的早晨= = 早上做一套题,T1T2果断秒,T3一看就是noi原题,还好看过题解会写,然后就愉快的码+Deb ...

随机推荐

  1. Hyperledger Fabric CA User’s Guide——开始(三)

    Fabric CA User’s Guide——开始 先决条件 安装Go 1.9+ 设置正确的GOPATH环境变量 安装了libtool和libtdhl-dev包 下面是在Ubuntu上安装libto ...

  2. 程序设计 之 C#实现《拼图游戏》 (上)代码篇

    原理详解请参考博客中 拼图游戏(下)原理篇 http://www.cnblogs.com/labixiaohei/p/6713761.html 功能描述: 1.用户自定义上传图片 2.游戏难度选择:简 ...

  3. Django_rest_framework_基础

    简介 为什么要使用REST framework? Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. - 在线可视的API,对于赢得你的开发者们十分有用  ...

  4. Objective-C中,类方法的getter和setter可以用点运算符吗?

    Objective-C中,对象实例property的getter和setter可以使用点运算符来操作,那么类方法的getter和setter可以使用点运算吗? 答案是肯定的. 看如下代码: #impo ...

  5. Final阶段中间产物

    空天猎功能说明书:https://git.coding.net/liusx0303/Plane.git 空天猎代码控制:https://coding.net/u/MR__Chen/p/SkyHunte ...

  6. 用java构造一个带层次的文件目录遍历器

    import java.util.List; import java.io.File; import java.util.ArrayList; public class IteratorUtil { ...

  7. java下Mysql基本操作

    https://www.cnblogs.com/centor/p/6142775.html

  8. Mongodb compass 介绍

    参考官方文档:https://docs.mongodb.com/compass/current/install/#install-on-red-hat-enterprise-linux-rhel Mo ...

  9. Alpha阶段敏捷冲刺⑦

    1.提供当天站立式会议照片一张. 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 账单明细和报表的界面设计在同一界面 今天要做的工作 对于报表扇形图的 ...

  10. 10.13课堂Scrum站立会议

    项目名称:C#实现的连连看游戏 小组名称:计信F4 开会时间 :2016年10月11日 20:20~20:40 组长:张政 成员:张金生,武志远,李泉 内容: 昨日已完成: 张政:构建基础逻辑,实现游 ...