做法一

\(O(nm)\)

考虑\(f(i,j)\)为i个+1,j个-1的贡献

  • \(f(i-1,j)\)考虑往序列首添加一个\(1\),则贡献\(1\times\)为序列的个数:\(C(j+i-1,i-1)\)

  • \(f(i,j-1)\)考虑首添加一个\(-1\),则贡献为\(-1\times\)最大前缀和不为\(0\)的个数,考虑序列个数减掉为\(0\)的个数

设\(k(i,j)\)为\(0\)的个数

\(i=0:k(i,j)=1\)

\(j=0或i>j:k(i,j)=0\)

\(i\le:k(i,j)=k(i-1,j)+k(i,j-1)\),理解:把\(1\)放在最后面,把\(-1\)放在最前面,一定可以构成

做法二

\(O(n+m)\)

考虑\(f(i)\)表示最大子序列为\(i\)的个数,则答案为\(\sum\limits_{i=1}^{n}i\times f(i)\)

考虑\(g(i)\)为最大子序列大于等于\(i\)的个数,显然\(max(n-m,0)\le i\le n\)

抽象到方格:长\(n\)高\(m\)的矩形,往上走相当于\(-1\),往右走相当于\(+1\),最大前缀和至少为\(i\),则路线需要经过\(y=x-i\)

  • \(0\le i\le n-m:C(n+m,n)\)

  • \(n-m<i\le n\):考虑\((0,0)\)对\(y=x-i\)对称,则为\((i,-i)\)到\((n,m)\)的方案数,转换为以下问题,为\(C(n+m,m+k)\)

已知未知数个数,系数均为\(1\),和为给定值,未知数非负个数解

Code

#include<bits/stdc++.h>
typedef long long LL;
const LL maxn=1e4+9,mod=998244853;
LL n,m,ans;
LL fac[maxn],fav[maxn],g[maxn];
inline LL Pow(LL base,LL b){
LL ret(1);
while(b){
if(b&1) ret=base*ret%mod;
base=base*base%mod; b>>=1;
}
return ret;
}
inline void Pre(LL N){
fac[0]=1;
for(LL i=1;i<=N;++i) fac[i]=fac[i-1]*i%mod;
// puts("133");
fav[N]=Pow(fac[N],mod-2);
for(LL i=N;i>=1;--i) fav[i-1]=fav[i]*i%mod;
}
inline LL C(LL N,LL M){
return fac[N]*fav[M]%mod*fav[N-M]%mod;
}
inline LL Solve(LL k){
if(k<=n-m) return C(n+m,m);
return C(n+m,m+k);
}
int main(){
scanf("%lld%lld",&n,&m);
Pre(n+m);
// puts("233");
for(LL i=1;i<=n;++i) g[i]=Solve(i); g[n+1]=0;
for(LL i=1;i<=n;++i){
ans=(ans+i*((g[i]-g[i+1]+mod)%mod)%mod)%mod;
}
printf("%lld\n",ans);
return 0;
}

