AGC 019F.Yes or No(思路 组合)
题目链接
\(Description\)
一共有\(n+m\)道判断题,其中有\(n\)个答案为"YES",\(m\)个为"NO"。现在以随机顺序给你这\(n+m\)道题,你需要依次回答,每回答一道题就会告诉你该题的正确答案。求最优策略下期望答对多少题。
\(n,m\leq 5\times10^5\)。
\(Solution\)
最优策略自然是每次答剩下数目多的。
每次回答问题要么答对要么答错,且使对应题数-1,不妨用坐标表示。
引用这位dalao的一张图:
左下角为\((0,0)\),右上角为\((n,m)\)(设\(n\geq m\))。题目的每种排列都对应一条从\((n,m)\)走到\((0,0)\)的路径。
那么我们从\((n,m)\)走到\((0,0)\),每走一条蓝边就表示答对一题。可以发现要走的蓝边数目一定是\(n\)(即\(\max(n,m)\))。
如果一直在对角线的一侧走,显然成立。
否则至少要答对\(\max(n,m)-\min(n,m)\)题才能到对角线。然后每答错一题,都会导致一定能答对一题,这里一共会答对\(\min(n,m)\)题。所以总共就是\(\max(n,m)\)。
当走到对角线时(两种答案题数相同),会随便猜一个。这时答对的概率为\(\frac 12\)。即对于每个对角线上的点,每次经过期望答对题数都为\(\frac 12\)。
那么我们对每个对角线上的点统计经过它的路径有多少条即可。然后再除以总路径数,再乘以\(\frac 12\),最后加上\(\max(n,m)\)。
//18ms 7936KB
#include <cstdio>
#include <algorithm>
#define mod 998244353
const int N=1e6;int fac[N+3],ifac[N+3];inline int FP(int x,int k)
{int t=1;for(; k; k>>=1,x=1ll*x*x%mod)if(k&1) t=1ll*t*x%mod;return t;
}
#define C(n,m) (1ll*fac[n+m]*ifac[n]%mod*ifac[m]%mod)//C(n+m,n)int main()
{int n,m; scanf("%d%d",&n,&m);if(n<m) std::swap(n,m);int lim=n+m; fac[0]=fac[1]=1;for(int i=1; i<=lim; ++i) fac[i]=1ll*fac[i-1]*i%mod;ifac[lim]=FP(fac[lim],mod-2);for(int i=lim; i; --i) ifac[i-1]=1ll*ifac[i]*i%mod;long long ans=0;for(int i=1; i<=m; ++i) ans+=1ll*C(i,i)*C(n-i,m-i)%mod;ans=ans%mod*FP(C(n,m),mod-2)%mod*FP(2,mod-2)%mod;printf("%lld\n",(ans+n)%mod);return 0;
}
转载于:https://www.cnblogs.com/SovietPower/p/9757375.html
AGC 019F.Yes or No(思路 组合)相关推荐
- C++:排列组合算法
转载请注明出处 1 介绍 排列(Permutation)和组合(Combination)是两个基础的数学概念. 计算排列与组合可以解决一些实际的工程问题,掌握排列组合计算的方法是十分重要的. 目前,网 ...
- AI芯片:从历史看未来
来源:36氪 摘要:从芯片发展的大趋势来看,目前尚处于AI芯片发展的初级阶段,无论是科研还是产业应用都有巨大的创新空间.我们相信,未来十年将是AI芯片发展的重要时期,有望在架构和设计理念取得巨大的突破 ...
- 【2020牛客NOIP赛前集训营-提高组(第一场)题解】( 牛牛的方程式,牛牛的猜球游戏,牛牛的凑数游戏,牛牛的RPG游戏)
未完待续... T1:牛牛的方程式 title solution code T2:牛牛的猜数游戏 title solution code T3:牛牛的凑数游戏 title solution code ...
- leetcode hot100(第一部分) + python(c++)
1-1.两数之和 思路1:两层for循环 O(n2) class Solution:def twoSum(self, nums, target):res = []for i in range(len( ...
- 奥拉星插件flash下载手机版下载安装_奥拉星游戏插件
奥拉星游戏插件一款非常好玩的.io系列游戏,游戏都玩法很简单的,给大家提供安卓手机版本下载,非常好玩,可以支持联机,关卡众多,感兴趣的快来下载试玩吧! win10怎么关闭代理网络游戏 1.海量资源 1 ...
- php 重命名 漏洞,上传漏洞[汇总]
最后必然失去的希望就是毒药啊. 个人对上传漏洞的理解在第一章节就说过了,这里稍微复述一下.上传漏洞按个人理解分两种,第一种是代码层的.即代码过滤不严格,或者使用客户端本地校验.第二种是服务层的,比如i ...
- 自动定时发送邮件的方法 —— 定时执行专家V6.8
目录 ▉ 定时发送简单邮件 ◆前提条件 ◆实现思路 ◆设置方法 ▉ 定时执行专家简介 ◆最新版下载链接 ◆2023-03-21 V6.8 - 更新日志 ▉ 定时发送简单邮件 ◆前提条件 - 电脑安装 ...
- go扩展ticker实现优雅起停
目录 ticker源码分析 关键源码 ticker核心源码 startTimer stopTimer sentTime 核心源码 源码解读 分析 注意事项 ticker优化关闭思路 MyTicker代 ...
- MySQL实战——表、索引创建与优化
目录 前言 MySQL表.索引 优化实战 优化前 - 表.索引结构 表优化思路 非聚簇索引优化思路 组合索引优化思路 认识key_len 依据最左匹配选择 只使用一列也能走联合索引 依据最左匹配选择 ...
最新文章
- python flask分页_flask 分页
- 筛法求素数 素数打表
- quill变html转化,将Quill Delta转换为HTML
- 为什么要保持软件包依赖项自由循环的五个原因
- 戴尔电脑好还是华为好_华硕和戴尔笔记本哪种好 华硕和戴尔优缺点分析【详解】...
- mysql线程缓存和表缓存
- Linux 压缩与解压
- 清新手绘水果平面设计|面膜的包装设计越来越精致了!
- devc中文注释显示问号_Python零基础入门-(如何让人读懂你的代码)文档注释
- list中随机获取n条、随机生成4位6位数工具类,1-n范围随机数,Math.random()生成随机数
- python风变编程是骗局吗-请问风变编程的Python课怎么样?
- 对Kindle进行可用性研究
- python神经网络编程 代码,python神经网络算法代码
- js删除节点的坑(删不完),以li为列
- Altium 拖动已布线的双排焊盘
- Total Uninstall 6安装使用
- 记一次matespace导致的FGC导致接口性能尖刺
- 蚂蚁金服 CTO 新加坡演讲:小蚂蚁是如何“爬”上区块链的?
- 在linux用锐捷客户端上校园网
- PhotoShop画布自动适应图像的尺寸大小?
热门文章
- ffmpeg 安装_CentOS7.6安装SRS和ffmpeg实现自建直播服务器
- laravel生成php代码,laravel代码生成器
- python定义一个类怎么弄_Python怎么创建一个类
- python与数据库完整项目_python入门:操作数据库项目实例分享
- 使用 session_destroy() 销毁session文件时 报 Trying to destroy uninitialized session 错误解决办法
- 计算器小程序java课程设计,java课程设计----计算器小程序报告.doc
- 1024灯控台初学_MA2的小弟MA1控台说明书
- python创建列表副本_Python编程15:Python列表的排序和列表的副本
- vim 配置_一步一步配置vim(4)--与latex进行实时显示
- java jvisualvm linux,从Linux JDK中发出jvisualvm时出现乱码