[COGS 2897] [THUPC 2017] 天天爱射击

COGS传送门

题目描述

小C爱上了一款名字叫做《天天爱射击》的游戏,在这款游戏中可以用子弹将木板打碎。如图所示,这个游戏有一些平行于x轴的木板。现在有一些子弹,按顺序沿着y轴方向向这些木板射去。第 i i i块木板被 S i S_i Si个子弹击穿以后,就会碎掉消失。一个子弹可以贯穿其轨迹上的全部木板,特别的,如果一个子弹触碰到木板的边缘,也视为贯穿木板。

小C现在知道了游戏中 n n n块木板位置,以及知道了 m m m个子弹起始位置。现在问你每个子弹射出去以后,有多少木板会被击穿?

img

输入格式

第一行两个整数 n n n m m m,表示木板数量和子弹数量。其中 1 ≤ n , m ≤ 200 , 000 1 \le n,m \le 200,000 1n,m200,000

接下来 n n n行,每行 3 3 3个整数 x 1 , x 2 , S x_1,x_2,S x1,x2,S,表示每块木板的左端点 x x x坐标、右端点 x x x坐标,以及贯穿多少次会碎掉。其中保证 1 ≤ x 1 ≤ x 2 ≤ 200 , 000 1 \le x_1 \le x_2 \le200,000 1x1x2200,000 1 ≤ S ≤ 200 , 000 1 \le S \le 200,000 1S200,000

接下来 m m m行,每行一个整数 x x x,表示每个子弹的 x x x坐标。子弹按照发射顺序给出。其中保证 1 ≤ x ≤ 200 , 000 1 \le x \le 200,000 1x200,000

输出格式

m m m 行,每行一个整数。表示每颗子弹射出去后,有多少木板碎掉。

样例输入

3 2
1 3 1
2 4 2
3 4 1
2
3

样例输出

1
2

数据范围及提示

对于30%的数据, n , m ≤ 1000 n,m \le 1000 n,m1000,其余按题目描述所示

对于100%的数据, n , m ≤ 200 , 000 n,m \le 200,000 n,m200,000,其余按题目描述所示

解题分析

整体二分, 二分每块木板会在第几次射击后破碎, B I T BIT BIT统计区间内子弹数量

不过注意有些木板可能到最后都没有被打烂… 所以当二分到 l = r l=r l=r的时候加个判断。

代码如下:

