[BZOJ4029][HEOI2015] 定价
Description
在市场上有很多商品的定价类似于 999 元、4999 元、8999 元这样。它们和 1000 元、5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商家常用的价格策略。不过在你看来,这种价格十分荒谬。于是你如此计算一个价格 p(p 为正整数)的荒谬程度:
Input
输入文件的第一行包含一个正整数 T,表示测试数据的数目。
Output
对于每个测试数据,在单独的一行内输出结果。如果荒谬度最低的价格不唯一,输出最小的那个。
Sample Input
998 1002
998 2002
4000 6000
Sample Output
1000
5000
HINT
对于 100% 的数据,T ≤ 100,1 ≤ L ≤ R ≤ 10^9.
题解:
R-L最大可能为10^9,且T<=100,故显然不能直接for循环判断。荒谬值会因为结尾为0的个数而缩小,故选择数的时候就可以从这里入手。同样是for循环,我们在枚举的时候是可以跳过许多绝对不可能成为答案的数,如现在的数为140,那么141,142,……,149显然都可以跳过;现在的数为10000,那么10001,10002,……,19999都可以跳过。故每次我们不是直接+1,而是增加当前数最后一位非0的数位+1,同时判断最后一位非0数是否为5,如果是,则答案-1。
代码:
---------------------------------------------------------------------------------------------------
#include <cstdio>
int l, r, t, ans, min, o;
int add(int o)
{
int res = 1;
while (o % 10 == 0) res *= 10, o /= 10;
return res;
}
int work(int o)
{
while (o % 10 == 0) o /= 10;
int t = o % 10, a = 0;
while (o) o /= 10, a++;
if (t == 5) return 2 * a - 1;
return 2 * a;
}
int main()
{
freopen("Price.in", "r", stdin);
freopen("Price.out", "w", stdout);
scanf("%d" ,&t);
while (t--)
{
scanf("%d %d", &l, &r), o = l, min = work(o), ans = o;
for (;;)
{
o += add(o);
if (o > r) break;
int t = work(o);
if (t < min) min = t, ans = o;
}
printf("%d\n", ans);
}
return 0;
}
--------------------------------------------------------------------------------------------------
[BZOJ4029][HEOI2015] 定价的更多相关文章
- BZOJ4029 HEOI2015定价
贪心. 每次将最后一个非零位加一判断即可. 一开始想少了,只关心把最后一位变成5了,其实可以都变的. #include<bits/stdc++.h> using namespace std ...
- 【BZOJ4029】[HEOI2015]定价(贪心)
[BZOJ4029][HEOI2015]定价(贪心) 题面 BZOJ 洛谷 题解 每次加上十进制下的\(lowbit\)就行了??? #include<iostream> #include ...
- 「BZOJ4029」[HEOI2015] 定价 贪心
「BZOJ4029」[HEOI2015] 定价 2015年4月28日2,7490 Description 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 ...
- BZOJ 4029: [HEOI2015]定价 贪心
4029: [HEOI2015]定价 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4029 Description 在市场上有很多商品的 ...
- 洛谷——P4109 [HEOI2015]定价
P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...
- P4109 [HEOI2015]定价
题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...
- [HEOI2015]定价
题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...
- [HEOI2015]定价 (贪心)
分类讨论大法好! \(solution:\) 先说一下我对这个题目的态度: 首先这一题是贪心,这个十分明显,看了一眼其他题解都是十分优秀的贪心,可是大家都没有想过吗:你们贪心都是在区间\([l,r]\ ...
- Price(洛谷P4109 [HEOI2015]定价)
题目 思路: 按照我的思路这一题应该是这样子的 剔除+判断 剔除 因为后面的0要越多越好,所以我们判断0出现的情况,当2个数之间的差大与10时,证明2个之间会存在一个0,所以这一位我们可以把它去掉,相 ...
随机推荐
- mac系统小记
1.设置 ls 命令结果的颜色 默认的 ls 是没有颜色的,可以通过设置 CLICOLOR 和 LSCOLORS 两个环境变量来实现.其中,CLICOLOR 是用来设置是否进行颜色的显示(CLI: ...
- Android锁屏后数据改变的解决方案
如果一个界面设置成横屏,那么锁屏再开启之后,会重新执行一遍onCreate()方法.对于这个问题的解决方案如下: 只需要在Menifest文件的activity相应标签下添加这行代码即可: andro ...
- linux下共享库的注意点之-fpic
在编译共享库必须加上-fpic.这是为什么呢? 首先看一个简单的例子: #include <stdio.h> int fun1() { printf("fun1\n") ...
- 【Go入门教程6】interface(interface类型、interface值、空interface{}、嵌入interface、反射)
interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单 ...
- Proj.4坐标系统创建参数
Proj.4坐标系统创建参数 本文由乌合之众lym瞎编,欢迎转载blog.cnblogs.net/oloroso 本文原文地址(https://github.com/OSGeo/proj.4/wiki ...
- Spring预处理
当需要在某些Spring项目一启动,就执行某些操作时,需要实现改接口ApplicationListener,重写onApplicationEvent方法,将需要的预处理操作全部写在该方法中 当初始化完 ...
- PE440
一些证明,推荐复制入atom观看 首先我们考虑这个T(n)是什么,我们可以列出递归式: (definition:T) T(0) = 1 T(1) = 10 T(n) = 10*T(n-1) + T(n ...
- svn 更新命令(冲突时使用theirs)
svn cleanup svn revert -R -q ./ svn up --force --accept tc
- Redis 复制、Sentinel的搭建和原理说明
背景: Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端) ...
- javascript小技巧
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcE ...