【题目描述:】

/*
飞逝的的时光不会模糊我对你的记忆。难以相信从我第一次见到你以来已经过去了3年。我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫瑰色的脸颊。我明白,我已经沉醉于你了。之后,经过几个月的观察和窥探,你的优雅与智慧,你对待生活的态度和你对未来的愿望深切地在我心中留下了印象。你是迷人的阳光女孩,我总是梦想着与你分享余生。唉,实际上你远远超过了我最疯狂的梦想。我不知道如何桥起我与你之间的鸿沟。所以我没有任何计划,仅仅只是等待,等待一个适当的机会到来。直到现在,毕业的到来,我意识到我是个傻瓜,我应该创造机会并且抓住它而不只是等待。这些日子里,我和我的朋友、室友、同学一个接一个地分开。我仍无法相信,在挥手之后,这些熟悉的面孔很快就会从我们的生活中消失,仅仅留下回忆。我明天就将离开学校。你已经计划远走高飞,追求你的未来,实现你的梦想。如果没有命运,也许我们不会再次相遇。所以今晚,我正在你的宿舍楼下徘徊,希望能偶然遇见你。但矛盾的是,你的美貌一定会使我心跳加速,我笨拙的舌头也许无法吐出一个字。我不记得我曾多少次经过你的宿舍楼,每次都希望看到你出现在阳台上或是窗台上。我不记得这个想法曾多少次在我的脑海中涌出:打电话叫她一起吃晚饭或是聊聊天。但每次,考虑到你的优秀和我的平凡,胆怯的优势超越勇气驱使我静静地离开。毕业,意味着中学生活的终结。这些光荣与浪漫的时代结束。你可爱的微笑是我原来努力学习的动力,这单相思的爱情会被密封,作为一个我心灵深处的记忆。毕业,也意味着新生活的开始,一个到达光明未来的足迹。我真希望你在国外天天开心,一切顺利。同时,我将努力从幼稚中走出来,变得更加成熟。我的理想将是在现实中追求我的爱与幸福,我永远不会放弃。再见了,我的公主!如果有一天,在某个天涯海角,我们有机会相聚,即使是白发苍苍的男人和女人,在那个时候,我希望我们可以成为好朋友来自豪地分享这个记忆,重温年轻快乐的激情。如果这个机会永远没有到来,我希望我是天空中的星星,在你的窗外闪烁。远远地保佑着你,就像一个朋友,每天晚上陪伴在你左右,一同分享甜美的梦亦或是一同经历可怕的梦。
*/

题目背景

天空可以理解为一条数轴,在这条数轴上分布着许多颗星星,对于每颗星星都有它的位置Xi和自身的亮度Bi。而窗户所能看到的范围是一个给出的参数W,我们看到的星星也包括窗户边缘的星星。现在,要你求出调整窗户位置后能看到星星的亮度之和最大值。

【输入格式:】

一行N,W,分别代表星星的数量和窗户的宽度

余下N行,输入Xi和Bi,代表星星的坐标和亮度

【输出格式:】

一个数字,代表能看到星星的最大亮度和

输入样例#1:
6 3
1 2
2 4
3 8
4 4
5 2
1000 1
输出样例#1:
16

输入输出样例

【算法分析:】

这是一道统计题,不需要支持修改完全可以那前缀和做

但是为了练习线段树,还是写线段树吧

询问区间和,区间长度为w,枚举每一个w区间并快速地求出[i, i + w - 1]的元素和,可以通过线段树来实现。

对于一开始读入的x, b,可以通过单点修改使 a[x] += b

所以用单点修改区间查询的线段树,时间复杂度O((n - w) log2 n)

【代码:】

 1 //在你窗外闪耀的星星
 2 #include<iostream>
 3 #include<cstdio>
 4 using namespace std;
 5
 6 const int MAXN = 100000 + 1;
 7
 8 int n, w;
 9 int tree[MAXN << 2];
10
11 void Update(int o, int l, int r, int p, int v) {
12     if(l == r) tree[o] += v;
13     else {
14         int mid = (l + r) >> 1;
15         if(l <= p && p <= mid) Update(o << 1, l, mid, p, v);
16         else Update(o << 1|1, mid + 1, r, p, v);
17         tree[o] = tree[o << 1] + tree[o << 1|1];
18     }
19 }
20 long long Query(int o, int l, int r, int ql, int qr) {
21     if(ql <= l && r <= qr) return tree[o];
22     int mid = (l + r) >> 1;
23     long long ret = 0;
24     if(ql <= mid) ret += Query(o << 1, l, mid, ql, qr);
25     if(qr > mid) ret += Query(o << 1|1, mid + 1, r, ql, qr);
26     return ret;
27 }
28 int main() {
29     scanf("%d%d", &n, &w);
30     if(w == 0) { puts("0"); return 0; }
31     for(int i = 1; i <= n; ++i) {
32         int pos, num;
33         scanf("%d%d", &pos, &num);
34         Update(1, 1, n, pos, num);
35     }
36     long long ans = 0;
37     for(int i = 1, j = w; j <= n; ++i, ++j) {
38         ans = max(ans, Query(1, 1, n, i, j));
39     }
40     printf("%lld\n", ans);
41 }

