首页 > 其他分享 >AGC021E ball Eat chamelemons

AGC021E ball Eat chamelemons

时间:2023-06-25 21:01:11浏览次数:57  
标签:ball 红球 int 变色龙 蓝球 AGC021E invf Eat MOD

E - Ball Eat Chameleons

设颜色序列中有\(R\)个红球,\(B\)个蓝球,且有\(B+R=k\)

然后分类讨论:

  • \(R<B\) 无解

  • \(R>B\)

这时有一种合法方案为:\(R-B\)只变色龙只用吃一个红球,剩下的\(n-(R-B)\)只变色龙吃的红球和蓝球的数量相等且最后吃的那个球是蓝球

对于\(n-(R-B)\)只变色龙,称它们为\(bsl\),有一种极端情况:若第\(i\)只变色龙要吃\(x_i\)个蓝球,\(x_i\)个红球,那么所有\(bsl\)一起先吃了对应的\(x_i-1\)个蓝球,再一起吃了对应的\(x_i\)个红球,最后再一起吃一个蓝球(这里的一起不是指的同时,而是指的这些操作都是相邻的)

这时,在操作期间,设当前所有变色龙吃了的红球数量为\(r\),蓝球数量为\(b\),那么有:

\[\max(b-r)=B-(n-(R-B))=R-n \]

所以,我们就可以将操作抽象为从\((0,0)\)开始,每次可以移动一个单位向量\((0,1)\)或\((1,0)\),求从\((0,0)\)移动到\((R,B)\)且不经过\(y=x+(R-n+1)\)的方案数

因为\(y=x+(R-n)\)是合法的,所以要\(+1\)

于是就是经典的翻折,答案为总方案数减去将终点关于直线对称后的新的终点的方案数

\[C_{R+B}^R-C_{R+B}^{2R-n+1} \]

将点\((a,b)\)关于直线\(y=x+T\)对称后的点为\((b-T,a+T)\)

  • \(R=B\)

这时,所有的变色龙都吃了相等数量的红球和蓝球,且最后一个吃的是蓝球,所以这时的颜色序列的最后一个颜色一定为蓝色

所以,若我们去掉颜色序列的最后一个蓝球,就又变成了:\(k-1\)个球,且有\(R>B(R=B+1)\)

所以我们只需要枚举\(R\)即可
复杂度\(O(K)\)

#include<bits/stdc++.h>
using namespace std;
const int MOD=998244353,N=5e5+5;
int n,k,ans;
int jc[N],invf[N];
int power(int x,int y){
	int ans=1;
	for(;y;y>>=1,x=1ll*x*x%MOD) if(y&1) ans=1ll*ans*x%MOD;
	return ans;
}
void Init(){
	jc[0]=1;
	for(int i=1;i<=k;++i) jc[i]=1ll*jc[i-1]*i%MOD;
	invf[k]=power(jc[k],MOD-2);
	for(int i=k-1;i>=0;--i) invf[i]=1ll*invf[i+1]*(i+1)%MOD;
}
int C(int n,int m){
	if(m>n) return 0;
	return 1ll*jc[n]*invf[n-m]%MOD*invf[m]%MOD;
}
int main(){
	scanf("%d%d",&n,&k);
	if(k<n) return printf("0"),0;
	Init();
	for(int r=k+1>>1,b;r<=k;++r){
		b=k-r;
		if(b==r) --b;
		ans=(1ll*ans+((1ll*C(r+b,r)-1ll*C(r+b,(r<<1)-n+1))%MOD+MOD)%MOD)%MOD;
	}
	printf("%d",ans);

	return 0;
}

标签:ball,红球,int,变色龙,蓝球,AGC021E,invf,Eat,MOD
From: https://www.cnblogs.com/LuoyuSitfitw/p/17503946.html

