news 2026/7/19 9:49:04

信息学奥赛一本通1931:【05NOIP普及组】校门外的树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信息学奥赛一本通1931:【05NOIP普及组】校门外的树

1931:【05NOIP普及组】校门外的树


时间限制: 1000 ms 内存限制: 65536 KB
提交数: 9210 通过数: 6928

【题目描述】

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴00的位置,另一端在LL的位置;数轴上的每个整数点,即00,11,22,……,LL,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

【输入】

第一行有两个整数L(1≤L≤10000)L(1≤L≤10000)和 M(1≤M≤100)M(1≤M≤100),LL代表马路的长度,MM代表区域的数目,LL和MM之间用一个空格隔开。接下来的MM行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。

【输出】

一行,这一行只包含一个整数,表示马路上剩余的树的数目。

【输入样例】

500 3 150 300 100 200 470 471

【输出样例】

298

【提示】

【数据规模】

对于20%的数据,区域之间没有重合的部分;

对于其它的数据,区域之间有重合的情况。


思路:

我没有想到什么很高明的方法

我是这样想的,首先定义一个长度为L的数组a

然后数组a里的每一项都归0

然后读入区间(最左边为L,最右边为r),数组a[L]~a[r]全部变为1

然后统计,看有几个为0就好了

今天是2026年7月18日,对这个题解进行更新,懒得写思路,新代码可以处理数据更大的情况,大概就是一个什么区间合并什么的,我很懒,所以没有思路,没准每天有空了我会回来写的

不过应该不可能


代码:

#include <bits/stdc++.h> using namespace std; int main(){ long long l,m,u,uu,b=0; cin>>l>>m; long long a[l+10]={0}; for(int j=1;j<=m;j++){ cin>>u>>uu; for(int i=u;i<=uu;i++){ a[i]=1; } } for(int i=0;i<=l;i++){ if(a[i]==0){ b++; } } cout<<b; return 0; }
//这是新代码 #include<bits/stdc++.h> using namespace std; struct aa{ long long u,v; }; bool cmp(aa a,aa b){ return a.u<b.u; } int main(){ long long l,m; cin>>l>>m; aa a[m+10]; for(int i=1;i<=m;i++){ cin>>a[i].u>>a[i].v; } sort(a+1,a+m+1,cmp); long long cnt=1LL*a[1].v-1LL*a[1].u+1; for(int i=2;i<=m;i++){ if(a[i].v>a[i-1].v){ cnt+=1LL*a[i].v-1LL*a[i].u+1; long long cha=0; if(a[i].u<=a[i-1].v){ cha=a[i-1].v-a[i].u+1; a[i].v=max(a[i].v,a[i-1].v); } cnt-=cha; }else{ a[i].v=a[i-1].v; } } cnt=l-cnt+1; cout<<cnt; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 9:48:48

终极指南:Ironwail让老电脑也能流畅运行现代Quake地图

终极指南&#xff1a;Ironwail让老电脑也能流畅运行现代Quake地图 【免费下载链接】ironwail High-performance QuakeSpasm fork 项目地址: https://gitcode.com/gh_mirrors/ir/ironwail Ironwail是一款基于QuakeSpasm的高性能分支项目&#xff0c;专为提升老旧电脑运行…

作者头像 李华
网站建设 2026/7/19 9:47:17

2026AI在线抠图工具推荐:免费无水印、人像商品透明底专业工具教程

2026年日常修图、电商素材制作、自媒体配图、证件照制作等场景&#xff0c;大多离不开在线AI抠图功能。相比需要下载安装、占用设备内存的专业修图软件&#xff0c;在线抠图工具凭借免安装、上手快、适配全设备的优势&#xff0c;成为大众首选。很多用户在挑选工具时&#xff0…

作者头像 李华
网站建设 2026/7/19 9:46:55

解锁Wand专业版功能:开源增强工具完全指南

解锁Wand专业版功能&#xff1a;开源增强工具完全指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 你是否曾经因为Wand&#xff08;原WeMod&…

作者头像 李华
网站建设 2026/7/19 9:46:40

2026抠图软件哪个好用?电脑/手机/在线无水印工具实操对比指南

2026年日常修图、自媒体配图、电商做白底图、证件照换底色等场景&#xff0c;几乎都离不开抠图功能。目前市面上的抠图工具分为微信小程序、手机APP、在线网页、电脑专业软件四大类&#xff0c;不同工具在免费权限、水印规则、抠图精度、操作难度上差异极大。很多用户纠结抠图软…

作者头像 李华
网站建设 2026/7/19 9:45:00

揭秘WechatDecrypt:如何打破微信数据加密的“黑匣子“

揭秘WechatDecrypt&#xff1a;如何打破微信数据加密的"黑匣子" 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为微信聊天记录被加密而无法访问自己的数据&#xff1f;当珍贵的对…

作者头像 李华