题解 P1897 【电梯里的爱情 】

引领天下

2017-05-05 16:33:07

Solution

核心思路: 读入每个楼层,如果没有去过,肯定要为他开一次门; 然后,标记一下; 有 $n$ 个人,就一定要加 $n$s;(每个人都要下啊) 再加上从 $0$ 楼到最高楼再回来的时间(上 $6\max$,下 $4\max$,共 $10\max$) 输出。 上 AC 代码: ```cpp #include <cstdio> int n,a,ans,max;//n是人数,a是这个人要去几层,ans是答案,max是最高楼层 bool s[100000000];//楼层桶(不可思议的100000000层大楼) int main(void){ s[0]=1;//注意!0层不需要开门!我一开始少了这句话丢了30分 scanf ("%d",&n);//读n for (int i=0;i<n;i++){ scanf ("%d",&a);//每次读一个人 if (!s[a])ans+=5;//!s[a]意思是这个楼层还没见过,当然要开一次门啦 s[a]=1;//不管怎样,标记一下 if (a>max)max=a;//找最高楼层 } ans+=n;//每个人都要下去,所以加的时间一定等于n ans+=max*10;//上6下4,共10s,所以最高楼层*10 printf ("%d",ans);//输出! } ```