安利系列博文

https://www.cnblogs.com/tyner/p/11565348.html

https://www.cnblogs.com/tyner/p/11605073.html

做个小总结

树状数组二维数点的特征

  1. 矩阵(假设x轴从左到右,y轴从下到上)
  2. 是树状数组可以维护的

能用树状数组的要求 :

  1. 维护的东西要有前缀性(说人话:比如我们平常用它来维护的前缀和,就有前缀性(这不是废话么,
  2. 如果是求任意区间的信息,它要有可减性(因为我们是运用前缀性求得的任意区间)(说人话:我们求区间[l,r]的和,用[1, r]减去[1, l-1]的信息即可

https://www.luogu.org/problem/P3431

可是这题是要维护的是max, 即二维数max,这maxmin一样,都木有可减性

所以树状数组本来是不支持修改和维护max(min)的

但这题的每次修改都只会使原值越来越大(越来越小),所以才可以套用,来维护max(min)

(要是可以改得比原值小,显然就不能用树状数组维护了

(但这个貌似也是只能维护左端点为1的最值。。。

#include<cstdio>
#include<algorithm>
using namespace std;
int read() {
char ch = getchar(); int f=1, x=0;
while(ch<'0' || ch>'9') {if(ch=='-') f=-1; ch = getchar();}
while(ch>='0' && ch<='9') {x = x*10+ch-'0'; ch = getchar();}
return x*f;
}
const int MAX = 100000+99;
#define lowbit(x) (x&-x) int n,m,k;
int tot;
long long t[MAX];
long long f[MAX];//f[i]:第i个车站的最大载人数,则f[i] = max(f[j]) + v[i], a[j].x∈[1, a[i].x]//注意可以等于a[i].x
struct node{
int xx, x, y, v;
}a[MAX];
bool cmp1(node a, node bb) {
return a.xx < bb.xx;
}
bool cmp2(node a, node bb) {
return (a.y<bb.y) || (a.y==bb.y && a.x<bb.x);
} long long query(int x) {
long long mx = 0;
while(x) mx=max(mx, t[x]), x-=lowbit(x);//.........
return mx;
}
void add(int x, long long v) {//单点修改
while(x <= tot) t[x] = max(t[x], v), x+=lowbit(x);//.....想想树状数组的结构
} int main() {
n=read(), m=read(), k=read();
for(int i = 1; i <= k; i++) a[i].xx=read(), a[i].y=read(), a[i].v=read();
sort(a+1, a+1+k, cmp1);
tot = 1;
a[1].x = 1;
for(int i = 2; i <= k; i++) {
if(a[i].xx != a[i-1].xx) ++tot;
a[i].x = tot;
}
sort(a+1, a+1+k, cmp2);
for(int i = 1; i <= k; i++) {
f[i] = query(a[i].x) + a[i].v;
add(a[i].x, f[i]);
}
printf("%lld\n", query(tot));//注意,这还要更新 x = tot直线
}

luoguP3431 [POI2005]AUT-The Bus的更多相关文章

  1. 「BZOJ1537」Aut – The Bus(变形Dp+线段树/树状数组 最优值维护)

    网格图给予我的第一反应就是一个状态 f[i][j] 表示走到第 (i,j) 这个位置的最大价值. 由于只能往下或往右走转移就变得显然了: f[i][j]=max{f[i-1][j], f[i][j-1 ...

  2. bzoj 1537: [POI2005]Aut- The Bus 线段树

    bzoj 1537: [POI2005]Aut- The Bus 先把坐标离散化 设f[i][j]表示从(1,1)走到(i,j)的最优解 这样直接dp::: f[i][j] = max{f[i-1][ ...

  3. BZOJ1537: [POI2005]Aut- The Bus

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 158  Solved: 100[Submit][S ...

  4. BZOJ 1537: [POI2005]Aut- The Bus(dp + BIT)

    对y坐标离散化, 然后按x坐标排序, dp. 一个点(x, y), 设到达这个点接到的最多乘客数为t, 那么t可以用来更新y'>=y的所有点.用树状数组维护最大值. -------------- ...

  5. 树状数组 二维偏序【洛谷P3431】 [POI2005]AUT-The Bus

    P3431 [POI2005]AUT-The Bus Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 ...

  6. 洛谷P3431 [POI2005]AUT-The Bus

    P3431 [POI2005]AUT-The Bus 题目描述 The streets of Byte City form a regular, chessboardlike network - th ...

  7. Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 264[Submit][S ...

  8. 洛谷 P3431:[POI2005]AUT-The Bus(离散化+DP+树状数组)

    题目描述 The streets of Byte City form a regular, chessboardlike network - they are either north-south o ...

  9. bzoj 1537 [POI2005]Aut- The Bus(DP+BIT)

    [题意] 顺序经过k个点,求获得的最大权值和. [思路] 设f[i]表示到第i个点,则有转移式: f[i]=min{ f[j]+w[i] } x[j]<=x[i],y[j]<=y[i] 满 ...

随机推荐

  1. TED演讲积累。

    Passion is not a job,a sport ,or a hobby,it is the full of force of your attention.and energy that y ...

  2. React中条件渲染

    17==> 条件渲染 state初始化一般写在构造器当中 CharShop.js如下 import React, { Component } from "react"; ex ...

  3. Day8 - Python基础8 异常处理、反射、单例模式

    本节内容: 1:异常处理 2:反射 3:单例模式 1.异常处理  1.异常简介 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户 ...

  4. 记MacOs视频mov与mp4格式转换问题解决

    综述 记录了mov转mp4格式的方法 记录了自己是多蠢 问题背景 这学期选修的<工程英语视听说>课,需要提交一段口语考试视频,于是乎: 带着我的大疆Mavic Mini 和iPad Pro ...

  5. typescript里一些有趣的点

    联合类型 在原生的JS里,null和undefined经常会导致BUG的产生, 在ts里,你又想用null,又担心出错的时候 你可以考虑用联合类型,当某值可能为 number或null,你可以声明它的 ...

  6. dva+umi+antd项目从搭建到使用(没有剖验证,不知道在说i什么)

    先创建一个新项目,具体步骤请参考https://www.cnblogs.com/darkbluelove/p/11338309.html 一.添加document.ejs文件(参考文档:https:/ ...

  7. Spring中注解方式实现IOC和AOP

    1.IOC注解 1.1 IOC和DI的注解  IOC: @Component:实现Bean组件的定义 @Repository:用于标注DAO类,功能与@Component作用相当 @Service:用 ...

  8. Java-100天知识进阶-Java内存-知识铺(四)

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. 1.Java内存模型是每个java程序员必须掌握理解的 2.Java内存模型的主要目标 ...

  9. 前端之jquery1

    jquery介绍 jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. ...

  10. Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之四 || Swagger的使用 3.2

    本文梯子 本文3.0版本文章 前言 一.swagger的一般用法 0.设置swagger页面为首页——开发环境 1.设置默认直接首页访问 —— 生产环境 2.为接口添加注释 3.对 Model 也添加 ...