描述某校大门外长度为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的更多相关文章

  1. NYOJ 51-管闲事的小明

    点击打开链接 管闲事的小明 时间限制:4000 ms  |  内存限制:65535 KB 难度:2 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数 ...

  2. nyoj51-管闲事的小明

    管闲事的小明 时间限制:4000 ms  |  内存限制:65535 KB 难度:2 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端 ...

  3. 小明的密码-初级DP解法

    #include #include #include using namespace std; int visited[5][20][9009];// 访问情况 int dp[5][20][9009] ...

  4. 小明系列问题――小明序列(LIS)

    小明系列问题――小明序列 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  5. ACM 擅长排列的小明

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...

  6. ACM 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...

  7. HDU2096 小明A+B

    入门级都没到的水题!看到顺便就做了,AC记录喜+1 Description 小明今年3岁了, 现在他已经能够认识100以内的非负整数, 并且能够进行100以内的非负整数的加法计算. 对于大于等于100 ...

  8. 小明A+B[HDU2096]

    小明A+B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. nyist 676 小明的求助

    http://acm.nyist.net/JudgeOnline/problem.php?pid=676 小明的求助 时间限制:2000 ms  |  内存限制:65535 KB 难度:2   描述 ...

随机推荐

  1. css新增选择器

  2. Liferay 6.2 改造系列之九:修改用户信息填写规则

    为了让用户信息更贴近实际需求,修改如下信息: 1.让登录名可以使用数字.“.”.“_”等 在/portal-master/portal-impl/src/portal.properties文件中,有如 ...

  3. C# break continue return

    break:跳出当前循环,执行循环后的代码 continue:跳出当前循环,执行下一次循环 return:跳出整个方法

  4. 廖雪峰js教程笔记10 浏览器对象

    JavaScript可以获取浏览器提供的很多对象,并进行操作. window window对象不但充当全局作用域,而且表示浏览器窗口. window对象有innerWidth和innerHeight属 ...

  5. Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...

  6. 设置随机启动--《用delphi开发共享软件》-15.1任务管理器

    在设置窗体中 chkAutoStart: TCheckBox; 在设置窗体中 chkAutoStart: TCheckBox; procedure TFrmSetup.FormCreate(Sende ...

  7. jquery.color.js的使用

    Jquery本身不支持变色,Jquery Color.js弥补了这缺陷并为animate动画赋予变色效果,如下红变蓝后执行回调再由蓝变红. <!DOCTYPE html> <html ...

  8. Open CV 播放视频(2)

      演示:读取一个视频,然后播放,ESC退出.   #include "stdafx.h"   #include <opencv2/core/core.hpp>   # ...

  9. LightOJ1230 Placing Lampposts(DP)

    题目大概说给一个森林求其最小点覆盖数,同时在最小点覆盖条件下输出最多有多少条边被覆盖两次. dp[0/1][u]表示以u为根的子树内的边都被覆盖且u不属于/属于覆盖集所需的最少点数 另外,用cnt[0 ...

  10. ural 1145. Rope in the Labyrinth

    1145. Rope in the Labyrinth Time limit: 0.5 secondMemory limit: 64 MB A labyrinth with rectangular f ...