题目: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. delphi 之 get post

    http://www.cnblogs.com/ccqin/archive/2012/08/22/2650348.html delphi 之 get post 没测试过这个 var Source: TM ...

  2. 页面跳转(包括vue路由)

    1.JS实现页面跳转 1.1 使用window.location的href属性跳转 window.location.href = 'http://www.baidu.com';此处window可以省略 ...

  3. 【ABAP系列】SAP 后台JOB如何DEBUG

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 后台JOB如何DEBUG ...

  4. [CF960G]Bandit Blues(第一类斯特林数+分治卷积)

    Solution: ​ 先考虑前缀,设 \(f(i, j)\) 为长度为 \(i\) 的排列中满足前缀最大值为自己的数有 \(j\) 个的排列数. 假设新加一个数 \(i+1\) 那么会有: \[ f ...

  5. 【JMeter4.0】一、JAVA环境-JDK1.10安装与配置

    环境变量的作用: 它是操作系统用来指定运行环境的一些参数.比如临时文件夹位置和系统文件夹位置等.当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,比如“Path”就是一个变量, ...

  6. 攻防世界--re2-cpp-is-awesome

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/c5802869b8a24033b4a80783a67c858b 1.准备 获取信息 6 ...

  7. k3 cloud套打模板中出现单元格数据为空的情况,及无法正确的选择数据源

    解决办法: 找到右边的导航树,点击数据表格选中,然后到左边点击右键,绑定数据

  8. 修改xampp中的MySQL密码

    1.开启MySQL服务后,点击XAMPP Control Panel上的Admin按钮 2.依次点击"账户"--最后一个"修改权限"--修改密码 3.输入两次相 ...

  9. JavaScript—— 案例:表单验证

    QQ号:<input type="text" id="txtQQ"><span></span><br> 邮箱:& ...

  10. Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat

    按照教程上配置文件如下: var webpack=require('webpack'); var HtmlwebpackPlugin=require('html-webpack-plugin'); v ...