出行计划

  • 题目描述
    • 输入
    • 输出
    • 样例输入
    • 样例输出
      • 源代码
      • 关于这题

题目描述

输入

输出

样例输入

6 2 10
5 24
10 24
11 24
34 24
35 24
35 48
1
2

样例输出

3
3

源代码

70分 原因:错误

#include <iostream>using namespace  std;int main (){int n,m,k;cin>>n>>m>>k;int temp=0;int result=0;int *arrTime = new int [n];int *arrLimit = new int [n];int *sign= new int[m];bool ssi= true;for (int i = 0; i <n ; i++) {int g,h;cin>>g>>h;arrTime[i]=g;arrLimit[i]=h;}for (int i = 0; i < m; i++) {cin>>temp;ssi=true;int low, high, mid;low = 0;high =n - 1;while (low <= high) {mid = (low + high) / 2;if (arrTime[mid] < temp+k)low = mid + 1;else if (arrTime[mid] >temp+k)high = mid - 1;else{sign[i]= mid;ssi= false;break;}}if (ssi){sign[i]= mid;}for (int j = sign[i]; j <n ; j++) {if (arrTime[j] >= temp+k ){if (arrTime[j]<=temp+k+arrLimit[j]-1){result++;}}}cout<<result<<endl;result=0;}return 0;
}

100分:

#include <iostream>
#include <vector>
using namespace  std;int main (){int n, m, k;cin >> n >> m >> k;int l, r;vector<int> v(200010);for (int i = 0; i < n; i++) {cin >> l >> r;int tl = max(0, l - r - k + 1);int tr = max(0, l - k);v[tl]++;v[tr + 1]--;}for (int i = 1; i < 200010; i++) {v[i] += v[i - 1];}for (int i = 0; i < m; i++) {cin >> l;cout << v[l] << endl;}return 0;}

关于这题

第一次写的 虽然没超时 但是还是70分
后面看了别人的解法,发现可以换个思路,我们得到每个时间点做核酸可以进入场所的数目,就不需要两个for循环遍历了,这里用到了差分数组。

差分数组
差分数组是一个数据结构。相当于前缀和的逆运算。
差分数组的功能是修改区间,查询点。
修改区间的时间复杂度是O(1).
查询点的时间复杂度是O(n)。若配合树状数组时间复杂度可达到O(log n)。
(1)数组中元素的值全为0

原数组: 0 0 0 0 0 0
下标: 0 1 2 3 4 5
现在要把下标为2-4之间的数加5

修改区间:
差分数组: 0 0 5 0 0 -5
下标: 0 1 2 3 4 5

结果:
结果数组: 0 0 5 5 5 0
下标: 0 1 2 3 4 5

修改区间:下标为x-y之间的数加n
把下标为x的数加n,下标为y的数减n
得到修改后的结果数组:结果数组第一个数和差分数组第一个数一样,后面结果数组的每个数等于差分数组的当前数减去差分数组前一个数。

(2)其他情况

原数组: 4 7 9 6 5 2
下标: 0 1 2 3 4 5
现在要把下标为1-2之间的数加3

先得到差分数组:
差分数组: 4 3 2 -3 -1 -3
下标: 0 1 2 3 4 5

修改区间:
差分数组: 4 6 2 -6 -1 -3
下标: 0 1 2 3 4 5

结果:
结果数组: 4 10 12 6 5 2
下标: 0 1 2 3 4 5

得到差分数组:第一个数和原数组一致,后面的每个数等于原数组当前数减去原数组当前数的前面一个数
修改区间:下标为x-y之间的数加n
把下标为x的数加n,下标为y的数减n
得到修改后的结果数组:结果数组第一个数和差分数组第一个数一样,后面结果数组的每个数等于差分数组的当前数减去差分数组当前数的前一个数。