CF1204E Natasha, Sasha and the Prefix Sums(组合数学)的更多相关文章

  1. CodeForces - 1204E Natasha, Sasha and the Prefix Sums (组合数学,卡特兰数扩展)

    题意:求n个1,m个-1组成的所有序列中,最大前缀之和. 首先引出这样一个问题:使用n个左括号和m个右括号,组成的合法的括号匹配(每个右括号都有对应的左括号和它匹配)的数目是多少? 1.当n=m时,显 ...

  2. [CF1204E]Natasha,Sasha and the Prefix Sums 题解

    前言 本文中的排列指由n个1, m个-1构成的序列中的一种. 题目这么长不吐槽了,但是这确实是一道好题. 题解 DP题话不多说,直接状态/变量/转移. 状态 我们定义f表示"最大prefix ...

  3. CF1204E Natasha, Sasha and the Prefix Sums (卡塔兰数推理)

    题面 题解 把题意变换一下,从(0,0)走到(n,m),每次只能网右或往上走,所以假设最大前缀和为f(n),那么走的时候就要到达但不超过 y = x-f(n) 这条线, 我们可以枚举答案,然后乘上方案 ...

  4. CodeForces 1204E"Natasha, Sasha and the Prefix Sums"(动态规划 or 组合数学--卡特兰数的应用)

    传送门 •参考资料 [1]:CF1204E Natasha, Sasha and the Prefix Sums(动态规划+组合数) •题意 由 n 个 1 和 m 个 -1 组成的 $C_{n+m} ...

  5. E. Natasha, Sasha and the Prefix Sums

    http://codeforces.com/contest/1204/problem/E 给定n个 1 m个 -1的全排 求所有排列的$f(a) = max(0,max_{1≤i≤l} \sum_{j ...

  6. Codeforces Round #581 (Div. 2)-E. Natasha, Sasha and the Prefix Sums-动态规划+组合数学

    Codeforces Round #581 (Div. 2)-E. Natasha, Sasha and the Prefix Sums-动态规划+组合数学 [Problem Description] ...

  7. 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query

    A non-empty zero-indexed string S is given. String S consists of N characters from the set of upper- ...

  8. 【题解】【数组】【Prefix Sums】【Codility】Passing Cars

    A non-empty zero-indexed array A consisting of N integers is given. The consecutive elements of arra ...

  9. Codeforces 837F Prefix Sums

    Prefix Sums 在 n >= 4时候直接暴力. n <= 4的时候二分加矩阵快速幂去check #include<bits/stdc++.h> #define LL l ...

随机推荐

  1. kubernetes第五章--创建资源的两种方式

  2. Swift枚举的全用法

    鉴于昨天开会部门会议讨论的时候,发现有些朋友对枚举的用法还是存在一些疑问,所以就写下这个文章,介绍下Swift下的枚举的用法. 基本的枚举类型 来,二话不说,我们先贴一个最基本的枚举: enum Mo ...

  3. Jmeter学习笔记(十四)——逻辑控制器

    一.逻辑控制器简单介绍 Jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序.放在逻辑控制器下面的所有的采样器都会当做一个 ...

  4. linux设备模型与内核中的面向对象思想

    linux内核用C语言实现了C++面向对象的大部分特性:封装,继承,多态.在看内核的过程中,开始追寻其中的设计思想,封装.继承.多态.恰好今天又在看Linux设备模型,找了很多资料.总结如下: 1.l ...

  5. SpringBoot学习<一>——快速搭建SpringBoot

    这是我的第一篇博客,博客记录我以后的学习,包括一些总结之类的东西,当然,这些记录是针对于与我个人而言的,可能有些地方会有不好的,或者出现错误,欢迎大家来指正(如果有人看的话)废话不多说.进入正题:Sp ...

  6. javascript_17-基本类型和引用类型

    基本类型 直接存储值 Number . String .Boolean undefined.null 引用类型 存储引用 -Object.Array.Date.函数 包装基本类型--引用类型 func ...

  7. angularcli 第一篇(新建、组件、模块)

    1.新建并启动项目: 1.安装: npminstall -g @angular/cli 2.新建: ng new mytest 3.进入项目:cd mytest 4.启动: ng serve 5.打开 ...

  8. CDH构建大数据平台-使用自建的镜像地址安装Cloudera Manager

    CDH构建大数据平台-使用自建的镜像地址安装Cloudera Manager 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.搭建CM私有仓库 详情请参考我的笔记: http ...

  9. 大量javascript代码的项目如何改善可维护性

    项目中有点javascript文件,javascript代码行数达到7000多行,维护很费力,主要体现在以下几个方面: 1,方法没有注释,没有注释方法的作用,从上到下罗列,很难知道这个方法应该啥时候调 ...

  10. mysql开发相关

    1.mysql事务原理,特性,事务并发控制2.如何解决高并发场景下的插入重复3.乐观锁和悲观锁4.常用数据库引擎之间区别5.mysql索引6.B-Tree7.mysql索引类型8.什么时候创建索引9. ...