DP好题

题意:

- 给定n,m分别代表你有n个1, m个-1.

- 现在让这些m + n个元素随意组合, 对所有组成序列的前缀和的最大值求和

数据范围: n ≤ 2000 , m ≤ 2000 n \leq 2000, m\leq 2000 n≤2000,m≤2000

>> face <<

前置技能: dp

看到范围之后很容易想到是个dp, 但是想不到状态转移方程, 看了大佬的blog觉得自己又学到了

#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;
#define _rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define _rev(i, a, b) for (int i = (a); i >= (b); --i)
#define _for(i, a, b) for (int i = (a); i < (b); ++i)
#define _rof(i, a, b) for (int i = (a); i > (b); --i)
#define oo 0x3f3f3f3f
#define ll long long
#define db double
#define eps 1e-8
#define bin(x) cout << bitset<10>(x) << endl;
#define what_is(x) cerr << #x << " is " << x << endl;
#define met(a, b) memset(a, b, sizeof(a))
#define all(x) x.begin(), x.end()
#define pii pair<int, int>
const int maxn = 2e3 + 5, mod = 998244853;
int n, m;const int maxm = 4e3 + 5;
ll C[maxm][maxn];
void init()
{_for(i, 0, maxm)C[i][0] = 1;_for(i, 0, maxn)C[i][i] = 1;_for(i, 2, maxm){_for(j, 1, i){C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;}}
}
signed main()
{vector<vector<ll>> dp(n + 1, vector<ll>(m + 1, 0)), p(n + 1, vector<ll>(m + 1, 0));cin >> n >> m;_rep(i, 1, m)p[0][i] = 1;_rep(i, 1, n){_rep(j, 1, m){if (i <= j){p[i][j] = p[i][j - 1] + p[i - 1][j];p[i][j] %= mod;}}}init();_rep(i, 1, n)dp[i][0] = i;_rep(i, 1, n){_rep(j, 1, m){dp[i][j] = max((dp[i - 1][j] + C[j + i - 1][i - 1] + dp[i][j - 1] - C[i + j - 1][j - 1] + p[i][j - 1] + mod) % mod, dp[i][j]);}}cout << dp[n][m] << endl;
}

cf1204E(div2)E相关推荐

  1. #423 Div2 D

    #423 Div2 D 题意 构造一个 n 个节点的树,恰好有 k 个叶子节点 (叶子节点的定义是只与树上的某一个节点存在连边),要求任意两个叶子节点的距离的最大值最小,距离为两个节点间边的数量,输出 ...

  2. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  3. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  4. Codeforces Round#310 div2

    C题:这题说的是套娃,如果做题的时候知道是套娃,那就好理解多了 规则1:套娃A可以放到套娃B里面,当且仅当套娃B没有放在其他套娃里面 规则2:套娃A放在套娃B里面,且套娃B没有放在其他套娃里面,那么可 ...

  5. topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)

    A题,熊孩子测视力,水题,题意就是判断一下两个数对应位不相同的数字有多少个. #include<bits/stdc++.h>using namespace std;class BearCh ...

  6. 【数学】Natasha, Sasha and the Prefix Sums(CF1204E)

    正题 luogu CF1204E 题目大意 给出序列a,由n个1和m个-1组成,设 f 为最大前缀和和0的最大值,问全排列的 f 之和 解题思路 可以问题转换到平面图上,把1看作往上走,-1看作往下走 ...

  7. codeforces#320(div2) D Or Game 贪心

    codeforces#320(div2) D  "Or" Game  贪心 D. "Or" Game time limit per test 2 seconds ...

  8. SRM 542 DIV2

    一道DIV2里面500pt的题目想了3天还是没有想出来,这是什么水平....太菜了,弱爆了,该怎么办呢?怎么样才能成为高手呢? 250pt: 题意:题意很简单,就是说兔子之间的合作问题,每对兔子间有个 ...

  9. 8.6 edu25 ,577#div2 CF补题(二分 ,dp 与 贪心

    两道题 1.edu 25 D. Suitable Replacement 题意:给定字符串s,t,s中'?'字符可以以任何字符替换,问如何替换 可使 替换后的s重新排序与t的匹配次数最多(len_t& ...

最新文章

  1. 【Laravel】连接 sqlite 数据库 Database [xxx] not exist
  2. LIST-PROCESSING命令的使用
  3. 济南计算机学校排名2015,济南高中排名前十名有哪些
  4. hive 查看 job 日志_日均TB级数据,携程支付统一日志框架
  5. windows下 MongoDB 导入json文件
  6. 点击一下就射击的java代码_Java面向对象(6) —— 射击小游戏
  7. 谈一谈软件系统的可用性
  8. unity摄像机带碰撞检测 摄像机碰到带碰撞物体自动拉近
  9. 一篇不大正经的有关素数的小结
  10. 浅析汽车芯片信息安全之安全启动
  11. java源码——计算立体图形的表面积和体积
  12. Payment:支付宝即时到账接口接入教程
  13. 2020 计蒜客蓝桥杯省赛 B 组模拟赛(一)题解4.苹果
  14. 场效应管 - MOSFET
  15. 计算机启动时老是检测,笔记本电脑开机时总是自检怎么办 【详解】
  16. 【深度域自适应】DANN梯度反转层(GRL)理解
  17. Ubuntu 下旋转显示器屏幕
  18. 2021国内十大正规外汇投资理财app平台排行榜
  19. 《c primer plus》第六版|第二章|编程练习答案
  20. 《Java 后端面试经》Java 基础篇

热门文章

  1. 拉格朗日插值法(口胡版)
  2. html网页设计把图片放在边框,网页设计中怎么让一张图片填充满整个画面 ?
  3. GDT与LDT的区别
  4. [转]验证发生前无法调用 Page.IsValid。应在 CausesValidation=True 且已启动回发的控件...
  5. 国际物流跨境电商转运系统是什么
  6. Loadrunner 值Controler 部分功能用法
  7. DjVu 文件格式比PDF格式好!
  8. HTML中属于target属性有,HTML的target属性
  9. NYOJ疯牛【二分】
  10. 记一次数据挖掘:中文语句情绪多标签分类问题