管闲事的小明-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 描述 ...
随机推荐
- getTickCount()函数 VS GetTickCount()函数
这俩函数看上去长得太像了,笔者曾经马大哈地把两者当成一个函数了(确实长得很像),知道有一天发现返回的值离预期值差很远差仔细查了下. 1. getTickCount() 实际上,该函数为opencv中的 ...
- ZJOI2016 Round 1 之前
day 0 中午要出发了,很虚.. 主要原因: 1.在转语言 2.模板还没有系统整理过 3.最近代码能力感觉要狗带 4.急于想为联赛翻盘... MARK几个未完成的任务 1.字符串处理再去看看..实在 ...
- 餐厅点餐系统app第二天
队友: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...
- BZOJ3068 : 小白树
枚举每条树边,将其断开,那么两侧肯定取带权重心最优. 考虑如何求出每个子树的重心,枚举其所有儿子,通过重量关系就可以判断出重心位于哪棵子树. 然后将那棵子树的重心暴力往上爬即可,因为每个点作为重心肯定 ...
- 假装有题目 & Trie+贪心
题意: 从N个数中选出两个使其异或值最大. SOL: 建立一个01字典树,然后对每一个数在树上贪心即可...Trie一个挺好的运用,复杂度O(n*n的位数) CODE: #include <cs ...
- 提高安全性而在HTTP响应头中可以使用的各种响应头字段
本文介绍在Web服务器做出响应时,为了提高安全性而在HTTP响应头中可以使用的各种响应头字段.由于部分浏览器中有可能对某些字段或选项不提供支持,所以在使用这些字段时请先确认客户端环境. X-Frame ...
- Leetcode Binary Tree Inorder Traversal
Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...
- USACO 5.5 Picture(周长并)
POJ最近做过的原题. /* ID: cuizhe LANG: C++ TASK: picture */ #include <cstdio> #include <cstring> ...
- Command mvn jetty:run
How to use the command mav jetty:run? There is a simple display as below: Step 1: You should generat ...
- 《1Q84》--[日]村上春树
<1Q84>,作者是:村上春树(村长) 故事梗概: 1984年,青豆与天吾皆为30岁,青豆为健身教练但另一面则是暗杀者,将受到极度暴力 的妇女们的丈夫们送至死亡的世界.天吾的职业为升大学的 ...