• 入门篇(1)-入门模拟-简单模拟-Codeup习题-问题A:剩下的树


    问题A:剩下的树

    题目描述

    有一个长度为整数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组整数,每组有一对数字。

    输出

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

    样例输入

    4 2
    1 2
    0 2
    11 2
    1 5
    4 7
    0 0
    

    样例输出

    2
    5
    

    思路

    简单模拟,定义一个足够大的数组,初始化为0,0代表有树,1代表无树,对输入的区间l-r,把数组的值更改为1,最后统计数组0的个数。

    #include<cstdio>
    #include<cstring>
    int main() {
    	int L, M;
    	int tree[10005];
    	while(scanf("%d%d", &L, &M) != EOF && (L != 0 && M != 0)) {
    		memset(tree, 0, sizeof(tree));
    		for(int i = 0; i < M; i++) {
    			int l, r;
    			scanf("%d%d", &l, &r);
    			for(int j = l; j <= r; j++) {
    				tree[j] = 1;
    			}
    		}
    		int ans = 0;
    		for(int i = 0; i <= L; i++) {
    			if(!tree[i]) ans++;
    		}
    		printf("%d
    ", ans);
    	}
    	return 0;
    }
    
    作者:kindleheart
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    CSS实现元素居中原理解析
    Windows 下 Ionic 开发环境搭建
    JavaScript实现简单的双向数据绑定
    JavaScript之Promise对象
    前端工程师的进阶之路
    前端开发必备之chrome插件
    Javascript之Event Loop
    CentOS7 如何挂载网络设备
    mysql 全量备份以及增量备份
    zabbix 内网监控云服务器
  • 原文地址:https://www.cnblogs.com/kindleheart/p/14440288.html
Copyright © 2020-2023  润新知