转载于:https://www.cnblogs.com/devilk-sjj/p/9042870.html

【洛谷】【线段树】P3353 在你窗外闪耀的星星相关推荐

  1. 洛谷 P3353 在你窗外闪耀的星星

    洛谷  P3353 在你窗外闪耀的星星 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室, ...

  2. 洛谷——P3353 在你窗外闪耀的星星

    P3353 在你窗外闪耀的星星 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向 ...

  3. [洛谷]P3353 在你窗外闪耀的星星 (#树状数组)

    题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫瑰色的 ...

  4. Luogu P3353 在你窗外闪耀的星星

    题目 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫 ...

  5. 洛谷 P3353 在你窗外闪耀的星星(树状数组)

    利用数组在 x 处做个映射,为 x 点处的亮度之和,这样利用树状数组在区间查询的时候要注意一下端点的情况 从位置 1 开始,一直到 1e5,寻找最大的区间和,复杂度为 O(1e5logn),不开 o2 ...

  6. 洛谷—— P3353 在你窗外闪耀的星星

    https://www.luogu.org/problem/show?pid=3353 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年 ...

  7. [洛谷]P3353 在你窗外闪耀的星星

     这题使用前缀和即可求解,毕竟是求某个数组的某个固定范围内和的最大值,但值得注意的是,某个位置可能会有多个星星叠加,所以亮度也是要累计的,且这里的长度1应该是指1这个位置所占的长度,比如窗的宽度是3, ...

  8. P3353 在你窗外闪耀的星星————树状数组,前缀和

    题解:本题主要考查树状数组的区间之和的最大值,用树状数组和前缀和(注意:一个位子可以放多个点) 代码如下: #include<iostream> #include<algorithm ...

  9. 【Python】【C语言】P3353 在你窗外闪耀的星星

    题目背景 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了 3 年.我仍然还生动地记得,3 年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫 ...

最新文章

  1. 码农技术炒股之路——数据库管理器、正则表达式管理器
  2. 不止临床应用,AI还要帮不懂编程的医生搞科研
  3. 删除中间结点(直接用来当前节点操作)
  4. windows十大必禁服务
  5. r软件linux 安装失败,R语言在Linux环境下安装Curl出错问题的解决
  6. python爬虫笔记(七):实战(三)股票数据定向爬虫
  7. TFS2015的CI集成
  8. 10 条提升 Android 性能的建议
  9. Genius ACM(倍增+归并排序)
  10. 5种常用的相关分析方法
  11. java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署
  12. 2022国内十大工业级三维视觉引导企业一览
  13. android怎么取消安全模式,安卓手机安全模式怎么关闭
  14. 筋膜悬吊面部提升术后悔死了,几天消肿多久有效果
  15. 计算机图像处理之空域滤波增强(彩色增强)
  16. 用“狗屁不通文章生成器”写作文,竟打败73.5%的学生?
  17. 第四章:Android灯光系统(3)-编写HAL
  18. EPIC 审批流程设置 BAdI:示例
  19. 什么是黑盒测试和白盒测试的方法以及优缺点
  20. 如何在JavaScript中循环遍历JSON响应

热门文章

  1. C++_通讯录管理系统
  2. android 支付宝特别卡,2017支付宝取消万能卡了吗 顺手牵羊卡被取消了吗
  3. 时间、时间戳、带格式时间的转换
  4. 计算机屏幕剪切是怎人们剪切呀,如何使用剪切工具在Windows 10中截取屏幕截图...
  5. HashMap 和 HashTable 哪不同 ?
  6. 博途1200PLC由丝杠位移速度计算电机转速(moveVel_TO_motorSpeed功能块)
  7. qt库文件添加到环境变量linux,QT获得所有系统环境变量(包括Linux和MAC的信息)...
  8. linux系统配置syslog服务器,Syslog服务器配置
  9. 关于按时上下班的事情
  10. ssm框架搭建连接mysql_ssm框架搭建(详细)