首页 > 试题广场 >

剩下的树

[编程题]剩下的树
  • 热度指数:24398 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。     现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。     可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。

输入描述:
    两个整数L(1<=L<=10000)和M(1<=M<=100)。
    接下来有M组整数,每组有一对数字。


输出描述:
    可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。
示例1

输入

500 3
100 200
150 300
470 471

输出

298
头像 FredaLiu
发表于 2020-03-04 09:51:21
由于区间有重叠,所以我们将区间作为一个结构体 struct region{ int from; int to; }r[105];from是区间的起点,to为区间终点。r是一个region的数组。我们按照区间from由小到大的顺序,将区间排序。比如输入的区间为 300 340;120 展开全文
头像 祝小筱
发表于 2022-02-12 10:51:53
非常暴力 #include<cstdio> #include <cstring> bool tree[10010]; int main(){ int L,n,l,r; scanf("%d%d",&L,&n); for(int i=0;i<=L; 展开全文
头像 philos
发表于 2021-02-05 12:12:48
思路 题意很简单,关键是区间可能重叠,暴力做法就是遍历一遍,但是复杂度就太高了,并且有一种投机想法... #include<iostream> #include<vector> using namespace std; int main(){ int L, M; 展开全文
头像 aaaawei
发表于 2021-01-06 20:05:39
include include using namespace std; int main(){ bool a[10000]={false};//初始化为false int L,M,x,y,sum=0; scanf("%d %d",&L,&M); for(in 展开全文
头像 渺小小螃蟹
发表于 2021-05-08 18:33:16
include<stdio.h> int main(){ int L,m,a,b,left=10000,right=0; while(scanf("%d %d",&L,&m)!=EOF) { for(int i=0;i<m;i++) 展开全文
头像 rainman_
发表于 2023-02-23 20:36:11
#include <iostream> #include <cstdio> int main() { int tree[10001]; //1表示活着,0表示死了 int L,M; //种L棵树, M组数据 scanf("%d%d", &L, &M) 展开全文
头像 csyfZhang
发表于 2020-04-20 13:33:19
https://blog.csdn.net/csyifanZhang/article/details/105632729为了更好的阅读体验↑ 线段树比暴力更加优美,这道题能用暴力完全是出题人给面子了。。。 看评论区大佬都水过了,我也先水一下,复杂度都可以过,可以见得数据之水当然这道题的数据量本身也是 展开全文
头像 TomatoHead
发表于 2024-03-03 19:22:42
#include <cstdio> #include<iostream> #include<vector> using namespace std; int main() { int L, M; scanf("%d%d", &a 展开全文
头像 乌龟狗的齐天大圣
发表于 2023-02-17 16:07:33
#include <stdio.h> int main() { int l, m; int list1[10001]; scanf("%d %d", &l, &m); for (int j = 0 ; j <= l; j++) { 展开全文
头像 想退休的回宇同桌G了
发表于 2024-01-03 13:25:35
#include <stdio.h> void Remian_tree(int Tree[],int start,int end){ for(int i=start;i<=end;i++){ Tree[i]=0; } } int main() { 展开全文

问题信息

难度:
142条回答 13603浏览

热门推荐

通过挑战的用户

查看代码