#include <cstdio>
#include <cmath>
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define R register
#define IN inline
#define W while
#define gc getchar()
#define MX 200500
#define lbt(i) ((i) & (-(i)))
template <class T>
IN void in(T &x)
{x = 0; R char c = gc;for (; !isdigit(c); c = gc);for (;  isdigit(c); c = gc)x = (x << 1) + (x << 3) + c - 48;
}
int n, m;
struct opt {int lef, rig, k;} dat[MX], buf1[MX], buf2[MX];
int tree[MX], ans[MX], hit[MX];
IN void add(R int pos, R int del) {for (; pos <= n; pos += lbt(pos)) tree[pos] += del;}
IN int query(R int pos)
{int ret = 0;for (; pos; pos -= lbt(pos)) ret += tree[pos];return ret;
}
void solve(R int lef, R int rig, R int lb, R int rb)
{int cnt1 = 0, cnt2 = 0, res;if (lef > rig || lb > rb) return;if (lb == rb){for (R int i = lef; i <= rig; ++i)if (dat[i].k == (dat[i].lef <= hit[lb] && dat[i].rig >= hit[lb])) ++ans[lb];return;}int mid = lb + rb >> 1;for (R int i = lb; i <= mid; ++i) add(hit[i], 1);for (R int i = lef; i <= rig; ++i){res = query(dat[i].rig) - query(dat[i].lef - 1);if (res >= dat[i].k) buf1[++cnt1] = dat[i];else buf2[++cnt2] = dat[i], buf2[cnt2].k -= res;}for (R int i = lb; i <= mid; ++i) add(hit[i], -1);for (R int i = 1; i <= cnt1; ++i) dat[lef + i - 1] = buf1[i];for (R int i = 1; i <= cnt2; ++i) dat[lef + cnt1 + i - 1] = buf2[i];solve(lef, lef + cnt1 - 1, lb, mid), solve(lef + cnt1, rig, mid + 1, rb);
}
int main(void)
{freopen("shooting.in", "r", stdin), freopen("shooting.out", "w", stdout);in(n), in(m);for (R int i = 1; i <= n; ++i) in(dat[i].lef), in(dat[i].rig), in(dat[i].k);for (R int i = 1; i <= m; ++i) in(hit[i]);solve(1, n, 1, m);for (R int i = 1; i <= m; ++i) printf("%d\n", ans[i]);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33916.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【选恐症安利】小熊猫C++原创配色

【选恐症安利】小熊猫C原创配色! 本人是超级强迫症和选择恐惧症&#xff01;经过三天的调色&#xff0c;成就了下面的情景&#xff1a; 哇&#xff0c;绝了&#xff01; 你可以在这里导入配色&#xff1a; 好了&#xff0c;放链接&#xff01; wwt.lanzoum.com/iv4VW0cbkep…

[day2]python网络爬虫实战:爬取美女写真图片(增强版)

l> 我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录 1.开发环境2.第三方库3.实现1.分析url格式2.分析图片格式3.保存图片到本地4.输入页数 4.优化1.防止被封2.多线程下载3.便捷获取图片地址 5.效果6.G…

Python写网络爬虫(一)

文章目录 网络爬虫简介爬虫在使用场景中的分类爬虫的矛与盾需要知道的协议常用请求头信息常用响应头信息requests模块如何使用requests&#xff1a;&#xff08;requests模块的编码流程&#xff09;新手实战演练正式入门爬虫get 方法的常用参数&#xff1a;简易网页采集器 首先…

那个顶撞雷军还爱在办公室打乒乓的副总裁——周光平

文章原创来自洞见网&#xff1a;http://www.localonline.com.cn/start/people/712.html&#xff0c;转载请注明出处。 近日&#xff0c;东南大学(原南京工学院)1977级校友周光平、严星夫妇捐资2000万元&#xff0c;在母校设立“平星基金”&#xff0c;用于支持信息科学与工程学…

雷军—我十年的程序员生涯

内容转自&#xff1a;http://blog.sina.com.cn/s/blog_4b0e23c90100b2qf.html 最近&#xff0c;和UCWEB同事讨论&#xff0c;怎么才能把我们的UCWEB做到极致。我说&#xff0c;“手机上的平台非常多&#xff0c;如果想做好&#xff0c;需要足够多、足够优秀的程序员。优秀的程序…

雷军谈人生三段低谷:站店卖货、泡吧泡论坛、错失互联网第一波浪潮!

自2020年小米十周年雷军进行了人生首次公开演讲以来&#xff0c;他似乎想要养成一种习惯&#xff0c;每年都举办一次年度演讲。 继2020年“相信自己&#xff0c;一往无前”和2021年“我的梦想&#xff0c;我的选择”两场年度演讲后&#xff0c;这不&#xff0c;在小米迎来12周…

中国第一程序员求伯君,WPS之父,雷军也佩服的人

中国第一程序员求伯君&#xff0c;WPS之父&#xff0c;最强码农的传奇经历 转载知乎冷冷读书 https://www.zhihu.com/people/leng-leng-80-6 2018年底&#xff0c;金山举办创业三十年庆典&#xff0c;三位创始人&#xff0c;求伯君、雷军和张旋龙相继到场。庆生中&#xff0c;雷…

用互联网思想武装自己---雷军

两年前的4月6日&#xff0c;我们几个人&#xff0c;在北四环的银谷大厦静悄悄的创办了小米公司&#xff0c;一起喝了碗小米粥&#xff0c;就开始艰难的创业之旅。仅仅两年时间&#xff0c;小米在百度手机品牌排行榜排在前五名&#xff0c;也在淘宝销售排行榜名列前茅&#xff0…

身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

他的前半生&#xff0c;值得我们每一个人深思。 在普通人眼里&#xff0c;他寂寂无名&#xff0c;只有年岁稍长的文化人&#xff0c;才听说过他传奇般的存在。 在IT人眼里&#xff0c;他是块活化石&#xff0c;中国第一的大旗除了他&#xff0c;没人敢抗&#xff01; 他是求…

雷军主导小米管理层变革:创业派隐退 职业经理人上位

雷递网 雷建平 12月23日 岁末之际&#xff0c;在京东零售大幅调整后&#xff0c;小米也进行了一轮大调整。 小米集团内部邮件所示&#xff0c;小米总裁王翔将在月底卸任集团总裁职务退休&#xff0c;同时&#xff0c;继续作为高级顾问为公司服务。 小米集团总裁一职将由2019年加…

雷军与周鸿祎:两个九头鸟的战争

一场 智能手机 的口水大战将雷军和周鸿祎推到风口浪尖。有一句俗话叫“天上九头鸟&#xff0c;地上湖北佬”&#xff0c;来形容湖北人的精明、睿智。 小米科技董事长兼CEO雷军、奇虎360董事长周鸿祎同是湖北人。雷军1969年12月16日于湖北仙桃&#xff0c;一个教师家庭&#…

雷军的演讲以及产品发布

8月11号是小米的发布会&#xff0c;还有雷军的年度演讲。 因为工作冲突我没看直播&#xff0c;晚上回来看了公众号文章和知乎上的内容讨论&#xff0c;也看了发布的新产品。 雷军那个年代能够做上程序员一定是非常牛逼的人&#xff0c;而雷军是这些牛逼人的公司总经理&#xff…

雷军写代码水平如何?

3月30日&#xff0c;小米集团发布公告&#xff0c;公司拟成立一家全资子公司&#xff0c;负责智能电动汽车业务。首期投资为100亿元人民币&#xff0c;预计未来10年投资额100亿美元&#xff0c;而智能电动汽车业务的首席执行官依然由雷军担任。 雷军说&#xff1a;我愿意押上我…

雷军 1994 年写的代码

&#xff08;给程序员的那些事加星标&#xff09; 整合整理&#xff1a;程序员的那些事&#xff08;id&#xff1a;iProgrammer&#xff09; 前些天&#xff0c;「程序员的那些事」在趣图栏目中分享了《趣图&#xff1a;雷军的代码像诗一样优雅》。 有些网友在评论中质疑&#…

从小米科技的创始人、董事长、首席执行官雷军的代码水平说起

作为小米科技的创始人、董事长和首席执行官&#xff0c;雷军的名字如雷贯耳。那么作为技术员出身的雷军&#xff0c;他的代码水平如何&#xff0c;最近也成为网上的一个热点议题。 伴随这个热点议题一起出现的是雷军写于1994年的RAMinit程序源码。 ; &#xff08;完整代码附后…

雷军 1994 年写的代码,你见过吗?厉害了!

作为小米科技的创始人、董事长和首席执行官&#xff0c;雷军的名字如雷贯耳。网上出现一篇“刘强东的代码水平如何”的文章&#xff0c;有网友在下面回复“代码只服雷军”。雷军的代码水平真的很牛吗? 原来雷军年轻的时候&#xff0c;也是一名程序员&#xff0c;而且一干就是…

Verilog面试题(一)——2020乐鑫科技数字IC(串转并、饮料售卖机)

文章目录 题目一&#xff1a;将一个串行执行的C语言算法转化为单拍完成的并行可综合verilog。思路代码知乎数字芯片实验室牛客讨论区 题目二&#xff1a;饮料售卖机思路E课网代码&#xff08;牛客讨论区&#xff09; 题目一&#xff1a;将一个串行执行的C语言算法转化为单拍完成…

乐鑫科技2022提前批-数字IC类6.29

1/10&#xff3b;单选&#xff5c;3分&#xff3d; 十六进制数0x12345678为big-endian格式&#xff0c;对应的little-endian格式是&#xff1a; 0x87654321 0x78563412 0x56781234 其他都不正确 2/10&#xff3b;单选&#xff5c;3分&#xff3d; X,Y是两个无符号定点小数&…

乐鑫科技数字芯片2017

1. setup time、hold time 含义&#xff0c;并说明setup time和hold time会出现负值的原因 setup time是指在触发器的时钟信号触发之前&#xff0c;数据需要稳定不变的时间 hold time 是指在触发器的时钟信号触发之后&#xff0c;数据需要稳定不变的时间 在考虑时钟skew的…