3997: [TJOI2015]组合数学

题意:\(n*m:\ n \le 1000\)网格图,每个格子有权值。每次从左上角出发,只能向下或右走。经过一个格子权值-1.至少从左上角出发几次所有权值为0。


容易发现偏序关系

\[x_1 \le x_2, y_1 \le y_2
\]

最少链数=最长反链大小

但是本题每个元素有权值

容易发现,最少链数=最大权值反链的权值

然后我沙茶的写了一个\(O(n^4)\)的DP就T掉了

怒写二维树状数组,A了

其他人怎么辣么快啊,然后发现直接

  1. f[i][j] = max(f[i+1][j-1] + a[i][j], max(f[i][j-1], f[i+1][j]))

这样DP就行了...

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5. #include <cmath>
  6. using namespace std;
  7. typedef long long ll;
  8. const int N=1005;
  9. inline int read() {
  10. char c=getchar(); int x=0, f=1;
  11. while(c<'0' || c>'9') {if(c=='-')f=-1; c=getchar();}
  12. while(c>='0' && c<='9') {x=x*10+c-'0'; c=getchar();}
  13. return x*f;
  14. }
  15. int n, m, a[N][N];
  16. namespace bit {
  17. ll c[N][N];
  18. inline void add(int x, int y, ll d) { //printf("-----------d %lld\n",d);
  19. for(int i=x; i; i-=i&-i)
  20. for(int j=y; j<=m; j+=j&-j) c[i][j] = max(c[i][j], d);
  21. }
  22. inline ll cal(int x, int y) {
  23. if(x<1 || x>n || y<1 || y>m) return 0;
  24. ll ans = 0;
  25. for(int i=x; i<=n; i+=i&-i)
  26. for(int j=y; j; j-=j&-j) ans = max(ans, c[i][j]);// printf("c %d %d %lld ans %lld\n", i, j, c[i][j], max(ans, c[i][j]));
  27. return ans;
  28. }
  29. }
  30. int main() {
  31. //freopen("in", "r", stdin);
  32. int T=read();
  33. while(T--) {
  34. n=read(); m=read();
  35. for(int i=1; i<=n; i++)
  36. for(int j=1; j<=m; j++) a[i][j] = read(), bit::c[i][j] = 0;
  37. ll ans=0;
  38. for(int i=n; i>=1; i--)
  39. for(int j=1; j<=m; j++) {
  40. ll now = bit::cal(i+1, j-1) + a[i][j];
  41. bit::add(i, j, now);
  42. ans = max(ans, now);
  43. }
  44. printf("%lld\n", ans);
  45. }
  46. }

BZOJ 3997: [TJOI2015]组合数学 [偏序关系 DP]的更多相关文章

  1. bzoj 3997 [TJOI2015]组合数学(DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3997 [题意] 给定一个nm的长方形,每次只能使经过格子权值减1,每次只能向右向下,问 ...

  2. 【BZOJ 3997】 3997: [TJOI2015]组合数学 (DP| 最小链覆盖=最大点独立集)

    3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 919  Solved: 664 Description 给出 ...

  3. BZOJ 3997 [TJOI2015]组合数学(单调DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3997 [题目大意] 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右 ...

  4. BZOJ 3997 TJOI2015 组合数学

    分析一下样例就可以知道,求的实际上是从左下角到右上角的最长路 因为对于任意不在这个最长路的上的点,都可以通过经过最长路上的点的路径将这个点的价值减光 (可以用反证法证明) 之后就是一个非常NOIP的D ...

  5. 3997: [TJOI2015]组合数学

    3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 247  Solved: 174[Submit][Status ...

  6. 组合数学 - BZOJ 3997 - TJOI2015

    TJOI2015 Problem's Link ---------------------------------------------------------------------------- ...

  7. 【BZOJ】3997: [TJOI2015]组合数学

    题意 \(N \times M\)的网格,一开始在\((1, 1)\)每次可以向下和向右走,每经过一个有数字的点最多能将数字减1,最终走到\((N, M)\).问至少要走多少次才能将数字全部变为\(0 ...

  8. BZOJ3997: [TJOI2015]组合数学(网络流)

    3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 405  Solved: 284[Submit][Status ...

  9. 【BZOJ3997】[TJOI2015]组合数学(动态规划)

    [BZOJ3997][TJOI2015]组合数学(动态规划) 题面 BZOJ 洛谷 题解 相当妙的一道题目.不看题解我只会暴力网络流 先考虑要求的是一个什么东西,我们把每个点按照\(a[i][j]\) ...

随机推荐

  1. hdu_1014(竟然真的还有更水的)

    注意输出就没了... #include<cstdio> #include<cstring> using namespace std; int gcd(int a, int b) ...

  2. Android源码博文集锦3

    Android精选源码 android实现最简洁的标签(label/tag)选择/展示控件   懂得智能配色的ImageView,还能给自己设置多彩的阴影哦   NicePhoto-基于 Kotlin ...

  3. POJ 1797 Heavy Transportation(Dijkstra变形——最长路径最小权值)

    题目链接: http://poj.org/problem?id=1797 Background Hugo Heavy is happy. After the breakdown of the Carg ...

  4. UIScrollerview的contentsize设置

    最近被同行的一个朋友问到一个问题"UIScrollerview上添加子控件,给子控件约束好布局之后,还需要给scrollerview重新设置contentsize吗?"于是想到了我 ...

  5. 如何使用cmd打开磁盘目录和文件

    在windows操作系统中拥有命令行工具(cmd).cmd具有强大的功能,这里我就和大家介绍一下怎么使用cmd命令打开文件. 工具/原料 cmd命令行 打开cmd 1 在windows操作系统中按住w ...

  6. OpenGL+OpenCV实现立方体贴图

    我屮艸芔茻,转眼就7月份了. 今天试了一下立方体贴图,比较简单,大概说下和平面贴图的区别. 1. 平面贴图需要的是纹理坐标vec2:立方体贴图需要的是一个方向向量vec3,长度没有关系,重要的是方向, ...

  7. Java之IO流学习总结【上】

    一.什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件.内存.IO设备等数据的流向. ...

  8. java.lang.reflect.InvocationTargetException

    java.lang.reflect.InvocationTargetException是什么情况?java.lang.reflect.InvocationTargetExceptionat sun.r ...

  9. 全新的软件项目,好的开始决定了成功一半!(需求&计划)

    刚看完“无问西东”,电影里说人总归还是要留下些足迹(文字)的,那么赶紧跑图书馆来留下些文字. 最近去瑞士启动了一个新的项目,那么早上做项目,晚上总结留下了一张张思维导图来记录当时的感受, 手稿如下,字 ...

  10. c# winform 类似android toast消息功能

    先看下效果: 支持动画,支持声音,支持定时自动关闭 使用方法: var notifycation = new Notification("My Notification", &qu ...