首页 > 其他分享 >【洛谷】P1047 [NOIP2005 普及组] 校门外的树

【洛谷】P1047 [NOIP2005 普及组] 校门外的树

时间:2024-11-14 23:19:15浏览次数:3  
标签:NOIP2005 移走 洛谷 数轴 马路上 马路 整数 区域 P1047

题目描述

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

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

输入格式

第一行有两个整数,分别表示马路的长度 l 和区域的数目 m。

接下来 m 行,每行两个整数 u,v表示一个区域的起始点和终止点的坐标。

输出格式

输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。

输入输出样例

输入 #1

500 3
150 300
100 200
470 471

输出 #1

298

说明/提示

【数据范围】

  • 对于 20% 的数据,保证区域之间没有重合的部分。
  • 对于 100% 的数据,保证1 ≤ l ≤ 104,1 ≤ m ≤ 100,0 ≤ u ≤ v ≤ l。

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

#include <iostream>
using namespace std;
int main()
{
	//将马路长度设为一个数组,其中一部分种有树
	int L[10000] = { 0 }, l, m, i, u, v, j, sum = 0;
	cin >> l >> m;		//输入马路长度L和区域数目m
	for (i = 0; i <= l; i++)
		L[i] = 1;		//将树的位置标为数字1,无树位置为0
	for (i = 1; i <= m; i++)		//对m行分别输入
	{
		cin >> u >> v;		//输入区域两端点
		for (j = u; j <= v; j++)
			L[j] = 0;		//将区域位置全部改作0(无树)
	}
	for (i = 0; i <= l; i++)		//检索整个"马路长度"部分数组
	{
		if (L[i] == 1)		//元素为1则"有树"
			sum++;		//树的总数+1
	}
	cout << sum;		//输出树的总数
	return 0;
}

此写法通过数组中”0“和”1“的变化表示”无树“和”有树“的变化,是对数组中元素的思考

标签:NOIP2005,移走,洛谷,数轴,马路上,马路,整数,区域,P1047
From: https://blog.csdn.net/2401_86982397/article/details/143665149

相关文章

  • 【洛谷】P5727 【深基5.例3】冰雹猜想
    题目描述给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字(7×10^11)都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 n 是 20,变化的过程是 20......
  • 【洛谷】P5728 【深基5.例5】旗鼓相当的对手
    题目描述现有 N 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 〈i,j〉 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的......
  • 【题解】洛谷P11186: 三目运算
    不好玩!!!这是个树形结构,直接暴力模拟,但过不去,但是需要发现答案是个区间,我们对字符串处理时记录最大值最小值,然后到叶子节点时我们将此时的区间存起来,查询时直接二分查询这个数对于的区间就可以了。总结:不好玩!!!#include<bits/stdc++.h>usingnamespacestd;#definelllonglon......
  • 洛谷P11183 [ROIR 2018 Day2] 大数据处理
    涉及知识点:动态开点线段树,贪心前言很妙很感性直观的贪心,做完神清气爽。题意Link有一个长为\(2^k\)的序列,编号从\(0\)开始,你要在上面染色,每次只能染色\([k2^i,(k+1)2^i-1]\)的区间(\(0\leqi<k\)),问最少要染色多少次才能变成给定的目标序列。目标序列以形如\((x_1,y_1),(......
  • 【题解】洛谷P1712: [NOI2016] 区间
    P1712[NOI2016]区间我对尺取法并不敏感,所以感觉有点难度,我们想到按照区间长度排序加入使得满足单调性,直到有一个区间的覆盖次数达到了m就可以计算了,而这个就是尺取法,单调性使得我们答案总是最优的。覆盖次数就可以用线段树做,而且数据范围很大需要离散化,计算答案时注意把答案带......
  • 洛谷P1182 数列分段 Section II
    洛谷P1182数列分段SectionIIP1182数列分段SectionII数列分段SectionII题目描述对于给定的一个长度为的正整数数列,现要将其分成()段,并要求每段连续,且每段和的最大值最小。关于最大值最小:例如一数列要分成段。将其如下分段:第一段和为,第段和为,第段和为,和......
  • 洛谷P11228的C++题解
    题目分析题目题目让我们算出机器人走步后经过了多少个不重复的点这道题不是搜索!直接按照题意模拟就行了。遇到墙就向右转,不是就直行。特别注意:向右转也是一步!一个格子最多算一遍!我们可以用一个标记数组 st,走过的点就打上标记。判断走道的点有没有打上标记,有就不......
  • 洛谷题单 算法2-2 常见优化技巧
    洛谷题单算法2-2常见优化技巧单调栈单调栈最经典的应用,就是在一个数列里寻找距离元素最近的比其大/小的元素位置。模板题,寻找每个元素右边第一个比它大的元素下标。stack<int>s;for(inti=n;i>=1;i--){while(s.size()&&a[s.top()]<=a[i])s.pop();f[i]=s.......
  • 洛谷P1784.数独
    P1784数独思路这个题目最麻烦的是如何判断我们需要判断每一行,每一列,每一个九宫格这里有个小技巧,把每一行,每一列,每一个九宫格哪个数有没有被用过用数组存起来哪个数字属于哪个九宫格也可以先先存起来intid[10][10]={{0,0,0,0,0,0,0,0,0,0},{0,1,1,1,2,......
  • 洛谷题单指南-二叉堆与树状数组-P1878 舞蹈课
    原题链接:https://www.luogu.com.cn/problem/P1878题意解读:n个男女排列一行,每人舞蹈技术是ai,每次找到相邻男女舞蹈技术差值绝对值最小的一对出列,输出每对出列的人员编号。解题思路:设初始有8人编号为:12345678将12,23,34,45,56,67,78中是男女的配对编号以及a......