hdu_5802_Windows 10(贪心)

时间:2020-12-16 09:49:17

题目链接:hdu_5802_Windows 10

题意:

给你两个音量a,b,要让你将音量a变到音量b,up:每秒只能一次加1的音量,down:如果连续按x秒,那么就会减2x-1的音量

题解:

对于a<=b,直接输出a-b就行

对于a>b:

要考虑3种情况:

1. 直接连按x秒

2. 先up到2x-1,然后再按x秒

3. 先连按x秒,再up到b

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll; ll p[];
int t,a,b;
void init()
{
ll tp=;
p[]=;
for(int i=;i<=;i++)p[i]=tp+p[i-],tp*=;
} inline void up(int&a,int b){if(a>b)a=b;} int fuck()
{
if(b==)
{
int pos=lower_bound(p,p+,a)-p;
return pos+;
}
int cnt=,now=,ans=INT_MAX;
while(a!=b)
{
int cha=a-b,tmp,ti;
int pos=lower_bound(p,p+,cha)-p;
tmp=a-p[pos],tmp=tmp<?:tmp;
ti=b-tmp-cnt,ti=ti<?:ti;
up(ans,pos++now+ti+cnt);//2,3情况合并处理
if(p[pos]>cha)pos--;
a-=p[pos],now+=pos+;//第一种情况
if(a==b)
{
up(ans,now+cnt);
break;
}
cnt++;//停顿次数
}
return ans;
} int main()
{
init();
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&a,&b);
if(a<=b)printf("%d\n",b-a);
else printf("%d\n",fuck());
}
return ;
}

hdu_5802_Windows 10(贪心)的更多相关文章

  1. hdu5802 Windows 10 贪心

    Windows 10 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  2. hdu-5802 Windows 10&lpar;贪心&rpar;

    题目链接: Windows 10 Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others ...

  3. cf div2 236 D

    D. Upgrading Array time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  4. 区间DP 洛谷P2858牛奶零食

    题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...

  5. lintcode 刷题 by python 总结(1)

    博主之前在学习 python 的数据结构与算法的基础知识,用的是<problem-solving-with-algorithms-and-data-structure-using-python& ...

  6. HDU 5802 Windows 10 (贪心&plus;dfs)

    Windows 10 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5802 Description Long long ago, there was ...

  7. 2017多校第10场 HDU 6178 Monkeys 贪心,或者DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6178 题意:给出一棵有n个节点的树,现在需要你把k只猴子放在节点上,每个节点最多放一只猴子,且要求每只 ...

  8. 2018&period;10&period;27 codeforces402D&period; Upgrading Array(数论&plus;贪心)

    传送门 唉我觉得这题数据范围1e5都能做啊... 居然只出了2000 考完听zxyzxyzxy说我的贪心可以卡但过了? 可能今天本来是0+10+00+10+00+10+0只是运气好T1T1T1骗了10 ...

  9. hdu 3697 10 福州 现场 H - Selecting courses 贪心 难度&colon;0

    Description     A new Semester is coming and students are troubling for selecting courses. Students ...

随机推荐

  1. mongoperf用法

    mongoperf是mongoDB自带工具,用于评估磁盘随机IO性能. 官方文档 使用方法 作用:用于部署前,评估mongodb所在存储的IO性能 用法:mongoperf <conffile, ...

  2. javascript实现列表的点击展开折叠

    <script> window.onload = function() { //要折叠的区域 var catalog = document.getElementById("div ...

  3. Zend Framework学习日记&lpar;1&rpar;--环境搭建篇&lpar;转&rpar;

    Zend Framework学习日记(1)--环境搭建篇 (1)开发工具 Zend Framework框架:http://framework.zend.com/download/latest 包含2个 ...

  4. linux线程之pthread&lowbar;join

    pthread_join使一个线程等待另一个线程结束. 代码中如果没有pthread_join:主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了.加入pthread_joi ...

  5. Linux 挂载NTFS文件系统

    步骤如下: 1.安装ntfs-3g包 [root@CS-1 pub]# yum install ntfs-3g 2.创建挂载目录 [root@CS-1 pub]# mkdir /data 3.挂载NT ...

  6. Angular4&period;x Event &lpar;DOM事件和自定义事件&rpar;

    Angular组件和DOM元素通过事件与外部进行通信,两者中的事件绑定语法是相同的-(eventName)="expression": <button (click)=&qu ...

  7. webstrom左侧项目栏不显示文件夹问题

    在使用webstrom的时候遇到问题: 打开项目,只显示package.json和webpack.config.js其他文件夹和文件都不显示 解决办法: 1.关闭webstrom当前项目 2.找到项目 ...

  8. &lpar;4&rpar;进程---daemon守护线程和join阻塞

    join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用 ...

  9. Eclipse 创建和读取yaml文件

    工具和用法: 1. eclipse插件包:org.dadacoalition.yedit_1.0.20.201509041456-RELEASE.jar 用法:将此jar包复制到eclipse-jee ...

  10. MySQL Crash Course &num;15&num; Chapter 23&period; Working with Stored Procedures

    以前写过类似的东西,用来自动生成数据. 你可以将 Stored Procedure 理解为可以重复使用的批处理文件. Stored Procedure 非常有用,我们应该尽可能地去使用它. 那么,应用 ...