2013腾讯编程马拉松初赛第一场(3月21日) 解题报告
A题 (hdu 4505)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4505
解题思路: 一次遍历就可以,这道题可以推出公式 max*10+(k*5)+n
max最高楼层,k多少个楼层需要开门,n一共多少个人
代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX 2000int time[MAX];int main(){ int n,i,t,a,b,c,d,s,k; while(scanf("%d",&n)!=EOF) { memset(time,-1,sizeof(time)); //-1代表空闲 for(i=0;i<n;i++) { scanf("%d:%d %d:%d",&a,&b,&c,&d); s=a*60+b; t=c*60+d; memset(time+s,0,(t-s)*sizeof(time[0])); //memset代替for循环 } //0代表忙碌 for(i=0,k=0;i<1440;i++) if(time[i]==-1) k++; printf("%d\n",k); } return 0;}注:原创文章,转载请注明出处: http://blog.csdn.net/qq7366020- 1楼eapink28分钟前
- 很好的习惯,加油喔!