http://acm.hdu.edu.cn/showproblem.php?pid=6638

题意:给你一些点的权值,让找一个矩形圈住一部分点,问圈住点的最大权值和

分析:由于是稀疏图,明显要先把x,y坐标离散化,暴力是n^3?(枚举边界n^2,求和是n)显然过不了,那可以枚举y的边界,然后对于x就是最大子段和的问题了,用线段树维护,n^2logn可以过。

 #include<bits/stdc++.h>
using namespace std;
const int maxn = 4e3+;
const int inf = 0x3f3f3f;
typedef pair<int,int> P;
typedef long long ll;
int cas,n;
struct point{
int x,y,val;
bool operator<(const point &a) const{
return y<a.y;
}
}a[maxn];
vector<int> p[maxn];
int bx[maxn],by[maxn]; struct node{
ll sum,lmax,rmax,lrmax;
}tree[maxn<<]; inline void pushup(int rt){
tree[rt].sum = tree[rt<<].sum+tree[rt<<|].sum;
tree[rt].lmax = max(tree[rt<<].lmax,tree[rt<<].sum+tree[rt<<|].lmax);
tree[rt].rmax = max(tree[rt<<|].rmax,tree[rt<<].rmax+tree[rt<<|].sum);
tree[rt].lrmax = max(max(tree[rt<<].lrmax,tree[rt<<|].lrmax),tree[rt<<].rmax+tree[rt<<|].lmax);
} inline void update(int L,int l,int r,int rt,int c){
if(l==r){
tree[rt].sum += 1ll*c;
tree[rt].lrmax = tree[rt].lmax = tree[rt].rmax = tree[rt].sum;
return;
}
int mid = l+r>>;
if(L<=mid) update(L,l,mid,rt<<,c);
else update(L,mid+,r,rt<<|,c);
pushup(rt);
} int main(){
cin>>cas;
while(cas--){
cin>>n;
for(int i=;i<=n;i++){
cin>>a[i].x>>a[i].y>>a[i].val;
bx[i] = a[i].x,by[i] = a[i].y;
}
sort(bx+,bx++n);
int xlen = unique(bx+,bx++n)-bx-;
sort(by+,by++n);
int ylen = unique(by+,by++n)-by-;
for(int i=;i<=n;i++){
a[i].x = lower_bound(bx+,bx+xlen+,a[i].x)-bx;
a[i].y = lower_bound(by+,by+ylen+,a[i].y)-by;
}
sort(a+,a++n);
ll ans = ;
for(int i=;i<=ylen;i++){
memset(tree,,(xlen*+)*sizeof(node));
int pos = ;
while(a[pos].y<i&&pos<=n) pos++;
for(int j=i;j<=ylen;j++){
while(a[pos].y<=j&&pos<=n){
update(a[pos].x,,xlen,,a[pos].val);
pos++;
}
ans = max(ans,tree[].lrmax);
} }
cout<<ans<<endl;
}
return ;
}

2019杭电多校6 hdu6638 Snowy Smile(二维最大矩阵和 线段树)的更多相关文章

  1. 2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)

    K-th Closest Distance 题目传送门 解题思路 二分答案+主席树 先建主席树,然后二分答案mid,在l和r的区间内查询[p-mid, p+mid]的范围内的数的个数,如果大于k则说明 ...

  2. 2019杭电多校第六场hdu6638 Snowy Smile(线段树+枚举)

    Snowy Smile 题目传送门 解题思路 先把y离散化,然后把点按照x的大小进行排序,我们枚举每一种x作为上边界,然后再枚举其对应的每一种下边界.按照这种顺序插入点,这是一个压维的操作,即在线段树 ...

  3. [2019杭电多校第六场][hdu6638]Snowy Smile(维护区间最大子段和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意为在一个平面上任意选择一个长方形,使得长方形内点权和最大. 因为长方形可以任意选择,所以上下 ...

  4. 2019杭电多校&CCPC网络赛&大一总结

    多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...

  5. 2019杭电多校第一场hdu6581 Vacation

    Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也 ...

  6. 2019杭电多校第二场hdu6601 Keen On Everything But Triangle

    Keen On Everything But Triangle 题目传送门 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大--直到找到连续的三个数可以构成一个三角形.因为对于 ...

  7. 2019杭电多校第二场hdu6602 Longest Subarray(线段树)

    Longest Subarray 题目传送门 解题思路 本题求一个最大的子区间,满足区间内的数字要么出现次数大于等于k次,要么没出现过.给定区间内的数字范围是1~c. 如果r为右边界,对于一种数字x, ...

  8. Rikka with Game[技巧]----2019 杭电多校第九场:1005

      Rikka with Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Othe ...

  9. 2019杭电多校 hdu6662 Acesrc and Travel (树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻 ...

随机推荐

  1. springBoot数据校验与统一异常处理

    概念 异常,在程序中经常发生,如果发生异常怎样给用户一个良好的反馈体验就是我们需要处理的问题.以前处理异常信息,经常都是给前端一个统一的响应,如数据错误,程序崩溃等等.没办法指出哪里出错了,这是一种对 ...

  2. 模拟器无Back、Menu等键

    问题如图所示: 解决方法: 1. 打开Android Virtual Device (AVD) Manager --> 选择模拟器,并点击edit --> 勾选KeyBoard中的选项,并 ...

  3. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  4. ElasticSearch6.x版本聚合分析整理

    ElasticSearch6.x版本聚合分析整理 ES将聚合分析主要分为如下4类 Bucket,分桶类型,类似SQL中的GROUP BY语法 Metric,指标分析类型,如计算最大值 , 最小值,平均 ...

  5. Java equal() 和 == 详细分析

    1 ==  返回值是true/false; (1) 基本数据类型比较的就是值(2)引用型数据类型就是地址值 public class Test1 { public static void main(S ...

  6. CentOS 7.3下使用YUM 安装MySQL5.6

    1.检查Linux系统中是否已安装 MySQL rpm -qa | grep mysql 返回空值的话,就说明没有安装 MySQL 注意:在新版本的CentOS7中,默认的数据库已更新为了Mariad ...

  7. 理解分布式一致性与Raft算法

    理解分布式一致性与Raft算法 永远绕不开的CAP定理 出于可用性及负载方面考虑,一个分布式系统中数据必然不会只存在于一台机器,一致性简单地说就是分布式系统中的各个部分保持数据一致 但让数据保持一致往 ...

  8. Spring aop 影响本地事务的回滚总结

    1  @Before   不会,因为还没执行到service的业务逻辑 2  @ After    默认情况下,报错会影响事务回滚., 当设置@Order属性并设置值优先级大小, 即使报错也不会回滚了 ...

  9. java随笔之接口

    /* * 接口大致上可以分为:哑接口,抽象接口,接口类 * 哑接口:就是public,protected(注意protect有包权限,只有本包才开放接口)方法 * 抽象接口:就是哑接口变为抽象方法,在 ...

  10. American daily English notes (enlarged edition): A review

    Life English is the most pragmatic kind of English when one wants to associate with foreigner friend ...