首页 > 其他分享 >(洛谷)题目题号P1047 [NOIP2005 普及组] 校门外的树

(洛谷)题目题号P1047 [NOIP2005 普及组] 校门外的树

时间:2024-09-30 21:54:59浏览次数:3  
标签:NOIP2005 int trees 区域 P1047 数组 移除 题号 qwq

Hello大家好我是小亦,这是今天发布的第二篇题解,唉我就在想怎么样才能把粉丝提上来呢隔壁朋友都比我高了好多唉苦恼qwq,好吧接受现实,好那么好今天我们来讲的是来自于NOIP2005年普及组的真题名叫:校门外的树,其实这道题跟其他几道题很相似,应该是同一家的吧qwq,好了不废话了思路给大家qwq:

首先呢这道是让我求模拟的题目,已下为个人步骤,如果有误请指出:

  1. 初始化数组:创建一个长度为 l+1 的数组 trees,其中每个元素的初始值设为1,表示每棵树最初都是存在的。

  2. 读取输入:读取马路的长度 l 和区域的数目 m。

  3. 标记区域:对于每个区域,读取起始点和终止点的坐标 u 和 v。将 trees 数组中从 u 到 v(包括端点)的元素值设为0,表示这些位置的树将被移除。

  4. 计算剩余树的数量:遍历 trees 数组,统计值为1的元素数量,即未被标记为移除的树。

  5. 输出结果:输出剩余树的总数。

详细步骤:

  • 初始化:使用一个布尔数组 trees 来表示每棵树的存在状态。数组的索引代表树的位置,从0到 ll。

  • 处理区域:对于每个区域,我们通过将数组中相应位置的值设置为0来“移除”树。

  • 统计剩余树:遍历数组,计算值为1的元素数量,这些元素代表未被移除的树。

  • 输出:输出剩余树的总数。

优化考虑:

  • 空间优化:由于题目中 l 的最大值可以达到 10的4次方,使用一个长度为 l+1 的数组是可行的。但是,如果l 非常大,我们可以考虑使用一个更紧凑的数据结构,如位图或哈希集合,来减少空间消耗。

  • 时间优化:在标记区域时,我们可以通过一次遍历将一个连续的区间设置为0,而不是逐个元素设置,这样可以减少操作次数。

  • 处理重叠区域:题目中提到区域之间可能有重合的部分,这意味着一些树可能被多次标记为移除。在我们的方法中,这不会构成问题,因为我们只关心最终哪些树被移除,而不关心它们被标记了多少次。

通过这种方法,我们可以有效地计算出在移除指定区域的树之后,马路上剩余的树的数量,好了写完思路了,希望大家能听懂,话不多说贴代码qwq:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int l, m;
    cin >> l >> m;
    vector<int> trees(l + 1, 1); // 初始化数组,所有位置都有树

    // 处理每个区域
    for (int i = 0; i < m; ++i) {
        int u, v;
        cin >> u >> v;
        for (int j = u; j <= v; ++j) {
            trees[j] = 0; // 将区域内的树标记为0
        }
    }

    // 计算剩余的树的数量
    int remaining_trees = 0;
    for (int i = 0; i <= l; ++i) {
        if (trees[i] == 1) {
            remaining_trees++;
        }
    }

    cout << remaining_trees << endl; // 输出结果
    return 0;
}

本人将注释与最完全的示例给大家,请放心食用~,完工

标签:NOIP2005,int,trees,区域,P1047,数组,移除,题号,qwq
From: https://blog.csdn.net/fafdafaafdfafQWQ/article/details/142664391

相关文章

  • 【洛谷 P1048】[NOIP2005 普及组] 采药 题解(动态规划+01背包)
    [NOIP2005普及组]采药题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株......
  • 【题解】【数组】—— [NOIP2005 普及组] 校门外的树
    【题解】【数组】——[NOIP2005普及组]校门外的树[NOIP2005普及组]校门外的树题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码[NOIP2005普及组]校门外的树通往洛谷的传送门题目描述某校大门外长度为......
  • P10471 最大异或对 The XOR Largest Pair(01trie)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • P10470 前缀统计(trie树)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • 【题解】—— [NOIP2005 普及组] 陶陶摘苹果
    【题解】——[NOIP2005普及组]陶陶摘苹果[NOIP2005普及组]陶陶摘苹果题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码[NOIP2005普及组]陶陶摘苹果通往洛谷的传送门题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出......
  • 获取导出题号范围
    ///<summary>///获取导出题号范围///</summary>///<paramname="strRangeText">导出题号范围表达式,如:0,3,5-9,20</param>///<returns>List<int>导出题号范围</returns>privateboolgetImportNumber(stringstrRangeText,outList<......
  • 洛谷 P1052 [NOIP2005 提高组] 过河
    原题https://www.luogu.com.cn/problem/P1052题目描述在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:1,⋯,L......
  • [NOIP2008 提高组] 笨小猴(洛谷题号P1125)
    [NOIP2008提高组]笨小猴题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的......
  • [NOIP2005 普及组] 采药
    题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值......
  • NOIP2005 普及:第三题 采药
    辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你......