题目链接:HDU - 6638


枚举x的范围,然后对y做一个区间最大连续子段和即可。

但是要注意处理相同x的情况。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=2e3+10;
typedef long long LL;
int n,m; LL res;
struct node{int x,y,w;}q[N];
struct seg{LL ls,rs,s,mx;}t[N<<2],c;
vector<int> v;
#define mid (l+r>>1)
inline seg merge(seg a,seg b){c.s=a.s+b.s; c.mx=max(max(a.mx,b.mx),a.rs+b.ls);c.ls=max(a.ls,a.s+b.ls),c.rs=max(b.rs,b.s+a.rs);return c;
}
void build(int p,int l,int r){if(l==r){t[p].ls=t[p].rs=t[p].s=t[p].mx=0; return ;}build(p<<1,l,mid),build(p<<1|1,mid+1,r);t[p]=merge(t[p<<1],t[p<<1|1]);
}
void change(int p,int l,int r,int x,int v){if(l==r){t[p].s+=v,t[p].mx+=v,t[p].ls+=v,t[p].rs+=v; return ;}if(x<=mid)   change(p<<1,l,mid,x,v);else   change(p<<1|1,mid+1,r,x,v);t[p]=merge(t[p<<1],t[p<<1|1]);
}
inline void solve(){cin>>n;   v.clear(); res=0;for(int i=1;i<=n;i++)  scanf("%d %d %d",&q[i].x,&q[i].y,&q[i].w),v.push_back(q[i].y);sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end()); m=v.size();for(int i=1;i<=n;i++)   q[i].y=lower_bound(v.begin(),v.end(),q[i].y)-v.begin()+1;sort(q+1,q+1+n,[](node a,node b){return a.x<b.x;});for(int i=1;i<=n;i++){build(1,1,m);for(int j=i;j<=n;j++){change(1,1,m,q[j].y,q[j].w);while(q[j+1].x==q[j].x)   j++,change(1,1,m,q[j].y,q[j].w);res=max(res,t[1].mx);}while(q[i].x==q[i+1].x) i++;}printf("%lld\n",res);
}
signed main(){int T; cin>>T; while(T--) solve();return 0;
}

HDU - 6638相关推荐

  1. HDU 6638二维扫描线+二维最大子段和+离线

    Snowy Smile HDU - 6638 题解看这位大佬,讲的很详细了. 传送门 反思: 本题做的时候,已经想到二维子段和了,但不知怎么维护. 看了题解,原来要用线段树,之后暴力算答案. 先只看纵 ...

  2. HDU 6638 [2019 Multi-University Training Contest 6]

    Snowy Smile Problem Description There are n pirate chests buried in Byteland, labeled by 1,2,-,n. Th ...

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

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

  4. 杭电多校(六)2019.08.07--暑假集训

    [HDU 6634] UNSOLVED [HDU 6634] UNSOLVED [HDU 6636] UNSOLVED [HDU 6637] UNSOLVED [HDU 6638] UNSOLVED ...

  5. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  6. hdu 4389 囧,打表

    http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...

  7. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  8. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  9. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  10. hdu 1312 Red and Black 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...

最新文章

  1. Mybatis的工作原理,你了解过吗?
  2. 过拟合曲线与早期停止法
  3. x=x|(x+1);和x=x(x-1)?
  4. adb提取安装的apk
  5. ACL 2020 | 知识库问答的多跳复杂问题查询图生成
  6. IOS OC项目的单例模式
  7. 工作312:uni-弹出框显示数据
  8. ios 计算两个时间相差秒数_Ios中时间差的计算,NSData与NSCalendar(日历)对象
  9. int long long 的范围
  10. AutoLISP恢复系统变量到默认值
  11. 胶囊碰撞体(CapsuleCollider)
  12. MySQL数据库检查修复详解
  13. CF1041F Ray in the tube
  14. 二级c语言考试怎么调试程序,计算机二级C语言考试具体内容及分值
  15. oracle写存储过程ssm中调用存储过程
  16. “撤县设市”の利与弊
  17. 2022年湖南省自考考试幼儿园教育活动设计与组织练习题及答案
  18. 【前端学习】前端学习第二天:图片标签、音频标签及视频标签的用法说明
  19. go和python优缺点_我为什么放弃了 Python ,选择了 Go?
  20. navicat怎么备份数据和同步两个数据库

热门文章

  1. vin端口是什么意思_这些问题你都答不上,还好意思说自己学过网络?
  2. Spring Cloud Bus-用法和意义
  3. 网络原理考点之无线网络应用层协议
  4. 职业生涯必备——程序员“黑话”指南
  5. shiny改写服务器文件,Shiny生产环境部署与共享
  6. 定义一个三角形的类来进行一些操作
  7. 手机参数中的4+64G到底是什么?
  8. 引用网页链接的BibTEX格式
  9. GF系列卫星分辨率介绍
  10. linux编译openssl报错,cargo编译musl报错openssl