~3 ccf 2022-03-2 出行计划相关推荐

  1. 【ccf】20220302出行计划

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 问题描述 思路 :差分方法 差分解法过程 代码 问题描述 思路 :差分方法 根据题目的意思,给出一个做核酸的时间q,要计算出 ...

  2. CSP 202203 题解:未初始化警告,出行计划,计算资源调度器,通信系统管理,博弈论与石子合并

    试题内容请前往CCF官网查看: CCF-CSP计算机软件能力认证考试 http://118.190.20.162/home.page CCF 官方题解请点击这里. 阅读本题解前,您应当了解下列知识: ...

  3. P1422 小玉家的电费--2022.03.15

    /* P1422 小玉家的电费--2022.03.15 https://www.luogu.com.cn/problem/P1422 */ #include <bits/stdc++.h> ...

  4. 【官宣】亚马逊云科技Build On 2022年技能提升计划正式启航

    亚马逊云科技Build On 2022技能提升计划是结合教育与技术应用的云计算技术动手实验实操活动,也是全面适用于开发人员.IT技术人员.技术爱好人员和技术.业务领域决策者须掌握的基础云计算课程.Bu ...

  5. Windows下显卡支持的cuda及配套GPU版本pytorch下载全流程(2022.03.27)

    Windows下显卡支持的cuda及配套GPU版本pytorch下载全流程(2022.03.27) 一.更新电脑显卡驱动(以mx150为例) 1.打开英伟达驱动下载官网:https://www.nvi ...

  6. CSP 202203-2出行计划

    问题分析: 差分板子.根据题意描述可以反推得到对于每个出行计划合法的核酸检测的时间区间.假设在x时刻进入公共场所,其需要c小时内的核酸证明,k小时候出核酸结果可以推出这个合法区间为[x−k−c+1,x ...

  7. 2022.03全国青少年软件编程(图形化)等级考试试卷(三级)

    2022.03全国青少年软件编程(图形化)等级考试试卷(三级) 更多内容请查看网站: http://www.wancode.net 历年真题模拟题实时更新

  8. 2022.03全国青少年软件编程(图形化)等级考试试卷(二级)

    2022.03全国青少年软件编程(图形化)等级考试试卷(二级) 更多内容请查看网站: http://www.wancode.net 历年真题模拟题实时更新

  9. 2022.03全国青少年软件编程(图形化)等级考试试卷(四级)

    2022.03全国青少年软件编程(图形化)等级考试试卷(四级) 更多内容请查看网站: http://www.wancode.net 历年真题模拟题实时更新

最新文章

  1. CPU流水线的探秘之旅
  2. Linux操作系统文档
  3. [C++11]不允许使用auto的四个场景
  4. 设计功能和界面测试用例
  5. 英文材质翻译表_英语翻译5大技巧,用了才知道是真好
  6. 1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )
  7. CMSIS-RTOS 时间管理之虚拟定时器Virtual Timers
  8. Spring 菜鸟教程 IntrospectorCleanupListener
  9. 一个独特的简历生成器,开源了!
  10. 【原创】无线LED条屏信息报警项目---2012.05
  11. c语言中switch结构,switch结构c语言
  12. 在职研究生(多重继承)
  13. 深度学习day01-深度学习环境、conda、创建第一张画布
  14. 简单三步实现给公众号添加附件
  15. keydown、input、keyup
  16. js提取数组对象中的最大值和最小值
  17. DirectX10+MSVC
  18. html5学习之音乐播放器的结构整理
  19. 数学的Math类总结,方便自己使用,有正余切和一些双曲函数
  20. 用python搭建无人车的仿真环境

热门文章

  1. 人工智能行业,就业方向和研究领域的简单介绍
  2. IDEA解决打开properties乱码问题
  3. 数据库_mysql数据库引擎_数据库索引
  4. 思迈特软件Smartbi:传统BI被“革命”,AI是BI技术未来的发展趋势
  5. map方法的常见使用
  6. c语言如何输出合取析取条件符号,熟悉五个常用联结词合取、析取、条件和双条件的概念,掌握真值表技术。...
  7. Hadoop操作HDFS命令
  8. 六个好用的前端开发在线工具
  9. Python网络爬虫实战1:百度新闻数据爬取
  10. 面试题:strcpy考虑内存重叠