AGC036C GP 2
由于近期集训做的一直都是校内题 然后好久都怎么写题了(
发篇博客证明我还活着 (其实也没人关心
好像并不是很难的一道计数 就是脑子总是缺一块导致会做不出来(
首先我们可以分析性质
1.$\sum A_i = 3m$ 显然
2.$\sum A_i \&1 <= m$ 考虑我们的1 对于一个位置上有2个1我们可以将其合并看成2 所以显然不会有超过m个奇数
3.$max(A_i)<=2m$ 因为一次操作最多能使一个数+2 依旧显然
得到了3个显然的结论 我们依旧不会做这个题
我们先考虑前两种限制 这个比较好解决 我们可以枚举奇数的个数 另$F(n,m,k)$表示一共n个数和为m有不超过k个奇数
根据插板法 我们可以得到柿子 $F(n,m,k)=\sum_{i=0}^{max(n,k)}C(n,i)*C((m-i)/2+n-1,n-1)$ 应该比较好理解
我们继续考虑最后一个限制 可以想到>2m的数不会超过1个 我们可以钦定$a_1>2m$最后乘上n即可 然后让$a_1 = a_1 - 2m$
然后我们的限制就变成了 前两个限制+$a_1>0$ 接着继续处理$a_1>0$
我们发现我们可以直接让$n=n-1$钦定$a_1=0$ 然后就是只考虑前两种限制了 相减就好了
最后的答案就是 $F(n,3m,m)-n(F(n,m,m)-F(n-1,m,m))$
然后这里的复杂度上界其实是预处理$O(n+m)$
计数什么的还是好神仙啊。
//Love and Freedom.
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdio>
#define ll long long
#define inf 20021225
#define mdn 998244353
#define N 3000001
using namespace std;
int read()
{
int s=,f=; char ch=getchar();
while(ch<'' || ch>'') {if(ch=='-') f=-;ch=getchar();}
while(ch>='' && ch<='') s=s*+ch-'',ch=getchar();
return f*s;
}
int fac[N],inv[N];
void upd(int &x,int y){x+=x+y>=mdn?y-mdn:y;}
int ksm(int bs,int mi)
{
int ans=;
while(mi)
{
if(mi&) ans=1ll*ans*bs%mdn;
bs=1ll*bs*bs%mdn; mi>>=;
}
return ans;
}
void init(int n)
{
fac[]=;
for(int i=;i<=n;i++) fac[i]=1ll*fac[i-]*i%mdn;
inv[n]=ksm(fac[n],mdn-);
for(int i=n;i;i--) inv[i-]=1ll*inv[i]*i%mdn;
}
int C(int n,int m)
{
if(n<m) return ;
return 1ll*fac[n]*inv[n-m]%mdn*inv[m]%mdn;
}
int F(int n,int m,int k)
{
int top=min(n,k),ans=;
for(int i=;i<=top;i++) if(!((m-i)&) && m>=i)
upd(ans,1ll*C(n,i)*C(n-+(m-i)/,n-)%mdn);
return ans;
}
int main()
{
int n=read(),m=read(); init(n+*m);
int ans=F(n,m*,m)-1ll*(F(n,m,m)-F(n-,m,m)+mdn)%mdn*n%mdn;
printf("%d\n",(ans+mdn)%mdn);
return ;
}
AGC036C
AGC036C GP 2的更多相关文章
- 【组合数学】AGC036C - GP 2
找性质的能力不行 Problem Statement We have a sequence of $N$ integers: $x=(x_0,x_1,\cdots,x_{N−1})$. Initial ...
- AtCoder AGC036C GP 2 (组合计数)
题目链接 https://atcoder.jp/contests/agc036/tasks/agc036_c 题解 终于有时间补agc036的题了. 这题其实不难的来着--我太菜了考场上没想出来 首先 ...
- 【atcoder】GP 2 [agc036C]
题目传送门:https://atcoder.jp/contests/agc036/tasks/agc036_c 题目大意:给你一个长度为$N$初始全0的序列,每次操作你可以找两个不同的元素,一个自增1 ...
- ae GP制作缓冲区分析
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { // ...
- AE开发实现GP工具IDW
IDW——空间插值 IDW(Inverse Distance Weighted)是一种常用而简便的空间插值方法,它以插值点与样本点间的距离为权重进行加权平均,离插值点越近的样本点赋予的权重越大. 设平 ...
- ArcGIS10.1 发布气温插值GP服务
首先通过ModelBuilder 工具 构建模型 然后通过模块右键 设置输入参数 或者直接将一个模块设为输入参数 在输出模块的右键属性上 可以设置lyr文件用于渲染 设置数据添加到显示用于不是发布的时 ...
- AE调用GP工具的方法(转)
第一,首先要明确自己需要调用arctoolbox里面的什么工具,实现什么样的功能. 第二,按照需求看看在arctoolbox工具中是怎么实现功能的,然后确定需要的数据源. 第三,编写command或t ...
- GP 环境参数名称列表
Using environment settings In this topic About using environment settings Environment settings summa ...
- GP调用arctoolbox 以Clip为例
GP的功能非常强大,也是GIS建模的一个很重要的工具.在Arcengine中,实现Clip功能很多种方法,可以用IBasicGeoprocessor的clip方法,但是GP无疑是最简单的. publi ...
随机推荐
- Oracle JET(三)Oracle JET 响应布局
Oracle JET 提供了一系列的 CSS 样式以直接使用. Oracle JET CSS样式链接:http://docs.oracle.com/middleware/jet310/jet/refe ...
- jmeter的日常特殊参数化
1.map转译符号: 如果///Mobile///:///18888888888/// 需要再参数化请这样做,////Mobile////://///${Mobile}///// 2.in ...
- log4j.properties 输出指定类日志
比如,我只要众多日志中,红色框的日志,则可以指定类:com.dangdang.ddframe.rdb.sharding.parser.SQLParserFactory 修改配置文件: 再次输出结果为:
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_3_字符输出流_Writer类&FileWriter类
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第1节 Scanner类_4-练习一_键盘输入两个数
导包语句其实不用我们自己去写, 选中后回车会自动的导入包 java.util 如果没有导入进来也可以,光标在关键字那里,ALT+回车 也会自动导入包 运行看一下结果:程序其实还有可以优化的地方 先输入 ...
- R语言平均值,中位数和众数
R语言平均值,中位数和众数 R中的统计分析通过使用许多内置函数来执行的.这些函数大部分是R基础包的一部分.这些函数将R向量与参数一起作为输入,并在执行计算后给出结果. 我们在本章中讨论的是如何求平均值 ...
- c# WPF——创建带有图标的TreeView
1.使用数据模板对TreeViewItem进行更改 2.xaml中重写TreeviewItem的控件模板 3.继承TreeViewItem(TreeView中的元素),后台进行控件重写.(介绍此方法) ...
- C#之委托(一)
1,什么是委托 简单来说,就是代码在恰当的时间执行一段操作.代码不需要操作的细节.举个例子,遗嘱为例.一般来说遗嘱是在某人去世之前写好,然后把它放发到一个安全的地方,去世之后然后律师会执行遗嘱中的指令 ...
- codeforces#1215E. Marbles(状压DP)
题目大意:给出一个由N个整数组成的序列,通过每次交换相邻的两个数,使这个序列的每个相同的数都相邻.求最小的交换次数. 比如给出序列:1 2 3 2 1 ,那么最终序列应该是 1 1 2 2 3 ,最小 ...
- 安全运维 - Windows系统应急响应
挖矿病毒应急 传播方式: 通过社工.钓鱼方式下载和运行了挖矿程序(邮件.IM等) 利用计算机系统远程代码执行漏洞下载.上传和执行挖矿程序. 利用i算计Web或第三方软件漏洞获取计算机权限,然后下载和执 ...