题意:散落一些点,有正负价值,框一个矩形,使得矩形中的价值总和最大

题解:先把y离散化,之后x排序后依次插入点,枚举每一种不同的x坐标作为上边界,枚举下边界,线段树更新最大子段和

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<list>
#include<math.h>
#include<vector>
#include<stack>
#include<string>
#include<stdio.h>using namespace std;
typedef long long LL;
const int MAXN = 2e3 + 10;const int maxn=5e4 + 10;struct T{LL x,y,w;T(){}T(LL x,LL y,LL w) : x(x),y(y),w(w){}
}a[MAXN];struct Segtree{int l,r;LL lx,rx,mx,sum;
}st[MAXN << 2];bool cmp(T a,T b)
{return a.x < b.x;
}
LL b[MAXN];void pushup(int o)
{st[o].sum = st[o << 1].sum + st[o << 1 | 1].sum;st[o].lx = max(st[o << 1].lx,st[o << 1].sum + st[o << 1 | 1].lx);st[o].rx = max(st[o << 1 | 1].rx,st[o << 1 | 1].sum + st[o << 1].rx);st[o].mx = max(max(st[o << 1].mx,st[o << 1 | 1].mx),st[o << 1].rx + st[o << 1 | 1].lx);
}
void build(int o,int l,int r)
{st[o].l = l; st[o].r = r;st[o].sum = st[o].mx = st[o].lx = st[o].rx = 0;if(l == r){return;}int m = (l + r) >> 1;build(o << 1, l, m);build(o << 1 | 1, m + 1, r);
}
void insert(int o,int x,int w)
{if(st[o].l == st[o].r){st[o].sum = st[o].lx = st[o].rx = st[o].mx = st[o].mx + w;return;}int m = (st[o].l + st[o].r) >> 1;if(x <= m) insert(o << 1,x,w);else insert(o << 1 | 1,x,w);pushup(o);
}
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i = 1; i <= n; i++){LL x,y,w;scanf("%lld %lld %lld",&x,&y,&w);a[i] = T(x,y,w);b[i] = y;}sort(b + 1,b + n + 1);int k = unique(b + 1,b + n + 1) - b - 1;for(int i = 1; i <= n; i++){int y = lower_bound(b + 1,b + k + 1,a[i].y) - b;a[i].y = y;}sort(a + 1,a + n + 1,cmp);LL ans = 0;for(int i = 1; i <= n; i++){if(i != 1 && a[i].x == a[i - 1].x)continue;build(1,1,k);for(int j = i; j <= n; j++){if(j != i && a[j].x != a[j - 1].x)ans = max(ans,st[1].mx);insert(1,a[j].y,a[j].w);}ans = max(ans,st[1].mx);}cout << ans << endl;}
}

转载于:https://www.cnblogs.com/smallhester/p/11319701.html

2019杭电多校 Snowy Smile hdu6638 (线段树最大子段和)相关推荐

  1. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  2. 【2019杭电多校训练赛】HDU6681 / 1002-Rikka with Cake 题解(扫描线)

    [2019杭电多校训练赛]HDU6681 / 1002-Rikka with Cake 题解 题意 思路 代码 题目来自于:HDU6681 Rikka with Cake 题意 题目的大意是给定你一个 ...

  3. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  4. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  5. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  6. 2019杭电多校第一场 Operation HDU - 6579

    题意:给出一个序列,两种操作,求区间[l,r]的区间最大异或和,和在末尾添加一个数 思路:强制在线,保存每个线性基的数值,接下去直接去搜第r个线性基,但要保持时间比l要大,新增了一个pos数组代表一个 ...

  7. 2019杭电多校第九场 Rikka with Cake (hdu6681)

    题意:给出一个n * m的蛋糕,切 k 刀,每次从一个点(x,y)向 上下左右的一个方向切,问最后蛋糕被切成了几块 题解:显然,蛋糕的块数就是那么多线段的交点数 + 1.先离散,考虑向左切和向上切的, ...

  8. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  9. 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)

    题目链接 题解: 用威尔逊定理变换,然后求逆元. 代码: #include <bits/stdc++.h> using namespace std; typedef long long l ...

  10. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

最新文章

  1. 数十名工程师作战5天,阿里达摩院连夜研发智能疫情机器人
  2. 谷歌开发者大会杀出技术黑马,知乎AI终于不再隐藏实力了
  3. TFS 无法签入或自动签出 解决方法 【强制撤销签出无效】
  4. 微信路况会不会超越地图导航?
  5. oracle pl/sql 基础
  6. 记,NSProxy需要实现哪些方法?
  7. linux screen 命令是 ssh 的有效补充
  8. 【经典算法】——KMP,深入讲解next数组的求解
  9. asp.net控件开发学习(1)
  10. Linux系统(二)常用命令、进程管理
  11. 宋体、代码-iOS网络编程实践--NSStream实现TCP Socket iPhone客户端-by小雨
  12. 回归预测的评价指标(附python代码)
  13. Cadence PSpice 基于代码生成仿真模型
  14. Ubuntu下ssh安装、配置及使用
  15. OTT广告系统设计与实现
  16. APM直升机调试记录
  17. verilog:part select
  18. Linux学习笔记-随即更新-慢速学习
  19. ospf理论概述.md
  20. respond.php,phpcms v9宽字节注入【phpcms/modules/pay/respond.php】

热门文章

  1. 蓝桥杯嵌入式总结(KEY配置_按键扫描(三行代码)_矩阵按键_GPIO口输入和输出类型)
  2. 一张图了解致远A6人事管理
  3. 2 年前端面试心路历程总结(字节跳动、YY、虎牙、BIGO)
  4. CDN中加速域名和源站地址和回源HOST是什么,应该怎么填
  5. 计算机音乐吧粉刷匠,奥尔夫小班音乐活动:《粉刷匠》
  6. 什么是自适应学习(个性化学习)?
  7. 蓝桥杯java打印菱形_Python基础练习实例22(抽签问题)
  8. 免Root–获取WIFI密码
  9. python 3 5的值_杨桃Python基础教程第5章:Python数据类型(3)列表s[M:n]值,的,三,smn,取值...
  10. win10内存满载测试软件,高手亲自解决win10内存检测工具的详尽处理步骤