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

题解:先把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. TensorFlow基础11-(小批量梯度下降法和梯度下降法的优化)
  2. 修复boot分区文件被删除的方法
  3. 关于 Angular 应用 tsconfig.json 中的 lib 属性
  4. SAP Fiori:why my filter by titleID does not work
  5. 【python】用正则表达式进行文字局部替换
  6. matlab安装程序无法启动jvm_天呀!JVM居然还有2两种运行模式
  7. 《BI项目笔记》数据源视图设置
  8. SAP链接外部数据库的实现方法
  9. [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用...
  10. 靠社交和游戏两张牌,腾讯还能活多久? | 畅言
  11. 吴恩达深度学习笔记 3.1~3.11 浅层神经网络
  12. a - 数据结构实验之串一:kmp简单应用_数据结构(C语言版)_笔记_3
  13. 【渝粤教育】广东开放大学 生产与运作管理 形成性考核 (36)
  14. 如何成为一名卓越的数据科学家——第一剑之再谈问题定义
  15. 计算机英语词汇_通信人必备英语词汇大全
  16. 字符与ascii的互转
  17. PLSQL提交带有模板的报表的方法
  18. ‘’vr‘’全景抓鸡游戏总结
  19. 前端架构师的YY定义
  20. AIO600 IPPBX电话交换机对接联通移动IMS服务器

热门文章

  1. GGB0/OB28/OKC7/GGB1/OBBH/OKC9FICO增强
  2. Linux基础操作命令
  3. DataSource
  4. Mac共享主机网络给虚拟机
  5. Spring之DI依赖注入
  6. 优秀工程师应该具备哪些素质_工程师应具备的素养有哪些
  7. 配置CKFinder(Java版)
  8. python编写摇骰子游戏_python摇骰子猜大小的小游戏
  9. 设置局域网内共享磁盘
  10. TTime::FormatL 详解