4029: [HEOI2015]定价

题目连接:

http://www.lydsy.com/JudgeOnline/problem.php?id=4029

Description

在市场上有很多商品的定价类似于 999 元、4999 元、8999 元这样。它们和 1000 元、5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商家常用的价格策略。不过在你看来,这种价格十分荒谬。于是你如此计算一个价格 p(p 为正整数)的荒谬程度:

1、首先将 p 看做一个由数字组成的字符串(不带前导 0);

2、然后,如果 p 的最后一个字符是 0,就去掉它。重复这一过程,直到 p 的最后一个字符不是 0;

3、记 p 的长度为 a,如果此时 p 的最后一位是 5,则荒谬程度为 2 * a - 1;否则为 2 * a。

例如,850 的荒谬程度为 3,而 880 则为 4,9999 的荒谬程度为 8。

现在,你要出售一样闲置物品,你能接受的定价在 [L, R] 范围内,你想要给出一个荒谬度最低的价格。

Input

输入文件的第一行包含一个正整数 T,表示测试数据的数目。

每个测试数据占单独的一行,包含两个空格分隔的正整数 L, R,表示定价的区间。

Output

对于每个测试数据,在单独的一行内输出结果。如果荒谬度最低的价格不唯一,输出最小的那个。

Sample Input

3

998 1002

998 2002

4000 6000

Sample Output

1000

1000

5000

Hint

题意

题解:

直接贪心,两种贪心方式。

1.直接让最后一位不为0的数加1就好了,这个正确性显然。

2.暴力枚举0的数量,然后枚举结尾是0和5的情况,因为显然这两种情况是最优的,但是注意得大于等于l。

代码1

#include<bits/stdc++.h>
using namespace std; int cal(long long x)
{
int tmp = 0;
while(x%10==0)x/=10;
if(x%10==5)tmp--;
while(x)x/=10,tmp+=2;
return tmp;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long l,r;
scanf("%lld%lld",&l,&r);
long long ans = l,ans2 = cal(l);
while(l<r)
{
long long p = 1;
while(l%10==0)l/=10,p*=10;
l=l*p+p;
if(l<=r&&ans2>cal(l))ans=l,ans2=cal(l);
}
cout<<ans<<endl;
}
}

代码2

#include<bits/stdc++.h>
using namespace std; int cal(long long x)
{
int tmp = 0;
while(x%10==0)x/=10;
if(x%10==5)tmp--;
while(x)x/=10,tmp+=2;
return tmp;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long l,r;
scanf("%lld%lld",&l,&r);
long long ans = l,ans2 = cal(l);
for(int i=1;i<=r;i*=10)
{
int tmp;
tmp = l/(i*10)*(i*10);
while(tmp<l)tmp+=(i*10);
if(tmp<=r&&cal(tmp)<ans2)ans=tmp,ans2=cal(tmp);
tmp = l/(i*10)*(i*10)+5*i;
while(tmp<l)tmp+=(i*10);
if(tmp<=r&&cal(tmp)<ans2)ans=tmp,ans2=cal(tmp);
}
cout<<ans<<endl;
}
}

BZOJ 4029: [HEOI2015]定价 贪心的更多相关文章

  1. BZOJ 4029 HEOI2015 定价 数位贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4029 题意概述:对于一个数字的荒谬程度定义如下:删除其所有的后缀0,然后得到的数字长度为a ...

  2. BZOJ 4029 [HEOI2015] 定价 ( 数位DP/贪心 )

    前言 最近学了数位DP,感觉挺简单又实用.这道题就比较水,可以用300B的贪心过掉-网上似乎大多是贪心的题解,我就写写DP的做法 题意 给出正整数区间[L,R][L,R][L,R],定义荒谬值为 (去 ...

  3. BZOJ 4029 [HEOI2015]定价

    题解: !!!!!! 分类讨论,情况挺多 #include<iostream> #include<cstdio> #include<cstring> using n ...

  4. 「BZOJ4029」[HEOI2015] 定价 贪心

    「BZOJ4029」[HEOI2015] 定价 2015年4月28日2,7490 Description 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 ...

  5. Luogu P4109 [HEOI2015]定价 贪心

    思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($i ...

  6. 【BZOJ4029】[HEOI2015]定价(贪心)

    [BZOJ4029][HEOI2015]定价(贪心) 题面 BZOJ 洛谷 题解 每次加上十进制下的\(lowbit\)就行了??? #include<iostream> #include ...

  7. 洛谷——P4109 [HEOI2015]定价

    P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...

  8. BZOJ 4029 [HEOI 4029] 定价 解题报告

    这个题好像也是贪心的感觉.. 我们枚举 $1,5,10,50,100,\dots$ ,找出在 $[l, r]$ 内能整除它们的最小的数. 然后找到其中在荒谬值最小的情况下数值最小的那个数, 就做完了. ...

  9. [HEOI2015]定价 (贪心)

    分类讨论大法好! \(solution:\) 先说一下我对这个题目的态度: 首先这一题是贪心,这个十分明显,看了一眼其他题解都是十分优秀的贪心,可是大家都没有想过吗:你们贪心都是在区间\([l,r]\ ...

随机推荐

  1. 【EverydaySport】健身笔记——静态牵拉

    静态牵拉一般在运动后进行,可以有效的提高肌肉的柔韧性和关节的灵活性,预防和缓解疼痛. 每个动作达到自己活动范围的最大,有牵拉感即说明有效,静态保持至少30秒,切勿震荡,进行2组. 1 大腿前群牵拉 2 ...

  2. Linux后台研发面试题

    本系列给出了在复习过程中一些C++后台相关面试题,回答内容按照笔者的知识点掌握,故有些问题回答较为简略 1.信号的生命周期 一个完整的信号生命周期可以用四个事件刻画:1)信号诞生:2)信号在进程中注册 ...

  3. openfire在内网的情况下 文件传输代理的设置

    openfire在内网的情况下 文件传输代理的设置 http://blog.csdn.net/v6543210/article/details/22506565

  4. C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度

    using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; ...

  5. IE11中实现颜色渐变

    background: -ms-linear-gradient(left,#daa23e,#ad7f27); 下面是css3中颜色渐变对各个浏览器的写法:background: -webkit-lin ...

  6. JVM字节码执行引擎和动态绑定原理

    1.执行引擎 所有Java虚拟机的执行引擎都是一致的: 输入的是字节码文件,处理过程就是解析过程,最后输出执行结果. 在整个过程不同的数据在不同的结构中进行处理. 2.栈帧 jvm进行方法调用和方法执 ...

  7. tomcat - gc日志输出

    原创 2017年01月04日 14:32:37 2090 tomcat/bin catalina.sh JAVA_OPTS='-server -Xms4g -Xmx4g -Xss256k -XX:Pe ...

  8. 【转载】JAVA多线程和并发基础面试问答

    转载自这里. 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注: ...

  9. git在window与linux的换行符问题

    1:背景.我win7,后端是win10,使用了TortoiseGit工具.我使用ssh,他使用http.仓库是在linux,使用gitLab管理 2:问题.仓库是总监之前建好的.后端把文件add后pu ...

  10. AC日记——小A的糖果 洛谷七月月赛

    小A的糖果 思路: for循环贪心: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 #defi ...