首页 > 其他分享 >CodeForces 1942E Farm Game

CodeForces 1942E Farm Game

时间:2024-04-04 22:22:53浏览次数:21  
标签:typedef 1942E Farm ll long Game return define mod

洛谷传送门

CF 传送门

不妨假设先手的牛在后手的牛左边,右边是对称的。

直接给出结论:先手必败当且仅当全部 \(b_i - a_i\) 为奇数。

证明考虑归纳,首先 \(\forall i \in [1, n], b_i - a_i = 1\) 是必败态,因为先手只能往左退,最后后手会把先手逼到最左边使得它无法动弹。

然后若存在 \(i\) 使得 \(b_i - a_i\) 为偶数,那么先手可以选择这些 \(i\) 然后把这些牛往右移,让后手面对这个 \(b_i - a_i\) 都为奇数的必败的局面。

计数是简单的。考虑数必败态,枚举 \(\sum\limits_{i = 1}^n b_i - a_i - 1 = t\),那么相当于要把其他的空隙分成 \(n + 1\) 份分别插入开头、末尾和第 \(2i\) 和第 \(2i + 1\) 头牛之间,然后对于第 \(2i - 1\) 和第 \(2i\) 的牛之间都要分配偶数个空隙。这些都可以用插板法计算。

时间复杂度 \(O(l)\)。

code
// Problem: E. Farm Game
// Contest: Codeforces - CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!)
// URL: https://codeforces.com/contest/1942/problem/E
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 2000100;
const ll mod = 998244353;

inline ll qpow(ll b, ll p) {
	ll res = 1;
	while (p) {
		if (p & 1) {
			res = res * b % mod;
		}
		b = b * b % mod;
		p >>= 1;
	}
	return res;
}

ll n, m, fac[maxn], ifac[maxn];

inline ll C(ll n, ll m) {
	if (n < m || n < 0 || m < 0) {
		return 0;
	} else {
		return fac[n] * ifac[m] % mod * ifac[n - m] % mod;
	}
}

inline ll F(ll n, ll m) {
	return C(n + m - 1, m - 1);
}

void solve() {
	scanf("%lld%lld", &n, &m);
	fac[0] = 1;
	for (int i = 1; i <= n * 2; ++i) {
		fac[i] = fac[i - 1] * i % mod;
	}
	ifac[n * 2] = qpow(fac[n * 2], mod - 2);
	for (int i = n * 2 - 1; ~i; --i) {
		ifac[i] = ifac[i + 1] * (i + 1) % mod;
	}
	ll ans = 0;
	for (int i = 0; i <= n; i += 2) {
		int s = n - m * 2 - i, t = m + 1;
		ans = (ans + C(s + t - 1, t - 1) * F(i / 2, m)) % mod;
	}
	printf("%lld\n", (C(n, m * 2) - ans + mod) % mod * 2 % mod);
}

int main() {
	int T = 1;
	scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

标签:typedef,1942E,Farm,ll,long,Game,return,define,mod
From: https://www.cnblogs.com/zltzlt-blog/p/18115046

相关文章

  • CodeForces 1942F Farmer John's Favorite Function
    洛谷传送门CF传送门考虑一些复杂度带根号的做法。考虑分块,对于一个块,我们需要处理出一个数经过这个块会变成哪个数。以下假设块长\(\ge10\)(最后一个块块长可能\(<10\),暴力处理即可)。观察这个递推式\(f_i=\left\lfloor\sqrt{f_{i-1}+a_i}\right\rfloor\),发现对于一......
  • 安装Pygame过程中提示错误WARNING: Retrying…ERROR: Exception: Traceback…WARNING:
    安装Pygame过程中提示错误WARNING:Retrying…ERROR:Exception:Traceback…WARNING:Youareusingpipversion解决方案前言Pygame错误错误分析解决方案错误分析结论更新pip安装Pygame前言输入Pygame安装命令pipinstallpygame安装Pygame出错提......
  • [ABC221D] Online games 题解
    [ABC221D]Onlinegames题解思路解析可以发现题目就是单纯区间加和查询每一个值有多少次出现。首先看到区间修改加结束时查询可以想到差分,但是通过\(A_i\le10^9\)发现值域很大没法直接根据值差分。于是想到离散化,将每个点离散下来,统计每两个离散的时间之间在线的人乘上时间......
  • Life on the Farm
    农场生活农场的生活总是在变化。新技术和人们对健康有机饮食的兴趣日益浓厚,对农场的经营方式产生了巨大影响。与此同时,不断增长的人口对农民提出了更多的要求。他们需要找到提高生产水平的方法。过去生产大部分产品的小型家庭农场已在很大程度上被工厂化农场所取代。仍在经营的小......
  • 【题解】Codeforces 1942E - Farm Game
    题目链接:https://codeforces.com/contest/1942/problem/E题目大意:输入一个\(l\)和一个\(n\),其中\((1\leql\leq10^6,2n<=l)\),表示有\(l\)个不同的空位(分别是\([1,l]\))和\(2n\)头完全一样的牛。Alice和Bob分别有\(n\)头牛,并且他们的牛是间隔排列的。每一次......
  • CF1942E Farm Game 题解
    我们先默认第一头牛是John的,另一种情况本质相同,最后答案乘上\(2\)就可以了。先说结论:我们将相邻两头牛配对,那么最终答案即满足至少一对牛间隔了奇数个空位的方案数。证明很简单,分\(3\)种情况讨论:每对牛间都间隔了奇数个空位。那么John开始时让所有牛往右行动,在Nhoj行......
  • Card Game
    这道题目肯定是想办法尽量全部都取正数,所以可以发现如下结论:从第三张牌开始后的正数牌(包括第三张牌)都可以取到至于为什么,可以看官方题解的证明(当然官方题解的做法的正确性我是有一点怀疑的,但是证明确实可以用在证明上述结论上)于是我们考虑\(a_1\)和\(a_2\)如果两者都为正,那就全......
  • 题解:CF1623B Game on Ranges
    题意理解(建议先自己把原题描述看一遍再来看我的理解)有一个集合,这个集合的元素是区间,一开始集合里只有一个元素就是\([1,n]\)的区间,对这个集合我们可以选择其中的一个元素(区间),然后在区间内选一个数d,以\([l,d-1]\)和\([d+1,r]\)这两个区间替换掉我们选择的这个区间(\(l\)和......
  • GAMES01 Geometry
    生活中有许多曲面、曲线需要去表示。这里也有许多表示几何的方法:Implicitalgebraicsurfacelevelsetsdistancefunctions...Explicitpointcloudpolygonmeshsubdivision,NURBS...Implicit表达通常,隐式表达被定义为f(x,y,z)=0,其中f(x,y,z)是一个xyz的关系表达式......
  • pygame制作贪吃蛇
    目录综述制作前的分析面向对象和面向过程对象相关(地图,蛇,食物)地图和墙体的绘制蛇的绘制食物的绘制总结代码游戏的基础(gamebase.py)引用一些基础参数的设置颜色点类(方块元素)文本类游戏主体(snake.py)引用基础参数(其实可以加到gamebase里)一些函数食物生成画图......