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. jenkins下使用python虚拟环境

    jenkins下使用python虚拟环境碰到的一些坑: 1. 构建使用window批处理 - 坑1 c: cd c:\xxxxx\xxxxx\scripts activate c: cd c:\xxx ...

  2. nginx 之负载均衡 :PHP session 跨多台服务器配置

    公司一个项目单点压力越来越大,考虑到稳定性和降压,使用nginx做负载均衡,将请求分发到多个docker上去,这里记录下PHP多服务器间的会话session共享问题,解决方案是把session单独存在 ...

  3. js的位运算(其它语言也通用)

    左移运算符(<<) 该运算符有2个运算数,a<<b,将a左移相当于a乘以2的b次方,2个运算符要求是整数,或可以转换成整数的. 如:1<<2 =4 "1& ...

  4. go interface衍生的插件化处理

    在设计程序的许多应用场景中我们会遇到大体分为三个阶段的任务流. 第一.入口 一个或多个入口,等待阻塞的.或者主动请求方式的. ============================== 比如任务流需 ...

  5. C#下载文件,Stream 和 byte[] 之间的转换

    stream byte 等各类转换 http://www.cnblogs.com/warioland/archive/2012/03/06/2381355.html using (System.Net ...

  6. window下打jar包

    比如我的项目在 F/Myjar F:\Myjar>ll'll' 不是内部或外部命令,也不是可运行的程序或批处理文件. F:\Myjar>cd mian系统找不到指定的路径. F:\Myja ...

  7. xpath定位的一些方法

  8. vue面试题整理vuejs基础知识整理

    初级参考 1.v-show 与 v-if 区别 v-show 是css隐藏,v-if是直接销毁和创建,所以频繁切换的适合用v-show 2.计算属性和 watch 的区别 计算属性是自动监听依赖值的变 ...

  9. 分享我的GD32F450的IAP过程

    最近一个项目使用GD32F450VI+ESP8266需要做远程升级,基本参考正点原子IAP的那一章节,但是在GD32F450上却遇到了问题,无法跳转,然后使用正点原子的开发板stm32f429,以及s ...

  10. (16)ASP.NET Core 通用主机(HostBuilder)

    1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生命周期管理.通用主机用于无法处理HTTP请求的应用程序.通用主机的用途是将HTTP管道从Web主机AP ...