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. 【MySQL】目录、文件权限问题

    详情如下: $ cat /usr/local/mysql/data/Phoenix-slow.log cat: /usr/local/mysql/data/Phoenix-slow.log: Perm ...

  2. Could not link: /usr/local/etc/bash_completion.d/brew

    用终端 brew update 或 brew install ** 时遇到的问题,详细如下: Error: Could not link: /usr/local/etc/bash_completion ...

  3. mule发布调用webservice

    mule发布webservice 使用mule esb消息总线发布和调用webservice都非常精简,mule包装了所有操作,你只需要拖控件配置就可以,下面讲解mule发布: 1.下面是flow,h ...

  4. JavaSE之——并没有多维数组

     近日在读<疯狂Java讲义>精粹第二版,部分语述摘自其中,自己边敲边理解 前言       我们知道,Java语言支持的类型有两种:            1.基本类型(即八大基本数据类 ...

  5. 如何选择合适的SSL证书类型

    网站安装SSL证书就可以将http升级为https加密模式,网站安装SSL证书因此成为一种趋势.如何为网站选择适合的SSL证书类型呢? SSL证书类型可分为2大类:1)按照验证方式分类2)按照支持域名 ...

  6. vue中使用vue-amap(高德地图)

    因为项目要求调用高德地图,就按照官方文档按部就班的捣鼓,这一路上出了不少问题. 前言: vue-cli,node环境什么的自己安装设置推荐一个博客:https://blog.csdn.net/wula ...

  7. SpringBoot 集成Jedis操作set

    题外话: Redis是个有趣的东西,相信搞java的或多或少都会用到,面试时也总离不开问Redis,之前觉得redis只是用做缓存,飞快!也因为最初在封装底层的时候,使用Redisson,所以大部分都 ...

  8. JVM总结(一)

    JVM总结(1) 1.JVM组成: JVM由类加载器子系统.运行时数据区.执行引擎以及本地方法接口组成. 2.JVM运行原理: Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不 ...

  9. Element UI系列:Upload图片自定义上传

    HTML部分代码 Javascript部分代码 CSS代码 样式部分可以自由调整 主要实现的原理是利用 http-request 的属性对上传进行自定义

  10. 【KakaJSON手册】01_JSON转Model_01_基本用法

    在iOS开发中,后台返回的数据大多是JSON格式,对应地会被网络框架层解析成Swift中的Dictionary.Array.由于数据类型的复杂.字段的繁多,直接使用Dictionary.Array会比 ...