AtCoder Grand Contest 019 F-yes or no

解题思路

考虑一个贪心策略,假设当前还有 \(x\) 道 \(\text{yes}\) 和 \(y\) 道 \(\text{no}\) ,那么一定猜较大者,如果 \(x=y\) 就相当于随便猜一个,把 \((x, y)\) 用坐标表示,把所有在这种决策下猜对的边用蓝色表示,走过这样一条边就相当于有 \(1\) 的贡献,然后会发现从 \((0,0)\) 到 \((n,m)\) 的所有路径经过的蓝色的边的数量都是相同的 \(\max(n,m)\) 条,也就是说只需要考虑每次在 \((x=y)\) 时的决策的贡献之和就好了。

这个东西就是经过这个点的路径方案数乘上 \(\dfrac{1}{2}\) ,组合数搞搞就好了

code

/*program by mangoyang*/
#pragma GCC optimize("Ofast", "inline")
#include <bits/stdc++.h>
#define inf (0x7f7f7f7f)
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
typedef long long ll;
using namespace std;
template <class T>
inline void read(T &x){
int f = 0, ch = 0; x = 0;
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;
for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - 48;
if(f) x = -x;
}
const int N = 1000005, mod = 998244353;
ll js[1000005], inv[1000005], n, m, ans;
inline ll Pow(ll a, ll b){
ll ans = 1;
for(; b; b >>= 1, a = a * a % mod)
if(b & 1) ans = ans * a % mod;
return ans;
}
inline ll C(ll x, ll y){ return js[x] * inv[y] % mod * inv[x-y] % mod; }
int main(){
read(n), read(m);
if(n > m) swap(n, m);
js[0] = inv[0] = 1;
for(int i = 1; i < N; i++)
js[i] = 1ll * js[i-1] * i % mod, inv[i] = Pow(js[i], mod - 2);
for(int i = 1; i <= n; i++)
(ans += C(n + m - 2 * i, m - i) * C(2 * i, i) % mod) %= mod;
cout << ((m + ans * inv[2] % mod * Pow(C(n + m, n), mod - 2) % mod) % mod + mod) % mod << endl;
}

最新文章

  1. ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程
  2. 2016ACM/ICPC亚洲区大连站-重现赛
  3. Django中的CSRF
  4. JQuery实用技巧--学会你也是大神(1)——插件的制作技巧
  5. 关闭 Activity 关闭方式 finish(), exit(), killProcess(), restartPackage()(转载)
  6. asp.net mvc Html.BeginForm()及Html.Action用法
  7. 【学习笔记】tensorflow实现一个简单的线性回归
  8. Iterate over slices of a string
  9. Hadoop组件
  10. Python函数之匿名函数
  11. golang 的glide包管理使用技巧教程
  12. 12.2、多线程通信:queue
  13. AOP如何在业务结束时,根据参入参数和返回结果添加日志
  14. Win7如何解决telnet不是内部或外部命令的方案!
  15. React跨域
  16. hdu 6299 Balanced Sequence(贪心)题解
  17. 手动开发PHP模板引擎 一 (35)
  18. Additinal Dependencies和#pragma comment(lib,&quot;*.lib&quot;)的分析
  19. 魅族MX4的线控电路图
  20. Python title() 方法

热门文章

  1. 15、BigDecimal类简介
  2. 【方法】jQuery无插件实现 鼠标拖动切换图片/内容 功能
  3. UNIX环境高级编程 第10章 信号
  4. 加密文件之Java改进版
  5. 一步一步搭建 oracle 11gR2 rac + dg 之前传 (一)【转】
  6. python 元组分组并排序
  7. .net 下的集合
  8. BigDecimal常用方法
  9. 【笔记】Python简明教程
  10. C#基础系列 - 抽象类及其方法的学习