题目:https://www.acwing.com/problem/content/250/

题意:给你n个点,现在问你能每个点都有个权值,问你能覆盖最多的权值是多少,边界不算

思路:这个其实和我之前有篇博客思路一样,那个是只用求覆盖最多的点是什么,我们也只要建扫描线,因为我们可以把每个点看作成一个区域,然后代表在这个区域内可以覆盖到这个点,这个题的话只要把扫描线原先那个入边出边的权值改成点的权值即可,然后判边界问题

https://www.cnblogs.com/Lis-/p/11279390.html

#include <bits/stdc++.h>
using namespace std;
const int N=2e4+;//要2*n,切记切记,我就是因为这个恶心的锅,坑害了一个半小时.
#define int long long//注意
#define lson l,(l+r)/2,p<<1
#define rson (l+r)/2,r,p<<1|1
int n,w,h,ys[N];
struct line_tree
{
int l,r,len,lazy;//开了懒惰标记,也就是延迟标记
#define l(x) x<<1
#define r(x) (x<<1)+1
#define m(x) (t[x].l+t[x].r)>>1
} t[N<<];
struct node
{
int x,y1,y2,f;
} p[N];
int cmp(node a,node b)
{
return a.x<b.x || (a.x==b.x && a.f<);//排序特殊点
}
inline void push_up(int p)
{
t[p].len=max(t[l(p)].len,t[r(p)].len)+t[p].lazy;
}
inline void build(int l,int r,int p)
{
t[p].l=ys[l];
t[p].r=ys[r];
t[p].lazy=;
t[p].len=;
if (r-l==)
return ;
int mid=(l+r)>>;
build(lson);
build(rson);
push_up(p);
}
inline void change(int l,int r,int k,int p)
{
if (t[p].l>=l && t[p].r<=r)
{
t[p].lazy+=k;
t[p].len+=k;
return ;
}
if (l<t[l(p)].r)
change(l,min(r,t[l(p)].r),k,l(p));
if (r>t[r(p)].l)
change(max(l,t[r(p)].l),r,k,r(p));
push_up(p);
}
inline void init()
{
while(scanf("%lld%lld%lld",&n,&w,&h)!=EOF)
{
int cnt=,num=;
for(int i=; i<=n; i++)
{
int xx,yy,k;
scanf("%lld%lld%lld",&xx,&yy,&k) ;
p[cnt].x=xx;
p[cnt].y1=yy;
p[cnt].y2=yy+h;
p[cnt++].f=k; p[cnt].x=xx+w;
p[cnt].y1=yy;
p[cnt].y2=yy+h;
p[cnt++].f=-k; ys[num++]=yy;
ys[num++]=yy+h;
}
sort(ys+,ys+num);
int ans=;
num=unique(ys+,ys+num)-(ys+);
sort(p,p+cnt,cmp);
build(,num,);
for(int i=; i<cnt; i++)
{
change(p[i].y1,p[i].y2,p[i].f,);
if(p[i].f>)
ans=max(ans,t[].len);
}
printf("%lld\n",ans);
}
}
signed main()
{
// freopen("stdin.in","r",stdin);
// freopen("stdout.out","w",stdout);
init();
return ;
}

AcWing 248. 窗内的星星 (扫描线)打卡的更多相关文章

  1. ACWing 248. 窗内的星星|扫描线+懒惰标记

    传送门 题目描述 在一个天空中有很多星星(看作平面直角坐标系),已知每颗星星的坐标和亮度(都是整数). 求用宽为W.高为H的矩形窗户(W,H为正整数)能圈住的星星的亮度总和最大是多少.(矩形边界上的星 ...

  2. android获取内置和外置SD卡路径 - z

    本文将介绍Android真机环境下如何获取内置和外置SD卡路径. 测试环境:三星Note3,其他手机待测试... 所需权限(AndroidManifest.xml文件里) <uses-permi ...

  3. 洛谷p1502窗口的星星 扫描线

    题目链接:https://www.luogu.org/problem/P1502 扫描线的板子题,把每个点看成矩形,存下边(x,y,y+h-1,li)和(x+w-1,y,y+h-1),在按横坐标扫线段 ...

  4. 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户

    1.redsi的bitmap数据结构介绍 bitmap本质上是一个string类型,只是他操作的是string的某个位是0还是1. setbit和getbit 两条命令是对字符串的位操作.每个位只能是 ...

  5. AcWing 220.最大公约数 欧拉函数打卡

    题目:https://www.acwing.com/problem/content/222/ 题意:求1-n范围内,gcd(x,y)是素数的对数 思路:首先我们可以针对每个素数p,那么他的贡献应该时  ...

  6. Android内置和外置SD卡的位置获取

    public class StorageUtils { private static String TAG="123"; // 获取主存储卡路径 内置内存卡路径 public st ...

  7. AcWing 252. 树 (点分治)打卡

    题目:https://www.acwing.com/problem/content/254/ 题意:求一棵树上,路径<=k的有多少条 思路:点分治,我们用两个指针算solve函数,首先对算出来的 ...

  8. AcWing 224. 计算器 (BSGS算法)打卡

    题目:https://www.acwing.com/problem/content/226/ 题意:有一个计算器能完成三种功能 1.给定Y,Z,P,计算YZModPYZModP 的值: 2.给定Y,Z ...

  9. AcWing 197. 阶乘分解 (筛法)打卡

    给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...

随机推荐

  1. CentOS 7.0 开端口

    >>>  CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下1.直接关闭防火墙systemctl stop firewalld.serv ...

  2. Flannel - 配置

    原文地址 flannel 从 ETCD 中读取配置. 默认情况下,flannel 从 /coreos.com/network/config 中读取配置,可以使用 --etcd-prefix 覆盖. 通 ...

  3. _exit和exit的区别

    在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf .fopen .fread .fwrite都在此列,他们也被称作缓冲I/O.其特征是对应每一个打开的文件,都存在一个缓冲 ...

  4. idea 快捷键汇总

    1.IDEA常用快捷键 Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+In ...

  5. vc code 一个非常不错的插件

    https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer 这个是地址,前提下是安装了vc ...

  6. 自定义Aspect风格的AOP框架

    本篇博客参考<架构探险--从零开始写java web框架>4.3章节 1代理接口: package smart.myaop.framework; public interface Prox ...

  7. MySql-第七篇单表查询

    1.MySQL中可以使用+.-.*./. 1>但MySQL中没有提供字符串连接运算符,可以使用concat(a_str,'xxx')进行连接. 2>在算术表达式中使用null,将会导致整个 ...

  8. TensorFlow 安装报错的解决办法

    最近关注了几个python相关的公众号,没事随便翻翻,几天前发现了一个人工智能公开课,闲着没事,点击了报名. 几天都没有音信,我本以为像我这种大龄转行的不会被审核通过,没想到昨天来了审核通过的电话,通 ...

  9. 分布式自增ID算法-Snowflake详解

    1.Snowflake简介 互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并 ...

  10. 使用onfocus与onblur实现搜索框附加信息

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...