Solution -「AGC 019F」「AT 2705」Yes or No
\(\mathcal{Description}\)
Link.
有 \(n+m\) 个问题,其中 \(n\) 个答案为 yes,\(m\) 个答案为 no。每次你需要回答一个问题,然后得知这个问题的正确答案。求最优策略下期望答对的题数。
\(n,m\le5\times10^5\)。
\(\mathcal{Solution}\)
显然贪心策略:当 \(n\not=m\),猜较多的答案。
设 \(n>m\),无脑猜 yes,就一定能答对 \(n\) 道题。那么所有 \(n\not=m\) 的情形下,猜对的期望次数之和就是 \(n\)。接下来只需要考虑 \(n=m\) 时的贡献。
其实 OEIS 能找到 www。首先,\(n=m\) 时,猜中的概率显然为 \(\frac{1}2\)。那么贡献次数呢?考虑成一张为网格图,从 \((0,0)\) 向下或向右走,走到 \((n,m)\),求进过 \((i,i)\) 的概率。这就是经典的组合数问题嘛。综上,答案为:
\]
求出来就好啦,复杂度 \(\mathcal O(n+m)\)。
\(\mathcal{Code}\)
#include <cstdio>
const int MAXN = 5e5, MOD = 998244353;
int n, m, fac[MAXN * 2 + 5], ifac[MAXN * 2 + 5];
inline int qkpow ( int a, int b, const int p = MOD ) {
int ret = 1;
for ( ; b; a = 1ll * a * a % p, b >>= 1 ) ret = 1ll * ret * ( b & 1 ? a : 1 ) % p;
return ret;
}
inline void init ( const int n ) {
fac[0] = 1;
for ( int i = 1; i <= n; ++ i ) fac[i] = 1ll * i * fac[i - 1] % MOD;
ifac[n] = qkpow ( fac[n], MOD - 2 );
for ( int i = n - 1; ~ i; -- i ) ifac[i] = ( i + 1ll ) * ifac[i + 1] % MOD;
}
inline int C ( const int n, const int m ) {
return n < m ? 0 : 1ll * fac[n] * ifac[m] % MOD * ifac[n - m] % MOD;
}
int main () {
scanf ( "%d %d", &n, &m );
if ( n < m ) n ^= m ^= n ^= m;
init ( n + m );
int ans = n, inv = ( MOD + 1ll ) / 2 * qkpow ( C ( n + m, n ), MOD - 2 ) % MOD;
for ( int i = 1; i <= m; ++ i ) {
ans = ( ans + 1ll * inv * C ( 2 * i, i ) % MOD * C ( n + m - 2 * i, n - i ) ) % MOD;
}
printf ( "%d\n", ans );
return 0;
}
Solution -「AGC 019F」「AT 2705」Yes or No的更多相关文章
- Solution -「CTS 2019」「洛谷 P5404」氪金手游
\(\mathcal{Description}\) Link. 有 \(n\) 张卡牌,第 \(i\) 张的权值 \(w_i\in\{1,2,3\}\),且取值为 \(k\) 的概率正比于 \ ...
- 「题解」「美团 CodeM 资格赛」跳格子
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...
- 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇
http://www.4gamer.net/games/216/G021678/20140714079/ 连载第2回的本回, Arc System Works开发的格斗游戏「GUILTY G ...
- Android内存管理(4)*官方教程 含「高效内存的16条策略」 Managing Your App's Memory
Managing Your App's Memory In this document How Android Manages Memory Sharing Memory Allocating and ...
- SSH连接时出现「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」解决办法
用ssh來操控github,沒想到連線時,出現「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」,後面還有一大串英文,這時當然要向Google大神求助 ...
- 「Windows MFC 」「Edit Control」 控件
「Windows MFC 」「Edit Control」 控件
- 「ZJOI2019」&「十二省联考 2019」题解索引
「ZJOI2019」&「十二省联考 2019」题解索引 「ZJOI2019」 「ZJOI2019」线段树 「ZJOI2019」Minimax 搜索 「十二省联考 2019」 「十二省联考 20 ...
- Loj #6069. 「2017 山东一轮集训 Day4」塔
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...
- Loj #6073.「2017 山东一轮集训 Day5」距离
Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...
随机推荐
- PowerShell【For篇】
1-10的循环 1 for($i=1;$i -le 10;$i++){ 2 $i 3 } 当然之前前一篇中所写到的1..9你也可以直接在ps中写道 1..10 运行结果也是一样的. 也可以这样 1 f ...
- react中使用styled-component
styled-component的使用地址(https://www.cnblogs.com/aichenxy/p/8672752.html)
- SYCOJ1793
题目-统计单词前缀数 (shiyancang.cn) 1 #include<bits/stdc++.h> 2 using namespace std; 3 map<string,in ...
- Rust学习(一)
为什么学习Rust 最近在看Linux相关新闻的时候,看到了Linux内核正在将Rust集成至内核内的消息,且越来越多的嵌入式开发可以使用Rust编程.以往笔者的技术栈只有 C语言 ,C++也只是浅尝 ...
- 【Java】File类
File类 File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类声明在java.io包下 File类中涉及到关于文件或文件目录的创建.删除.重命名.修改时间.文件大小等方法,并 ...
- [MAUI] 在.NET MAUI中结合Vue实现混合开发
在MAUI微软的官方方案是使用Blazor开发,但是当前市场大多数的Web项目使用Vue,React等技术构建,如果我们没法绕过已经积累的技术,用Blazor重写整个项目并不现实. Vue是当前流 ...
- Java打印空心菱形
使用Java打印空心菱形 public static void main(String[] args) { int n = 5; //这里输出菱形的上半部分 for (int i = 1; i < ...
- 【刷题-PAT】A1119 Pre- and Post-order Traversals (30 分)
1119 Pre- and Post-order Traversals (30 分) Suppose that all the keys in a binary tree are distinct p ...
- 【记录一个问题】ndk下使用c++11的condition_variable问题较多
1.存在通知丢失的情况:生产者线程通知196次,消费者线程收到190次,导致部分数据无法被处理. 2.cond.wait()方法后的加锁有问题,导致对空队列进行出队操作然后coredump.一直记得w ...
- 用Cesium可视化地下设施、矿山和地质层
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 本月的CesiumJS 1.70发布引入的一项关键改进是地下数据 ...