码迷,mamicode.com
首页 > Windows程序 > 详细

hdu 5802 Windows 10

时间:2016-08-06 09:52:24      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

官方题解:

Windows 10

_您可能是正版Windows 10的受害者_ 直接贪心就好

比较直观的看法是使劲往下降,然后升回来

或者使劲往下降然后停顿然后再使劲往下降。。。

于是就能将问题变成一个子问题,然后dfs就好

需要注意的是由于按up键也可以打断连续向下的功效

所以应该记录停顿了几次,以后向上的时候用停顿补回来

 

/*by*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long LL;
const LL N=500;
const LL INF=0x3f3f3f3f;
LL p,q;
int main()
{
    LL T;
    cin>>T;
    while(T--) {
        scanf("%lld%lld",&p,&q);
        if(p<=q) {
            printf("%lld\n",q-p);
            continue;
        }
        LL ans=INF,down=1,s=0,st=0;/*s:操作次数;st:停顿的次数*/
        while(p>=q){
            p-=down;
            down<<=1;
            s++;
            if(p<=q){
                if(q-p<=st){/*向上操作次数可以被停顿的次数代替*/
                    ans=min(ans,s+st);
                    break;
                }
                LL tmp=max(q-max(p,(LL)0),st);/*音量大于0*/
                ans=min(ans,tmp+s);
                down>>=1;
                p+=down;
                down=1;
                st++;
                s--;
            }
        }
        printf("%lld\n",ans);
    }
    return 0;
}

 

hdu 5802 Windows 10

标签:

原文地址:http://www.cnblogs.com/yu0111/p/5743313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!