管闲事的小明-nyoj51
描述某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。 已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。聪明的小明干了一件又一件事,他觉得这个很有意思,就想用计算机来帮助建筑工人统计这些树,现在任务来了,计算将这些树都移走后,马路上还有多少棵树。
- 输入
- 第一行是一个整数N表示有N组测试数据(1<=N<=100) 每组测试数据的第一行有两个整数:L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
- 输出
- 输出包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。
- 样例输入
- 
1 
 500 3
 150 300
 100 200
 470 471
- 样例输出
- 
298 #if 0 
 //总是wa。我的思路是:把区域一个个处理,若遇到相连或重叠的区域,改变尾端,否则,首段尾端一起变。 我想可能是思路太复杂,有特殊情况没考虑
 #include <stdio.h>
 #include <stdlib.h>
 struct se
 {
 int s;
 int e;
 }area[]; int cmp(const void *x, const void *y)
 {
 struct se *m = (struct se *)x;
 struct se *n = (struct se *)y;
 return m->s - n->s;
 } int main()
 {
 int n, i, len, m, sum, a, b, flag;
 scanf("%d", &n);
 while(n--){ scanf("%d %d", &len, &m);
 len++;/*加上开头端点*/
 for(i = ; i <= m; i++){ scanf("%d %d", &area[i].s, &area[i].e); }
 qsort(area+, m, sizeof(area[]), cmp);
 a = area[].s;/*记录区域首端*/
 b = area[].e;/*记录区域尾端*/
 sum = ;
 flag = ;
 for(i = ; i < m; i++){ if(area[i+].s <= b && area[i+].e >= b)
 {
 b = area[i+].e;
 flag = ;
 }
 else if(area[i+].s > b)
 {
 flag = ;
 sum += b-a+;
 a = area[i+].s;
 b = area[i+].e;
 sum += b-a+;
 }
 // if(flag == 0)
 // {
 // sum += b-a+1;
 // } }
 if(flag == )
 {
 sum += b-a+;
 }
 printf("%d\n", len-sum); }
 return ;
 }
 #endif
 //AC了,思路比上一个简单,每组数据测试前,清零,然后在每个区域内都赋值1,最后在从头往后(下标为0到M-1)统计值为1的数组元素,最最后用总数去剪它即可
 #include <stdio.h>
 #include <string.h>
 #define M 10002
 int tray[M]; int main()
 {
 int n, len, num, a, b, sum, i;
 scanf("%d", &n);
 while(n--){ memset(tray, , sizeof(tray));
 sum = ;
 scanf("%d %d", &len, &num);
 while(num--){ scanf("%d %d", &a, &b);
 for(i = a; i <= b; i++)
 {
 tray[i] = ;
 } }
 for(i = ; i < M; i++){ if(tray[i] = )
 sum++; }
 printf("%d\n", len+-sum); }
 return ;
 }
管闲事的小明-nyoj51的更多相关文章
- NYOJ 51-管闲事的小明
		点击打开链接 管闲事的小明 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数 ... 
- nyoj51-管闲事的小明
		管闲事的小明 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端 ... 
- 小明的密码-初级DP解法
		#include #include #include using namespace std; int visited[5][20][9009];// 访问情况 int dp[5][20][9009] ... 
- 小明系列问题――小明序列(LIS)
		小明系列问题――小明序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ... 
- ACM 擅长排列的小明
		擅长排列的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ... 
- ACM 懒省事的小明
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ... 
- HDU2096 小明A+B
		入门级都没到的水题!看到顺便就做了,AC记录喜+1 Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100 ... 
- 小明A+B[HDU2096]
		小明A+B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ... 
- nyist 676 小明的求助
		http://acm.nyist.net/JudgeOnline/problem.php?pid=676 小明的求助 时间限制:2000 ms | 内存限制:65535 KB 难度:2 描述 ... 
随机推荐
- loadrunner资源过滤器
			通过该功能可以实现排除某个资源,很实用 Download Filters功能 帮助在回放脚本的时候对某些特定的访问进行屏蔽,解决页面读取中跨服务器带来数据影响的问题. 过滤规则中有3中策略,即URL. ... 
- HDU 3068 回文串-Manacher
			题意链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意:中文题. 思路:Manacher模板题 #include<iostream> ... 
- JS(ajax笔记)
			简介:AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法,是与服务器交 ... 
- DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards
			题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ... 
- 将MapReduce的结果输出至Mysql数据库
			package com.sun.mysql;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException; ... 
- MFC HTTP访问URL
			unsigned short nPort; //用于保存目标HTTP服务端口 CString strServer, strObject; //strServer用于保存服务器地址,strObject用 ... 
- javaScript入门第一天
			JavaScript提供七种不同的data types(数据类型),它们是undefined(未定义), null(空), boolean(布尔型), string(字符串), symbol(符号), ... 
- Codeforces 677E Vanya and Balloons(DP + 一些技巧)
			题目大概说给一张地图,地图每个格子都有0到9中的某一个数字.现在要在一个格子放炸弹,炸弹爆炸后水柱有两种扩展方式,一种是上.下.左.右,另一种是左上.右下.右上.左下,且四个方向的长度都一样.问放哪个 ... 
- IO中同步、异步与阻塞、非阻塞的区别
			一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如si ... 
- HDU 3090 (贪心)
			题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3090 题目大意:一共n段路.每段路每千米都会被抢劫一定数量,可以雇佣武士护卫m千米.问最少被抢劫数量 ... 
