1594: TomCat的操作系统课(思维)

1594: TomCat的操作系统课
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 58 Solved: 12
[Submit][Status][Web Board]
Description

TomCat是学渣一枚,TomCat上课经常连书都懒得拿,因为TomCat实在不想背着一本比字典还厚的《操作系统》课本。然而,TomCat总是能够神奇的在其他同学没能回答对的问题上作出正确的回答???!!!,然而,这一次,老师在叫了几位同学回答“电梯算法”和电梯的区别….,同学们都没回答正确,接着老师叫到了TomCat,TomCat此时正在神游,根本不知道“电梯算法”是什么鬼。所以就….,TomCat不开心了,现在TomCat想简单模拟“电梯算法”,但是作为学渣,TomCat实在不想动手,于是他告诉你“电梯算法”就是这样的,它是磁盘调度算法,叫做SCAN算法,磁头从磁盘的一端移向另一端,同时当磁头移过每个柱面的时候,会处理该柱面上的服务请求。当到达另一端时,磁头改变移动反向,处理继续。磁头在磁盘上来回扫描。假设柱面的范围是[0,180], 初始磁头在pos位置(磁头总是先往左在往右),给你每个服务的请求时间,以及请求所在的柱面。TomCat需要你计算该请求得到磁头的响应需要的时间。(假设磁头1ms移动一个单位柱面。处理请求时间忽略不计)

Input

第一行磁头0时刻所在的位置pos(pos>=0&&pos<=180) T(T<=100000)个请求

接下来T 行是请求的时间t(t<=100000),请求位于的柱面s(s>=0&&s<=180)

Output

输出请求到被处理的等待时间(单位:ms)

Sample Input

90 2
10 10
5 83
90 2
5 10
10 80

Sample Output

70ms
2ms
75ms
0ms

HINT

Source
/*
WA快到爆炸,开始理解错了请求时间t,WA好几发,然后正确理解请求时间后,推导公式,老想着更快,更简单,又WA好几发~~~~
解题思路:
请求时间t为,只有 时间 到t时 所对应的请求 才会处理,如果到了柱面s(假设耗时x),但是t还没到(x < t),则要直到下一次到柱面s并且t>=x,这个柱面的请求才会被处理,所以到被处理的等待时间就是,ans = x - t(这次(x >=t了)到柱面s总共耗时 - 请求时间);
根据s在pos位置的左边还是右边分为两种情况:

1)s <= pos:
x0 = pos - x;(x0,表示pos第一次到s时耗时)
x1 = x0 + 2*s;(x1表示pos第二次扫描到s时耗时,后面xi类推)
x2 = x1 + 2*(180-s);
x3 = x2 + 2*s;
x4 = x3 +  2*(180-s);
2)s > pos:
x0 = 2*pos + s- pos;
x1 = x0 + 2*(180-s);
x2 = x1 +2*s;
x3 = x2 + 2*(180-s);
...
所以根据上述规律,x算到x >=t时停止

*/
AC_code:

#include<stdio.h>
int main()
{
    long long pos,T, t,s,x,r;
    while(~scanf("%lld%lld",&pos,&T))
    {
        while(T--)
        {
            scanf("%lld%lld",&t,&s);
            x = s <= pos ? pos - s : 2 * pos + s - pos;
            r = 1;
            while(x < t)
            {
                if(r % 2 != 0)
                    x += s <= pos ? 2*s : 2*(180-s);
                else
                    x += s <= pos ? 2*(180-s) : 2*s;
                r++;
            }
            printf("%lldms\n",(x-t));
        }
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leo Bliss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值