1 条题解

  • 0
    @ 2025-8-24 21:31:38

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Edmundino
    AFO

    搬运于2025-08-24 21:31:38,当前版本为作者最后更新于2019-08-27 19:35:38,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这题可以用队列的思想来做

    是不是有点复杂了

    首先,我们要给数据先排个列,用sort就OK了,

    应该不会有人不会吧

    然后嘞我们求队首与前一个数的差

    如果相等我们的时间就直接加1

    否则就要用这个差去乘6再加5加1

    因为上一楼要6秒,开个门要5秒,走个人要1秒

    然后队首出队。直到队列空了,就停止,再加上最后一个出队的数乘4

    因为还要回到0楼

    最后送上AC代码,好人做到底,再帮忙点个赞呗

    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<iomanip>
    #include<string>
    
    using namespace std;
    
    long long n,a[1000010],front,t=0,s,l=0;
    
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i];
    	}
    	front=1;
    	sort(a+1,a+1+n);
    	while(front!=n+1)
    	{
    		int c=a[front]-a[front-1];
    		if(c==0)
    		{
    			t+=1;
    		}
    		else
    		{
    			t+=(c*6+6);
    		}
    		front++;
    	}
    	t+=a[front-1]*4; 
    	cout<<t;
    	return 0;
    }
    
    
    
    • 1

    信息

    ID
    865
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者