清华大学 2011年研究生复试上机题 解题报告
2013-02-15 22:57
337 查看
题目13:剩下的树
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1641
解决:606
题目描述:
有一个长度为整数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组整数,每组有一对数字。
输出:
可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。
样例输入:
样例输出:
就写了另外一个,memset(数组的首地址,数组欲初始化的值,数组预分配的内存),比起for循环节省了很多时间
注意:它们在C、C++中都需要头文件,我因为这调了好一会,
C中 #include<string.h>
C++中#include<cstring>
已经AC的代码:
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:1641
解决:606
题目描述:
有一个长度为整数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组整数,每组有一对数字。
输出:
可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。
样例输入:
500 3 100 200 150 300 470 471
样例输出:
298
之前想用暴力解决,但是没有解决,总是WA,和研友们讨论,估计是超时了,求大家帮我看看!
#include <stdio.h> //先对左端点排序,就容易了 int tree[10010] = {0};//最多有10001棵树 int main(){ int l,m; //freopen("THU_2011_剩下的树.txt","r",stdin); while(scanf("%d%d",&l,&m)!= EOF){ int cnt = 0;//标记留下的树的棵数 while(m--){ int s,e;//start,end scanf("%d%d",&s,&e); if(s < e){ for(int i = s;i <= e; i++) tree[i] = 1;//标记将该树移走 } else{ for(int i = e;i <= s; i++) tree[i] = 1;//标记将该树移走 } } for(int i = 0; i <= l; i++){ if(tree[i] == 0)cnt++; } printf("%d\n",cnt); } //fclose(stdin); //while(1); return 0; }
就写了另外一个,memset(数组的首地址,数组欲初始化的值,数组预分配的内存),比起for循环节省了很多时间
注意:它们在C、C++中都需要头文件,我因为这调了好一会,
C中 #include<string.h>
C++中#include<cstring>
已经AC的代码:
#include <stdio.h> #include <iostream> using namespace std; int main(){ int l,m; freopen("THU_2011_剩下的树.txt","r",stdin); while(scanf("%d%d",&l,&m)!= EOF){ int tree[10010] = {0};//最多有10001棵树 int cnt = 0;//标记留下的树的棵数 int s,e; for(int i = 0;i < m;i++){ scanf("%d%d",&s,&e); if(s > e){ int tmp = s; s = e; e = tmp; } memset(tree + s,1,(e - s + 1)*sizeof(int));//很节省时间 } for(int i = 0; i <= l; i++){ if(tree[i] == 0)cnt++; } printf("%d\n",cnt); } fclose(stdin); while(1); return 0; }
相关文章推荐
- 清华大学 2000年研究生复试上机题 解题报告
- 清华大学2011年复试上机题 解题报告
- 清华大学2000年复试上机题 解题报告
- 清华大学2001年复试上机题 第一套 解题报告
- 清华大学2001年复试上机题 第二套 解题报告
- 清华大学2006年复试上机题 解题报告
- 清华大学2007年复试上机题 解题报告
- 清华大学2008年复试上机题 解题报告
- 清华大学2002年复试上机题 第一套 解题报告
- 浙江大学2011年复试上机题 解题报告
- 北京邮电大学2011年网院方向复试上机题 解题报告
- 清华大学2002年复试上机题 第二套 解题报告
- 清华大学2009年复试上机题 解题报告
- 哈尔滨工业大学2011年复试上机题 解题报告
- 清华大学2003年复试上机题 解题报告
- 清华大学2010年复试上机题 解题报告
- 北京邮电大学2010年网院方向复试上机题 解题报告
- 北京航空航天大学 2012年复试上机题 解题报告
- Twin Prime Conjecture(浙大计算机研究生保研复试上机考试-2011年)
- hdu 3792-浙大计算机研究生保研复试上机考试-2011年