把点的y轴值离散化一下,假如离散完有Y个数字,那从1到Y,假设每一个数值当成矩形的下边界,然后在开一个循环,当下边界为1时,上边界为1 . 2 . 3 . 4 … Y,假设下边界为2时,上边界为 2 . 3 . 4 … Y。以此类推,每次对于上下边界的假设用线段树求一次最大字段和,建树用的值就是在上下边界内在同一个y轴上的x的和,共有X个,离散化x轴的值可得X,然后记录最大值。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <algorithm>
typedef long long ll;
using namespace std;
const ll mod=998244353;
const int maxn=1e5+100;int sy[maxn],sx[maxn];struct node
{ll ls,rs,s,maxs;
}ans[maxn];struct point
{int x,y;ll w;
}wq[maxn];int cmp(point a,point b)
{return a.y<b.y;
}void pushup(int l,int r,int rt)
{ans[rt].ls=max(ans[rt<<1].ls,ans[rt<<1].s+ans[rt<<1|1].ls);ans[rt].rs=max(ans[rt<<1|1].rs,ans[rt<<1|1].s+ans[rt<<1].rs);ans[rt].s=ans[rt<<1].s+ans[rt<<1|1].s;ans[rt].maxs=max(ans[rt<<1].rs+ans[rt<<1|1].ls,max(ans[rt<<1].maxs,ans[rt<<1|1].maxs));
}void build(int l,int r,int rt)
{ans[rt].ls=ans[rt].rs=ans[rt].s=ans[rt].maxs=0;if(l==r)return;int mid=(l+r)>>1;build(l,mid,rt<<1);build(mid+1,r,rt<<1|1);
}void update(int L,int R,int l,int r,int rt,int x)
{if(L<=l && r<=R){ans[rt].ls=ans[rt].rs=ans[rt].s=ans[rt].maxs=ans[rt].s+x;return;}int mid=(l+r)>>1;if(L<=mid)update(L,R,l,mid,rt<<1,x);else update(L,R,mid+1,r,rt<<1|1,x);pushup(l,r,rt);
}int main() {//    freopen("in.txt","r",stdin);
//    freopen("out.txt","w",stdout);int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d%d%lld",&wq[i].x,&wq[i].y,&wq[i].w);sy[i]=wq[i].y;sx[i]=wq[i].x;}sort(wq+1,wq+1+n,cmp);sort(sy+1,sy+1+n);int toty=unique(sy+1,sy+1+n)-sy-1;sort(sx+1,sx+1+n);int totx=unique(sx+1,sx+1+n)-sx;int pi=1;ll maxans=0;for(int i=1;i<=toty;i++){build(1,totx,1);int pj=pi,flag=1;for(int j=i;j<=toty;j++){do{int pos=lower_bound(sx+1,sx+totx,wq[pj].x)-sx;update(pos,pos,1,totx,1,wq[pj].w);pj++;if(flag && wq[pj].y!=wq[pj-1].y && pj<=n){pi=pj,flag=0;}}while(pj<=n && wq[pj].y==wq[pj-1].y);maxans=max(maxans,ans[1].maxs);}}printf("%lld\n",maxans);}return 0;
}

hdu 6638 2019多校训练六 1005 Snowy Smile相关推荐

  1. 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 ...

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

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

  3. HDU 6134 2017 多校训练:Battlestation Operational(莫比乌斯反演+积性函数)

    实在太长了直接放题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6134 这题就是求 考虑当Gcd(i, j)==1时,除了j为1的情况,其它时候i/j一 ...

  4. HDU 6180 2017 多校训练:Schedule

    题意: 和 51nod 1428 活动安排问题 一模一样,只不过还要求一个时间和 http://blog.csdn.net/jaihk662/article/details/77489061 如何求出 ...

  5. HDU 6178 2017 多校训练:Monkeys(DFS)

    题意: 有一棵n个节点的树,树上有k只猴子,这k只猴子所在位置可任意指定,但是每个点上最多只能有一只猴子,现在你要切掉尽可能多的边,但必须保证没有任何一只猴子被完全孤立,求最少得保留多少条边 题目还好 ...

  6. HDU 6166 2017 多校训练:Senior Pan(最短路)

    题意: 有一张n个点m条边的有向图,还有一个包含k个点的点集,求出这个点集中任意两点间最短路的最小值 官方题解看不懂.. 如果一条边的两个端点都在这个集合中,就将这条边直接删掉(中间记录下最小值)以后 ...

  7. HDU 6162 2017 多校训练:Ch's gift(树链剖分)

    题意: 有一棵n个节点的树,m次查询,每次查询x, y, a, b表示节点x到y的路径上所有在[a, b]范围内的权值和 树链剖分+线段树 询问离线,按a和b分别排序求出所有小于a和所有小于b+1的权 ...

  8. HDU 6170 2017 多校训练:Two strings(DP)

    题意: 给你两个字符串:第一个字符串只包含小写大写字母 第二个字符串除了字母之外,还有'.'和'*',其中'.'可以当成任意一个字符,'*'表示前面那个字符可以重复若干次 当然也可以重复0次,例如a. ...

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

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

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

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

最新文章

  1. Linux yum 命令详解 源配置
  2. JAVA秒杀mysql层实现_Java高并发秒杀API之web层
  3. centos关闭防火墙
  4. CCActionEase想说爱你也不难(上)
  5. 基于容器的虚拟化资源调度系统架构设计 | 原力计划
  6. c#Code Contracts代码协定
  7. PHPObject v1.51(Flash Remoting for PHP developers)
  8. 操作系统课程设计----模拟文件管理系统(c语言)
  9. 关于使用NLPIR-ICTCLAS分词系统
  10. 关于MD5和salt盐值加密后破解方法
  11. C艹入门 -> 入土
  12. 【0520】密钥管理技术
  13. ubuntu-4-VirtualBox中安装ubuntu及其版本介绍
  14. oracle 采购模块表信息,EBS采购(PO)模块常用表
  15. 《互动教程 for Photoshop CC》已成功发布在App Store
  16. android 图片气泡,关于实现微信聊天气泡里显示图片解决方案
  17. 算法的评价标准:ROC,假阳性,mape
  18. 二十三种设计模式 python实现
  19. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全
  20. NLP 自然语言初体验

热门文章

  1. 万字长文:复盘 8 年副业经历,耗时一周,我总结出了独特的「复利思维复业赚钱法」,不看后悔...
  2. scout_mini使用步骤
  3. 个性化推荐系统设计(4.1)——案例分析
  4. [VBS]_[活动分组程序]
  5. 2021年茶艺师(初级)考试资料及茶艺师(初级)模拟试题
  6. 百胜中国拟2025年前开1000家Lavazza咖啡店​;别样肉客开始陆续进驻中国山姆会员商店 | 知消...
  7. 从再生龙(clonezilla)镜像直接提取文件
  8. Android数据加密之——Base64编码算法
  9. web前端设计与开发期末作品/期末大作业:我的家乡——走进达州(4页) HTML+CSS+JavaScript
  10. android模拟器用户比例,海马玩发布模拟器报告:学生人群与IT从业者占64%