CF1204E (dp+数学)
时间:2019-08-21
本文章向大家介绍CF1204E (dp+数学),主要包括CF1204E (dp+数学)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
比赛的时候一直在想枚举一个最大值然后算有多少个排列的最大值为枚举的值
并且膜数还看错了
于是GG
我现在才知道可以一起考虑的……还是菜……
考虑\(dp[i][j]\)表示有\(i\)个\(1\),\(j\)个\(-1\)时的答案
显然它可以从\(dp[i-1][j]\)和\(dp[i][j-1]\)转移过来
在\(dp[i-1][j]\)表示的序列开头加一个\(1\),最大前缀和也会+1。而这样的序列一共有\(C^{i+j-1}_j\)种,所以\(dp[i-1][j]\)对\(dp[i][j]\)的贡献为\(C^{i+j-1}_j\)
同理,在\(dp[i][j-1]\)表示的序列开头加一个\(-1\),最大前缀和也会\(-1\)……貌似并不是,只有最大前缀和\(>0\)时才有得减
考虑算最大前缀和\(=0\)的方案数,设\(k[i][j]\)表示有\(i\)个\(1\),\(j\)个\(-1\)时,最大前缀和为0的方案数。当\(i>j\)时,\(k[i][j]=0\),当\(i=0\)时有\(k[i][j]=1\)。其他情况有\(k[i][j]=k[i-1][j]+k[i][j-1]\),因为\(i-1< j\),所以在末尾加一个\(1\),最大前缀和不变。
代码:
#include <bits/stdc++.h>
#define N 2010
#define mod 998244853
#define For(i,x,y) for(int i=(x);i<=(y);++i)
#define Rof(i,x,y) for(int i=(x);i>=(y);--i)
using namespace std;
int C[N<<1][N<<1],dp[N][N],k[N][N];
inline int add(int x,int y){ return x+y>=mod?x+y-mod:x+y; }
inline int mns(int x,int y){ return x-y<0?x-y+mod:x-y; }
int main(){
int n,m;
scanf("%d%d",&n,&m);
For(i,0,n+m){
C[i][0]=1;
For(j,1,i) C[i][j]=add(C[i-1][j],C[i-1][j-1]);
}
For(i,1,m) k[0][i]=1;
For(i,1,n) For(j,i,m) k[i][j]=add(k[i-1][j],k[i][j-1]);
For(i,1,n) dp[i][0]=i;
For(i,1,n)
For(j,1,m)
dp[i][j]=add(add(dp[i-1][j],C[i+j-1][j]),mns(dp[i][j-1],mns(C[i+j-1][i],k[i][j-1])));
cout<<dp[n][m];
}
原文地址:https://www.cnblogs.com/PsychicBoom/p/11391572.html
- 如何通过css控制内容显示顺序 第二行的内容优先显示
- 杨廷琨 - 用SQL解析神奇的扑克牌魔术
- Spring boot with Spring security
- Spring RestFul and RestTemplate
- Spring boot with Velocity template
- Oracle 11g R2 RAC 高可用连接特性 – SCAN 详解
- Spring boot · 链接池配置
- Linux下命令行图片格式转换
- 用SQL解一道有趣的数学题:Gauss和Poincare
- OpenSSL 转换证书格式
- 电子邮件服务器DKIM配置
- 自相矛盾:一个进程可以自成死锁么?
- 数据库安全·开发加密插件
- wordpress无法安装这个包。: PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'C:WINDOWSTEMP/wordpress-4.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发笔记(一百七十三)给安装包APK文件瘦身
- 从 1 到 0 构建博客项目(1) -- 操作系统篇(1)
- Spring JPA 定义查询方法
- 代理工厂的简单应用
- iOS逆向之文件系统
- Kettle构建Hadoop ETL实践(四):建立ETL示例模型
- Java并发总篇
- 逻辑漏洞之密码找回漏洞(semcms)
- 逻辑漏洞之越权、支付漏洞
- 多线程基础(二): Thread源码分析
- JeecgBoot环境搭建及前后端项目启动
- Windows下MySQL 8.x和8.x以前版本的安装步骤
- Confluence 6 移动应用 app 管理员需要考虑什么
- leetcode链表之反转链表
- Prometheus监控神器-Kubernetes篇(一)