zoukankan      html  css  js  c++  java
  • 入门篇(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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    散点图增加趋势线
    asp.net自动刷新获取数据
    jQuery在asp.net中实现图片自动滚动
    tornado 学习笔记一:模板
    node.js 学习笔记二:创建属于自己的模块
    mysql 5.6 innodb memcache 操作学习一
    unicode,str
    node.js 学习笔记四:读取文件
    gevent 学习笔记一
    while 循环居然可以用else
  • 原文地址:https://www.cnblogs.com/kindleheart/p/14440288.html
Copyright © 2011-2022 走看看