【前缀瞎搞】线段问题

贪心算法-线段覆盖类问题 例题: P5220 - 摄像头1 P5221 - 摄像头2 P5227 - 摄像头3 阅读详情
线段问题
From jxpxcsh
描述 Description
有N条线段,已知每条线段的起点和终点(50000以内),然后有M个询问,每次询问一个点(50000以内),求这个点在多少条线段上出现过?
输入格式 InputFormat
第一行N线段条数
接下来N行,每行两个数,线段的起点和终点
第N+2行一个数M询问个数
接下来M行,每行一个点

输出格式 OutputFormat
对于每个询问,求答案
样例输入 SampleInput [复制数据]
样例输出 SampleOutput [复制数据]
数据范围和注释 Hint
N,M<=50000
时间限制 TimeLimitation
各个测试点1s
来源 Source
南雅中学


有点像去年的铺地毯。。。。当然是暴力来写。。
显然o(n*m)会超时。

然后我就不会了。然后就看了题解,然后就长姿势了。。
先设a[i] 表示第i点被覆盖的次数。
观察到对于一个线段[l,r]。
如果加入这个线段后,a[l]..a[r]都会+1。
于是设数组c[i]表示a[i]-a[i-1]。显然给c[i]求个和就是a[i]。
那么加入了[l,r]后
c[l]=c[l]+1
c[r+1]=c[r+1]-1
然后离线O(1)搞出m次查询
时间复杂度o(n)

注意要记录最大的r

var m,n,i,a,b,k,len:longint;
    c,s:array[0..50001]of longint;
begin
//assign(input,'input.in');
//assign(output,'output.out');
//reset(input);rewrite(output);
  fillchar(c,sizeof(c),0);
  fillchar(s,sizeof(s),0);
  readln(n);len:=0;
  for i:=1 to n do
  begin
      readln(a,b);
      inc(c[a]);
      dec(c[b+1]);
      if len<b then len:=b;
  end;
  s[0]:=c[0];
  for i:=1 to len+1 do s[i]:=s[i-1]+c[i];
  readln(m);
  for i:=1 to m do
  begin
     readln(k);
     writeln(s[k]);
  end;
//close(input);close(output);
end.






