首页 > 其他分享 >Natasha, Sasha and the Prefix Sums

Natasha, Sasha and the Prefix Sums

时间:2024-10-15 21:24:21浏览次数:1  
标签:le ll Sums Sasha Prefix Natasha

Natasha, Sasha and the Prefix Sums

设 \(g(x)\) 表示 \(f(a)=x\) 的个数,那么 \(ans=\sum_{x=\max(0,n-m)}^{n} xg_x\)。

恰好不好求,我们求 \(h(x)\) 表示 \(f(a)\le x\) 的个数,\(g(x)=h(x)-h(x-1)\)。

1 表示向上走,-1 表示向下走,\(h_i\) 就是求从 \((0,0)\) 走到 \((n+m,n-m)\) 且始终 \(cnt(1)-cnt(-1)\le i\),即 \(y\le i\),即不超过直线 \(y=i\)。

\(h_i=\binom{n+m}{n}-\binom{n+m}{i+1+m}\)。

求出 \(h_i\) 再求出 \(g_i\) 进而求出 \(ans\)。

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

Code

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
using namespace std;
typedef long long ll;
const int N=2008,mod=998244853;
int n,m;
ll jc[N<<3];
void init(int n){
	jc[0]=1;
	for(int i=1;i<=n;i++){
		jc[i]=jc[i-1]*i%mod;
	}
}
ll ksm(ll a,ll b){
	ll s=1;
	while(b){
		if(b&1){
			s=s*a%mod;
		}
		a=a*a%mod;
		b>>=1;
	}
	return s;
}
ll C(ll n,ll m){
//	if(m<0||n<m) return 0;
	return jc[n]*ksm(jc[n-m]*jc[m]%mod,mod-2)%mod;
}
//ll h(ll x,ll y){
//	return C(x,((x+y)/2>=0&&(x+y)/2<=x?(x+y)/2:(x-y)/2));
//}
ll g[N],f[N];
ll get_g(ll k){
//	if(k<n-m){
//		return 0;
//	}
	return (C(n+m,m)-C(n+m,m+k+1)+mod)%mod;
//	return (h(n+m,n-m)-h(n+m,2*k+2-(n-m))+mod)%mod;
}
ll ans;
void add(ll &a,ll b){
	a=(a+b)%mod;
}
int main(){
//	freopen("shuju.txt","r",stdin);
//	freopen("my.out","w",stdout);
	sf("%d%d",&n,&m);
	init(N<<2);
	for(int i=max(1,n-m)-1;i<=n;i++){
		g[i]=get_g(i);
	}
	for(int i=max(1,n-m);i<=n;i++){
		f[i]=(g[i]-g[i-1]+mod)%mod;
		add(ans,i*f[i]%mod);
	}
	pf("%lld\n",ans);
}

标签:le,ll,Sums,Sasha,Prefix,Natasha
From: https://www.cnblogs.com/liyixin0514/p/18468490

相关文章

  • 洛谷题单指南-字符串-P1470 [USACO2.3] 最长前缀 Longest Prefix
    原题链接:https://www.luogu.com.cn/problem/P1470题意解读:求s最长前缀长度,使得可以拆解成p集合中的字符串解题思路:动态规划:设s字符串下标从1开始,p集合用set<string>保存所有的元素状态表示:设f[i]表示前i个字符s[0~i-1]是否能拆解成p中的元素状态计算:对于j=i-1开始往后倒......
  • Prefix of Suffixes
    为什么求Z函数的过程又被称为【扩展KMP】呢?因为KMP算法是可以求出哪些后缀能与前缀完全匹配的,而Z函数则对于那些不能完全匹配的后缀,求出了最大的匹配长度现在你已经将问题转化为:在未被标记的后缀中,快速锁定当前新增的字符会使得哪些后缀失配“未被标记”太抽象了,回溯这个条件—......
  • CF2013E prefix gcd
    给n个数,随意排序,所有前缀的gcd的和的最小值。只想到gcd变化是log次的,所以枚举每个作为开头,然后找让gcd变小的接上。可是这样是\(O(n^2)\).注意,最小的数要放最前面。假设\(x,a_1,a_2....\)和\(a_1,a_2,x...\).(x是最小的)我们有\(x+gcd(a_1,x)\leqa_1\),因为gcd的求法是\(a_......
  • nvm下载node版本Could not retrieve https://nodejs.org/dist/latest/SHASUMS256.txt.
    1.使用nvm安装node版本的时候报错Couldnotretrievehttps://nodejs.org/dist/latest/SHASUMS256.txt.Get"https://nodejs.org/dist/latest/SHASUMS256.txt":dialtcp104.20.22.46:443:i/otimeout原因:可能是远程连接被关闭的问题,这是由于国内网络限制导致的,解决办法:找到sett......
  • CF1810G The Maximum Prefix 题解
    Description构造一个长度最多为\(n\)的数组\(a\),其每个元素均为\(1\)或\(-1\)。生成方式如下:选择任意整数\(k\in[1,n]\)作为\(a\)的长度。对于\(\foralli\in[1,k]\),有\(p_i\)的概率设\(a_i=1\),有\(1-p_i\)的概率设\(a_i=-1\)。在数列被生成后,计算\(s_i=a......
  • 题解:SP3109 STRLCP - Longest Common Prefix
    三倍经验:UVA11996JewelMagicP4036[JSOI2008]火星人题意维护一个字符串\(S\),支持以下操作:\(Q\i\j\):输出\(\operatorname{LCP}(S[i\dotsl],S[j\dotsl])\)\(R\i\char\):用\(char\)替换\(S\)的第\(i\)个字符\(I\i\char\):在\(S\)的第\(i\)......
  • TCPIP路由技术第一卷 第三大部分-5 Prefix-list和扩展ACL
    r1:routerripredistribute-listprefix1outs1/1ipprefix-list1permit44.1.1.0/24ipprefix-listnamepermit172.16.0.0/22ge24le24/22前缀22bit相同ge24掩码范围最小24位.当没有ge(172.16.0.0/22),掩码范围最小值跟前缀相同le24(172.16.0.0/22le24)掩码范......
  • Strings, Subsequences, Reversed Subsequences, Prefixes
    题目大意给定两个字符串s和t,求出在s里面有多少个本质不同的子序列,使得该序列的前缀包含t,且该序列的反串也包含t即s的子序列=t+x+反t‘首先要确定是否有,就是判断我的S字符串中有没有包含T字符串for(l=0;l<n;l++){ if(s[l]==t[num])num++; if(num==m)bre......
  • Mybatis-Plus中的@TableName 和 table-prefix
    简介本文介绍Mybatis-Plus中的@TableName和table-prefix的使用。介绍在MyBatis-Plus中,@TableName注解和table-prefix配置都可以用来指定表名,但它们的作用方式略有不同。table-prefix配置table-prefix是一个全局配置,它会自动在所有表名前添加指定的前缀,这个配置对于......
  • P1466 [USACO2.2] 集合 Subset Sums
    题目描述对于从\(1\simn\)的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果\(n=3\),对于\(\{1,2,3\}\)能划分成两个子集合,每个子集合的所有数字和是相等的:\(\{3\}\)和\(\{1,2\}\)是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不......