相关文章

  • 首个国人主导的开源数据集成工具!揭秘 Apache 顶级项目 SeaTunnel 背后的故事
    “未来十年,世界的开源要看中国。”在CSDN《开源访谈录》的采访中,Apache孵化器导师、ApacheSeaTunnelPMCMember&Mentor代立冬说下了这样的一句话,从他在Apache孵化器里看到的项目来看,由来自中国的开发者主导的开源项目比重越来越大。代立冬本人与“侠之大者”的郭炜一起,......
  • SeaTunnel 发布成为 Apache 顶级项目后首个版本 2.3.2,进一步提高 Zeta 引擎稳定性和易
    近日,ApacheSeaTunnel正式发布2.3.2版本。此时距离上一版本2.3.1发布已有两个多月,期间我们收集并根据用户和开发者的反馈,在2.3.2版本中对SeaTunnelZetaEngine进行了Bug修复,提高了引擎的稳定性和使用效率。此外,新版本还对Connector-V2中的连接器进行了功能和性......
  • git提交规范 fix,feat等字段含义
    以下是commit提交规范,主要是在提交代码时标识本次提交的属性 feat:新功能(feature)fix:修补bugdocs:文档(documentation)style:格式(不影响代码运行的变动)refactor:重构(即不是新增功能,也不是修改bug的代码变动)chore:构建过程或辅助工具的变动revert:撤销,版本回退perf:......
  • Oracle 安装报SGA size can not be greater than maximum shared memory segment size
    问题现象:问题分析:        从问题现象上来看可以比较清晰的看出是因为系统的内核参数调整问题,导致无法分配正确的内存给SGA;那么这种情况通常是由于我们的/etc/sysctl.conf中配置的内存信息和实际内存信息不符合导致。 我们的物理内存的大小为2G,swap内存的大小为4G;[root@d......
  • create-react-app 除了NODE_ENV如何区分环境变量
    比如webpack打包的时候,可能要打包到测试环境或者生产环境,但是这时候NODE_ENV的值都是production,这个时候如何区分呢。答案是:cross-env和webpack.DefinePlugin1.定义环境变量到编译环境:测试环境: cross-envNODE_STAGE=testnpmrunbuild预上线: cross-envNODE_STAGE=s......
  • AGC021E Ball Eat Chameleons 题解
    本文网址:https://www.cnblogs.com/zsc985246/p/17501300.html,转载请注明出处。传送门AGC021EBallEatChameleons题目翻译有\(n\)只变色龙,一开始都是蓝色。你会依次扔出\(k\)个球,每次扔出都要指定一只变色龙吃掉这个球。扔出的球可以是红色或蓝色。变色龙从蓝色变成红......
  • PANDACU: second hand luxury bag and wallet bags designer used leather branded ba
    PANDACUisareputablewholesalesupplierspecializinginsecond-handluxurybagsandwallets.Theyofferawideselectionofdesignerusedleatherbags,includingbrandedoptions.Withafocusonprovidinghigh-qualityproducts,PANDACUcaterstoretaile......
  • Freertos学习01-Task Creat & Delete
    一、Freertos介绍FreeRTOS是一个开源的实时操作系统内核,它是由英国的RealTimeEngineersLtd.开发的。它提供了一些基本的内核功能,如任务管理、时间管理、信号量、队列和软件定时器等,可以帮助开发人员更容易地构建嵌入式系统。FreeRTOS是一个非常流行的实时操作系统内核,因为它是......
  • 部署filebeat
    以UAT10.200.1.68为例:1.上传压缩包 filebeat-7.16.2-linux-x86_64.tar.gz 2.解压 filebeat-7.16.2-linux-x86_64.tar.gzcd/home/middleware3tar-zxvf filebeat-7.16.2-linux-x86_64.tar.gz-C/home/middleware3/3、手动改名 4、原有的配置文件备份,上传自己的配......
  • Ubuntu提示【Authentication is required to create a color profile/managed device
    1.安装vimaptinstallvim-y2.修改文件 vim/etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla3.粘贴以下内容[AllowColordallUsers]Identity=unix-user:*Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-......