线段覆盖(c++) 在一条数轴上,有 N 条线段,第 i 条线段的左端点是 ��si​,右端点是 ��ei​。如果线段有重叠(即使是端点重叠也算是重叠),则输出 “impossible”, 如果没有重叠则输出 “possible”。多组测试数据。第一行,一个整数 G ,表示有 G 组测试数据。每组测试数据格式如下:第一行,一个整数 N。接下来有 N 行,每行两个整数:��,��si​,ei​ ( 0 阅读详情

相关推荐

线段树专辑

在自然数,且所有的数不大于30000的范围内讨论一个问题:现在已知n条线段,把端点依次输入告诉你,然后有m个询问,每个询问输入一个点,要求这个点在多少条线段上出现过; 最基本的解法当然就是读一个点,就把所有线段比一下,看看在不在线段中; 每次询问都要把n条线段查一次,那么m次询问,就要运算m*n次,复杂度就是O(m*n) 这道题m和n都是30000,那么计算量达到了10^9;而计算机1秒的计算量大约是10^8的数量级,所以这种方法无论怎么优化都是超时 因为n条线段是固定的,所以某种程度上说每次都把n条线段查一遍有大量的重复和浪费; 线段树就是可以解决这类问题的数据结构 举例说明:已知线段[2,5] [4,6] [0,7];求点2,4,7分别出现了多少次 在[0,7]区间上建立一棵满二叉树:(为了和已知线段区别,用【】表示线段树中的线段) 【0,7】 / \ 【0,3】 【4,7】 / \ / \ 【0,1】 【2,3】 【4,5】 【6,7】 / \ / \ / \ / \ 【0,0】 【1,1】 【2,2】 【3,3】 【4,4】 【5,5】 【6,6】 【7,7】 每个节点用结构体: struct line { int left,right; // 左端点、右端点 int n; // 记录这条线段出现了多少次,默认为0 }a[16]; 和堆类似,满二叉树的性质决定a[i]的左儿子是a[2*i]、右儿子是a[2*i+1]; 然后对于已知的线段依次进行插入操作: 从树根开始调用递归函数insert

线段覆盖(题解)

原题 题目描述 有一段道路,长度为1e18,现在有n个人对其进行刷漆,每个人会随意选取一段道路进行刷漆,每个人会从li刷到ri,包含li和ri 求被刷了k次的道路的段数,k∈[1,n] 输入 第一行一个整数n,1<=n<=2e5; 接下来n行,每行一两个整数,l,r。0<=l<=r<=1e18; 输出 n个整数,用空格隔开,分别表示被刷i次的路段的个数。1<=i<=n; 样例输入 4 0 4 2 5 3 6 1 8 样例输出 3 2 2 2

黄佳俊的博客 1480

智能座舱测试工程师必看:从零搭建自动化测试框架的5个实战技巧

本文为智能座舱测试工程师提供从零搭建自动化测试框架的5个实战技巧,涵盖环境搭建、ADB高级应用、Python脚本工程化、Monkey测试优化及性能调优。通过ADB深度操作和Python脚本封装,帮助测试人员构建高可复用的智能座舱测试解决方案,显著提升测试效率与问题发现率。

python9snake的博客 634

程序基本算法习题解析 动态规划-线段覆盖: 数轴上有n条线段,线段的两端都是整数坐标,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合),且线段价值之和最大。

题目: 线段覆盖:数轴上有n条线段,线段的两端都是整数坐标,坐标的范围为0~1000000,每条线段有一个价值,请从n条线段中挑出若干条线段,使得这些线段两两不覆盖(端点可以重合),且线段价值之和最大。输入第一行一个整数n(n&lt;=1000),表示有多少条线段接下来的n行,每行3个整数ai,bi,ci,分别代表第i条线段的左端点ai,右端点bi,价值ci。输出能够获得的最大价值。 思路: ...

elma_tww的博客 2969

空心杯电机在美容仪器中的应用:为什么你的洗脸刷动力这么强?

本文深入解析了空心杯电机如何成为高端美容仪器的核心动力源。通过对比传统电机,揭示了其无铁芯、低惯量、零齿槽效应的技术优势,从而实现了强劲动力、极致静音与细腻震动的用户体验。文章详细阐述了空心杯电机在洁面刷、导入仪等美容仪器中的具体应用与选型考量,并指出了开发中驱动匹配、测试等关键实战要点。

j2k3l4的博客 1013

weblogic启动异常故障处理(boot认证失败)

root 用户生成的文件属主为 root,WebLogic进程将无权读取,直接导致认证失败。· ⚠️ 密码必须完全一致:第3步 AdminAccount 命令中设置的密码,与第5步所有 boot.properties 文件中 password= 字段的值,必须保证完全一致。如果您的域下配置了受管服务器实例(如 ms_server1、ms_server2 等),必须逐一更新各实例下的免密启动文件,确保实例重启时密码与AdminServer保持一致,否则实例启动会因认证失败而报错。此步骤至关重要,必须执行。

weixin_53389944的博客 220

线段覆盖系列

线段覆盖1 给定x轴上的N(0 输入描述 Input Description     输入第一行是一个整数N。接下来有N行,每行有二个空格隔开的整数,表示一条线段的二个端点的坐标。 输出描述 Output Description     输出第一行是一个整数表示最多剩下的线段数。 样例输入 Sample Input 3 6  3 1  3 2  5 样例输出 Sample O

ZJUCSqxy的博客 5236

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛用于连接计算机的各种硬件设备。PCIe4.0是目前较为先进的版本,提供了高达64GB/s的带宽。InfiniBand是一种用于高性能计算的高速互连技术,通过交换机在节点之间直接创建一个专用的受保护通道。InfiniBand适配器通过PCIe接口连接到CPU,另一端通过InfiniBand网络端口连接到InfiniBand子网。

全世界的博客 7543

「PKUWC2018」Minimax [线段树合并 概率/期望]

「PKUWC2018」Minimax Tags:线段树合并 概率DP 「PKUWC2018」Minimax 题意 有一个有n个结点的有根二叉树,对于一个点x。 如果x为叶子结点,那么权值为它本身。 如果x非叶子结点那么其权值有p的可能是子结点的最大值,有1-p的可能是子结点权值的最小值。 对于结点1的权值有m中可能,那么设权值第i小的值为V[i],概率为D[i],那么求...

Umbrella__的博客 1193

虚幻UE 增强输入-触发器

输入触发器(UInputTrigger): 使用经过修饰器修改的输入值,或者使用其他输入动作的输出值,来确定是否激活输入动作。

UE成长之路,欢迎大家的关注! 5464

Code Composer Studio 12.0.0版本 官方例程导入实战指南

本文详细介绍了在Code Composer Studio 12.0.0版本中,如何利用内置的Resource Explorer工具高效导入官方例程的完整实战指南。通过分步讲解定位开发板、导入工程、配置编译器及调试验证等关键操作,帮助开发者快速上手TI微控制器开发,避免常见错误,有效提升学习与开发效率。

weixin_29169899的博客 121

2019杭电暑期多校第三场G. Find the answer /HDU6609(权值线段树)

题意: 给你一组数据,对于每个数a[i]求出最少删除 i 前面(1~i-1)多少个数使得当前位前缀和<=m 前置技能: 线段树,每个节点用来维护一段区间的最大值或总和等。 权值线段树:顾名思义就是每个节点用来表示一个区间的数出现的次数。 权值线段树可以用来求区间第K大等 题解: 显然两个优先队列每次去删最大瞎搞会超时O(n^2); 这时候得考虑怎么扫一遍,线性的就可以得出结果;...

gml1999的博客 276

pnpm 卸载教程:彻底移除 pnpm 及全局缓存的方法

卸载 pnpm = 全局包 → CLI → 环境变量 → store 缓存只要按这个顺序来,基本不会留下任何坑。如果你后面还打算重新安装 pnpm / 切换 npm、yarn / 多包管理器共存,这些细节反而更重要,环境一旦干净,后续问题会少很多。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 926

2019 南昌邀请赛(复现,签到题题解)

题一:A Good Game 题解:利用前缀和,求出所有区间值,然后操作排序,贪心求解即可 知识点:前缀和 + 贪心 AC代码: #include<iostream> #include<stdio.h> #include<algorithm> #include<queue> #include<map> #include<string.h> #include<string> using namespace std; con

小` pi孩 284

OpenCV-Python实战(3)——OpenCV中绘制图形与文本

OpenCV 是一个的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法。本文介绍了 OpenCV 提供的与绘制图形和文本相关的函数。在图形方面,我们了解了如何绘制基本图形(直线、矩形和圆形等)以及高级图形(剪裁线、箭头、椭圆和多边形)。在文本方面,我们了解了如何绘制文本以及 OpenCV 库中的所有可用字体。

盼小辉丶的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

寒假每日一题(更新中 && 拓展部分待补充 && 瞎搞整活系列)

跟着y总学算法系列。 day1104. 货仓选址 简单中位数题。

qq_45377553的博客 400

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

luogu2420 让我们异或和吧

树链剖分、线段树 || 树上前缀和 || LCT

ACoder 733

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

The 15th Heilongjiang Provincial Collegiate Programming Contest--队内训练

题目 A B C D E F G H I J K L Solved ♠\spadesuit♠ ⊘\oslash⊘ ♠\spadesuit♠ ♠\spadesuit♠ ∙\bullet∙ ♠\spadesuit♠ ∙\bullet∙ ♠\spadesuit♠ ♠\spadesuit♠比赛时通过;∙\bullet∙:赛后通过;⊘\oslash⊘ :比赛时尝试了未通过;∘\circ∘:比赛时未尝试 A. August 开场签到题,题意就是求题目中的图形面积,一眼看下去,直觉爱心的下...

bloom_er的博客 901

Educational Codeforces Round 176 (Rated for Div. 2) ABCD

2025-03-17赛时只通过了 ABC , D看数据才补出来。。。写题解的水平似乎过于低下了一点,不过一般是为了给自己看的。。。但是也希望分享出来看能不能起到一点帮助或者得到大家的指点。虽然写东西的水平一直很低,但是写史花的时间也不少的。。。

fwdzh的博客 900

【省选模拟】20/04/16

传送门 A 题意:给定 n≤1e5n\le 1e5n≤1e5 个点 (i,yi)(i,y_i)(i,yi​),m≤4e5,q≤1e5m\le 4e5,q\le 1e5m≤4e5,q≤1e5 次操作,操作可以单点修改,区间将 yiy_iyi​ 变成 A−yiA-y_iA−yi​,询问 [l,r][l,r][l,r] 中 ax+by+cxyax+by+cxyax+by+cxy 的最大值,数据随机 考...

FSYo 的博客 206

【洛谷 2021.10.6团队模拟赛】大哥扛纵连【RMQ】【区间DP】

example4 解题思路 不想叙述关于打线段树搞这题用了一个上午的事,我哭死,最后半小时发现思路错了就X尼玛,然后在线段数的基础上改了一个暴力,还比直接暴力少了30分。 70分(LZH大佬思路):设sum[i][j]sum[i][j]sum[i][j]表示再i点面基,从j到i所需代价,代价就是i~j中的最大值(RMQ瞎搞就好),预处理出这个sumsumsum,然后做一个前缀和,最后还是要枚举面基的地点,然后输出就是sum[i][y]−sum[i][x−1]sum[i][y]-sum[i][x-1]...

在人间贩卖声音 224

2019.5.summary

2019.5.1 CF C. Prefix Sum Primes 感觉CF就是训练妳如何养成对题目强大的YY能力的QAQ 我们构造 如果只有一种,没辙,只能这样放 否则先放一个2,再放一个1 接下来把2放完再用1填 因为所有质数除了都是奇数,所以这样尽可能让前缀尽量多的是奇数最有可能…… CF D. Three Religions 一开始题目读不懂,mdzz,不然应该会写 题意就是说能不能把三个串...

LMB_001的博客 593

日记(菜的连比赛都参加不了)

今年R1在河海大学常州分校(差评,去年就在我家门口),4.5~4.7 我没有正式名额qwqwq,连非正式都没有了 懒着写题解就写日记,咕咕咕?(赛(JSOI2019/APIO2019)后再补吧(怕是永久咕咕咕了)) 3.19 准备月考,颓废了一晚上 但愿文化课不要倒数 3.20 月考爆炸 晚上无聊写YNOI2019膜你赛T2,实际我考场上当时已经接近正解了,但还是自己太菜,没想起来相似的...

weixin_30922589的博客 8832

[OICamp 2016 Day 1][JZOJ4773]凸包

题目大意给定二维平面nn个点,每个点坐标都是在[1,109][1,10^9]内的整数。 对于每一个点,都有0.50.5的概率将其染色为黑色。 求所有黑点构成的凸包上点数的期望,答案乘上2n2^n并对109+710^9+7取模。、 注意:这里的凸包指的是非退化凸包,凸包上任意两点不重合,任意三点不共线!1≤n≤20001\le n\le 2000题目分析由于乘上了2n2^n,答案相当于所有情况凸

待成熟的葡萄 989

Educational Codeforces Round 143 (Rated for Div. 2)(A~D)

Educational Codeforces Round 143 (Rated for Div. 2)

qq_62338494的博客 390

2025五一节暮春营游记

拿 rank1 祭

Brilliant_Sky的博客 752
上一篇: 「Clover 10」杯HE两校联赛(第二轮Day1) 记录
下一篇: Noip傻逼错误集合
UtralK
博客等级 码龄14年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值