题意:在二维平面上有一些点 每个点有权值   问怎样选定一个矩形  取这个矩形内部的所有权值  使得权值和最大

比赛的时候没想出来可惜了

一直在想枚举上下边界  但枚举上下边界已经用了n2了   剩下一个log肯定不够

可以只枚举上边界  然后动态枚举下边界

注意更新的时候一定要等到   a[j].x!=a[j-1].x

#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
#define see(x) (cerr<<(#x)<<'='<<(x)<<endl)
#define pb push_back
#define inf 0x3f3f3f3f
#define CLR(A,v)  memset(A,v,sizeof A)
typedef pair<int,int>pii;
//
const int N=2e6+10;#define lson l,m,pos<<1
#define rson m+1,r,pos<<1|1ll lmax[N<<2],rmax[N<<2],t[N<<2],maxans[N<<2];void up(int pos)
{t[pos]=t[pos<<1]+t[pos<<1|1];maxans[pos]=max( max(maxans[pos<<1],maxans[pos<<1|1]),rmax[pos<<1]+lmax[pos<<1|1]  );lmax[pos]=max(lmax[pos<<1],t[pos<<1]+lmax[pos<<1|1]);rmax[pos]=max(rmax[pos<<1|1],t[pos<<1|1]+rmax[pos<<1]);
}
void build(int l,int r,int pos)
{if(l==r){lmax[pos]=rmax[pos]=t[pos]=maxans[pos]=0;return ;  }int m=(l+r)>>1;build(lson);build(rson);up(pos);
}
void upnode(int x,ll v,int l,int r,int pos)
{if(l==r){t[pos]+=v; lmax[pos]=rmax[pos]=maxans[pos]=max(1ll*0,t[pos]);return ;}int m=(l+r)>>1;if(x<=m)upnode(x,v,lson);else upnode(x,v,rson);up(pos);
}
int n,k,b[N],nn;struct node
{int x,y,w;
}a[N];
int main()
{int cas;cin>>cas;while(cas--){scanf("%d",&n);rep(i,1,n){scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);b[++nn]=a[i].y;}sort(b+1,b+1+nn);nn=unique(b+1,b+1+nn)-b-1;rep(i,1,n)a[i].y=lower_bound(b+1,b+1+nn,a[i].y)-b;sort(a+1,a+1+n,[](node a,node b){return a.x<b.x||a.x==b.x&&a.y<b.y;});ll ans=0;rep(i,1,n){if(i!=1&&a[i].x==a[i-1].x)continue;build(1,nn,1);rep(j,i,n){if(j!=i&&a[j].x!=a[j-1].x)ans=max(ans,maxans[1]);upnode(a[j].y,1ll*a[j].w,1,nn,1);}ans=max(ans,maxans[1]);}cout<<ans<<endl;}return 0;
}

View Code

转载于:https://www.cnblogs.com/bxd123/p/11334187.html

Snowy Smile hdu 6638 线段树相关推荐

  1. 2019杭电暑假多校训练 第六场 Snowy Smile HDU - 6638

    很多题解都是简单带过,所以打算自己写一篇,顺便也加深自己理解 前置知识:线段树.线段树维护最大字段和.二维坐标离散化 题解: 1.很容易想到我们需要枚举所有子矩阵来得到一个最大子矩阵,所以我们的任务是 ...

  2. POJ 2777 ZOJ 1610 HDU 1698 --线段树--区间更新

    直接将这3题 放一起了  今天在做线段树的东西 这3个都是区间更新的 查询方式互相不同 反正都可以放到一起吧 直接先上链接了 touch me touch me touch me 关于涉及到区间的修改 ...

  3. hdu 5367(线段树+区间合并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5367 官方题解: 对于求"高山脉"长度,可以利用线段树.树节点中保存左高度连续长度 ...

  4. hdu 5266(线段树+LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5266 解题思路: 考虑dfs序,通过在简单的证明可知L~R的LCA为L ~R 中dfs序较小的那个位置 ...

  5. hdu 5124(线段树区间更新+lazy思想)

    http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:区间覆盖次数问题. 解题思路:线段树水之. #include<iostream> #in ...

  6. HDU - 4578Transformation——线段树+区间加法修改+区间乘法修改+区间置数+区间和查询+区间平方和查询+区间立方和查询

    [题目描述] HDU - 4578Transformation Problem Description Yuanfang is puzzled with the question below: The ...

  7. poj 2777 AND hdu 5316 线段树

    区间染色问题,用线段树可以解决.颜色总类不多,故考虑用二进制数的每一位表示一种颜色,然后父节点的颜色就是孩子节点颜色"或"起来,加上lazy标记,轻松AC. poj 2777: 1 ...

  8. HDU 5238 线段树+数论

    原题:http://acm.hdu.edu.cn/showproblem.php?pid=5238. 题解:给你长度为n的操作序列,和m组操作求每组操作的模29393的值.这道题直接显然是没有前途的, ...

  9. poj 2528 离散化+线段树 hdu 1698 线段树 线段树题目类型一:染色计数 外加离散化

    第一次听到离散化是今年省赛的时候,一道矩形并的题,很水,就两个矩形... 今天再去做线段树已经发现离散化忘得差不多了...水逼的悲哀啊... 先看简单点的hdu 1698 http://acm.hdu ...

  10. HDU 1166(线段树)

    线段树 1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 #define N 200010 ...

最新文章

  1. 万字长文让你看够幂级数
  2. 可变悬挂与空气悬挂的区别_可变悬架和空气悬架的的区别是什么
  3. 生活感悟 2018-06-13
  4. 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
  5. 基于VC的OPC客户端软件研究与实现
  6. linux help命令编写,Linux shell命令帮助格式详解
  7. 广度优先搜索(BFS)——抓住那头牛(POJ 4001)
  8. 在winform中,禁止combobox随着鼠标一起滑动!
  9. 循环链表(约瑟夫环问题)
  10. 用DataFormatString格式化GridView 【转】
  11. FindFirstFile和FindNextFile
  12. Dagger2 知识梳理(3) 使用 dependencies 和 @SubComponent 完成依赖注入
  13. 转自weiphone]在美做开发多年,写给国内apple开发新手的一些心得,无教程
  14. abaqus6.14安装教程 如何设置中文
  15. Pycharm生成决策树
  16. 什么IT项目可以兼职在学校做
  17. 【2019.11.27】EM算法详细推导
  18. 新型前端学习成长计划路线规划
  19. C语言程序设计教程习题和答案-C语言期末复习必看资料
  20. 常用页面代码html

热门文章

  1. 小米root以及面具的使用
  2. 记录每日习题(35)
  3. 小技巧分享:电脑屏幕亮度怎么调?
  4. npm publish 报错 403
  5. linux与测试程序下载,Linux测试上行和下载速率
  6. 两张ID卡,完美消除互相干扰合二为一,实现“一卡”正反两用。
  7. Clonezilla克隆还原系统
  8. 天空卫士与电子科技大学持续合作,助力数据安全人才培养
  9. 万年历黄历星座查询v3.6.9引流吸粉 实用工具 流量变现小程序
  10. 计算机二进制除法除数为0,怎么做二进制数的除法运算