二维偏序+树状数组【P3431】[POI2005]AUT-The Bus
Description
Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 到 m编号. 每个路口用两个数(i, j) 表示(1 <= i <= n, 1 <= j <= m). Byte City里有一条公交线, 在某一些路口设置了公交站点. 公交车从 (1, 1) 发车, 在(n, m)结束.公交车只能往北或往东走. 现在有一些乘客在某些站点等车. 公交车司机希望在路线中能接到尽量多的乘客.帮他想想怎么才能接到最多的乘客.
Input
第一行为三个整数\(n,m,k\)
下面\(k\)行给出\(k\)个三元组\((x,y,k)\),表示\((x,y)\)位置有\(k\)个乘客.
Output
一个整数,表示最多能接到的乘客数.
很容易看出,我们的路线是向右上方运动的。
不知道为什么想到了二维偏序.
我们首先对\(y\)排序,离散化.(\(n,m \leq 10^9\))
然后很容易发现,我们的状态转移为
\]
这时候维护当前位置之前的最大值即可.
如何维护呢?用树状数组!
为什么可以用树状数组?
树状数组维护的是一个前缀和,这题不要求我们求区间最大值,而是求前缀最大值,因此可以用.
然后再对横坐标\(x\)排序.
每次操作即可.
代码
#include<cstdio>
#include<cctype>
#include<iostream>
#include<algorithm>
#define R register
using namespace std;
inline void in(int &x)
{
int f=1;x=0;char s=getchar();
while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}
while(isdigit(s)){x=x*10+s-'0';s=getchar();}
x*=f;
}
int n,m,q,tr[100005];
struct cod{int x,y,val;}p[100005];
int now,ans,cnt;
inline bool cpp(const cod&a,const cod&b)
{
return a.y<b.y;
}
inline bool ccp(const cod&a,const cod&b)
{
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
#define lowbit(x) x&-x
inline void add(int x,int y){for(;x<=cnt;x+=lowbit(x))tr[x]=max(tr[x],y);}
inline int query(int x){int res=0;for(;x;x-=lowbit(x))res=max(res,tr[x]);return res;}
int main()
{
in(n),in(m),in(q);
for(R int i=1;i<=q;i++)
in(p[i].x),in(p[i].y),in(p[i].val);
sort(p+1,p+q+1,cpp);
now=p[1].y,p[1].y=++cnt;
for(R int i=2;i<=q;i++)
{
if(p[i].y!=now)
now=p[i].y,p[i].y=++cnt;
else p[i].y=cnt;
}
sort(p+1,p+q+1,ccp);
for(R int i=1,now;i<=q;i++)
{
now=query(p[i].y)+p[i].val;
ans=max(ans,now);
add(p[i].y,now);
}
printf("%d",ans);
}
二维偏序+树状数组【P3431】[POI2005]AUT-The Bus的更多相关文章
- 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- poj3067 二维偏序树状数组
题解是直接对一维升序排列,然后计算有树状数组中比二维小的点即可 但是对二维降序排列为什么不信呢?? /* */ #include<iostream> #include<cstring ...
- 计蒜客 41391.query-二维偏序+树状数组(预处理出来满足情况的gcd) (The Preliminary Contest for ICPC Asia Xuzhou 2019 I.) 2019年徐州网络赛)
query Given a permutation pp of length nn, you are asked to answer mm queries, each query can be rep ...
- 2019-ACM-ICPC-徐州站网络赛- I. query-二维偏序+树状数组
2019-ACM-ICPC-徐州站网络赛- I. query-二维偏序+树状数组 [Problem Description] 给你一个\([1,n]\)的排列,查询\([l,r]\)区间内有多少对 ...
- $[SHOI2007]$ 园丁的烦恼 二维数点/树状数组
\(Sol\) 设一个矩阵的左上角为\((x_1,y_1)\),右下角为\((x_2,y_2)\),\(s_{x,y}\)是到\((1,1)\)二维前缀和,那么这个矩阵的答案显然是\(s_{x_2,y ...
- 【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更 ...
- HDU - 1166 敌兵布阵 方法一:(线段树+单点修改,区间查询和) 方法二:利用树状数组
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况.由于 ...
- 树状数组 二维偏序【洛谷P3431】 [POI2005]AUT-The Bus
P3431 [POI2005]AUT-The Bus Byte City 的街道形成了一个标准的棋盘网络 – 他们要么是北南走向要么就是西东走向. 北南走向的路口从 1 到 n编号, 西东走向的路从1 ...
- BZOJ3262/洛谷P3810 陌上花开 分治 三维偏序 树状数组
原文链接http://www.cnblogs.com/zhouzhendong/p/8672131.html 题目传送门 - BZOJ3262 题目传送门 - 洛谷P3810 题意 有$n$个元素,第 ...
随机推荐
- [洛谷P2602][ZJOI2010]数字计数
题目大意:求区间$[l,r]$中数字$0\sim9$出现个数 题解:数位$DP$ 卡点:无 C++ Code: #include <cstdio> #include <iostrea ...
- Android 多线程: 完全解析线程池ThreadPool原理&使用
目录 1. 简介 2. 工作原理 2.1 核心参数 线程池中有6个核心参数,具体如下 上述6个参数的配置 决定了 线程池的功能,具体设置时机 = 创建 线程池类对象时 传入 ThreadPoolExe ...
- warning LNK4070的解决办法
原文链接地址:http://blog.csdn.net/clever101/article/details/5898073#comments 重命名了一个MFC常规DLL ...
- Substrings Sort string 基本操作
You are given nn strings. Each string consists of lowercase English letters. Rearrange (reorder) the ...
- 开发中常遇到的Python陷阱和注意点
最近使用Python的过程中遇到了一些坑,例如用datetime.datetime.now()这个可变对象作为函数的默认参数,模块循环依赖等等. 在此记录一下,方便以后查询和补充. 避免可变对象作为默 ...
- Virtualization solutions on Linux systems - KVM and VirtualBox
Introduction Virtualization packages are means for users to run various operating systems without &q ...
- 解决设置了background-size: cover; 但是图片在ios下显示不完整的问题
设置 background-size: % 99.9%:
- java类中获取WEB-INF路径
WEB-INF路径 String path = WsTestBOImpl.class.getClass().getResource("/").getPath(); path = p ...
- JRE集成到Tomcat
将jdk集成到tomcat里面(不用客户安装JRE) 或者 tomcat使用指定的jdk_ 给客户安装软件的时候,也许客户不想你在人家机器的环境变量里设置来设置去,那么就要在tomcat里指定要使用的 ...
- centos配置数据源和java环境配置
---恢复内容开始--- 一:前言 今天送走了一位同事,看着别人走勾起了我蠢蠢欲动的心啊,但是我知道,我不能那么的任性,我是men,这几天难得的清闲,所以我就弄一弄linux,昨天把网给配通了,今天配 ...