BZOJ 4029 HEOI2015 定价 数位贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4029
题意概述:
对于一个数字的荒谬程度定义如下:删除其所有的后缀0,然后得到的数字长度为a,如果最后一个数字是5,荒谬程度为2*a-1,否则荒谬程度为2*a
现给出一些区间[L,R],询问区间内荒谬程度最小的价格。如果有多个,给出最低的那个。
T<=100,1<=L,R<=10^9
分析:
本来以为找到了一个数位dp的题结果发现随意分析一下性质就成了个贪心。。。。
首先可以发现最后一位是非0的情况都可以O(1)求解,需要注意的只有是0的情况,而且一定要是连续的0才有去枚举的意义。从后往前做(好想一点),每次把最后一位如果小于5且不为0就变成5,然后更新一次答案,如果不为0就再变成0,然后更新一次答案。(不管变不变答案是要更新的)
这个做法的正确性的话贪贪就有了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<cctype>
using namespace std; int T,L,R; int calc(int x)
{
while(x%==) x/=;
int len=,d=x%==?-:;
while(x) x/=,len++;
return len*+d;
}
void work()
{
int ans=L,tmp=L,add=,MIN=calc(L);
for(int i=;i<=&&tmp<=R;i++) {
if(<tmp/add%&&tmp/add%<) tmp=(tmp/add-tmp/add%+)*add;
if(tmp<=R&&calc(tmp)<MIN) ans=tmp,MIN=calc(tmp);
if(<tmp/add%) tmp=(tmp/add-tmp/add%+)*add;
if(tmp<=R&&calc(tmp)<MIN) ans=tmp,MIN=calc(tmp);
add*=;
}
printf("%d\n",ans);
}
int main()
{
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
scanf("%d",&T);
for(int i=;i<=T;i++) {
scanf("%d%d",&L,&R);
work();
}
return ;
}
BZOJ 4029 HEOI2015 定价 数位贪心的更多相关文章
- BZOJ 4029 [HEOI2015] 定价 ( 数位DP/贪心 )
前言 最近学了数位DP,感觉挺简单又实用.这道题就比较水,可以用300B的贪心过掉-网上似乎大多是贪心的题解,我就写写DP的做法 题意 给出正整数区间[L,R][L,R][L,R],定义荒谬值为 (去 ...
- BZOJ 4029: [HEOI2015]定价 贪心
4029: [HEOI2015]定价 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4029 Description 在市场上有很多商品的 ...
- BZOJ 4029 [HEOI2015]定价
题解: !!!!!! 分类讨论,情况挺多 #include<iostream> #include<cstdio> #include<cstring> using n ...
- 【BZOJ4029】[HEOI2015]定价(贪心)
[BZOJ4029][HEOI2015]定价(贪心) 题面 BZOJ 洛谷 题解 每次加上十进制下的\(lowbit\)就行了??? #include<iostream> #include ...
- [HEOI2015]定价 (贪心)
分类讨论大法好! \(solution:\) 先说一下我对这个题目的态度: 首先这一题是贪心,这个十分明显,看了一眼其他题解都是十分优秀的贪心,可是大家都没有想过吗:你们贪心都是在区间\([l,r]\ ...
- 「BZOJ4029」[HEOI2015] 定价 贪心
「BZOJ4029」[HEOI2015] 定价 2015年4月28日2,7490 Description 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 ...
- 洛谷——P4109 [HEOI2015]定价
P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...
- BZOJ 4029 [HEOI 4029] 定价 解题报告
这个题好像也是贪心的感觉.. 我们枚举 $1,5,10,50,100,\dots$ ,找出在 $[l, r]$ 内能整除它们的最小的数. 然后找到其中在荒谬值最小的情况下数值最小的那个数, 就做完了. ...
- BZOJ 4027: [HEOI2015]兔子与樱花 贪心
4027: [HEOI2015]兔子与樱花 Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号 ...
随机推荐
- mobienet, shufflenet
参考github上各位大神的代码 mobilenet和shufflenet,实现起来感觉还是各种问题. mobilenet目前使用的代码来自这里:https://github.com/BVLC/caf ...
- 课时92.CSS元素显示模式转换(掌握)
我们之前学习的显示模式都可以不用记忆,因为这节课我们要学习转换,我们可以任意来进行一个转换的,上面这些东西有一个了解就行了.所有的标签都有一个属性叫做display,display的中文含义就是显示的 ...
- Spring-boot官方案例分析之log4j
Spring-boot官方案例分析之log4j 运行单元测试分析: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfigur ...
- 记录一次LOB损坏导致的EXPDP导出ORA-01555报错
同事导出数据,结果遇到如下报错: expdp user1/XXXXXXXX directory=szdata1 dumpfile=szhzinfo_20180319.dmp logfile=szhzi ...
- iOS 崩溃日志分析(个人总结,最实用)
iOS 崩溃日志分析(个人总结,最实用) 要分析奔溃日志需要三个文件:crash日志,symbolicatecrash分析工具,.dSYM符号集 0. 在桌面创建一个crash文件夹 1. 需要Xco ...
- UICollectionViewCell的设置间距
UICollectionViewCell的设置间距 #pragma mark - UICollectionView 大小(宽高,平均一行三个) - (CGSize)collectionView:(UI ...
- #leetcode刷题之路11-盛最多水的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线, ...
- Django模板简介
在settings.py中有个TEMPLATES的设置,其中BACKEND用来配置Django模板引擎, DIRS 定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件 一般我们都会把模 ...
- Java集合类——Set、List、Map、Queue接口
目录 Java 集合类的基本概念 Java 集合类的层次关系 Java 集合类的应用场景 一. Java集合类的基本概念 在编程中,常需要集中存放多个数据,数组是一个很好的选择,但数组的长度需提前指定 ...
- JS高级. 03 混入式继承/原型继承/经典继承、拓展内置对象、原型链、创建函数的方式、arguments、eval、静态成员、实例成员、instanceof/是否在同一个原型链
继承:当前对象没有的属性和方法,别人有,拿来给自己用,就是继承 1 混入式继承 var I={ }; var obj = { name: 'jack', age:18, sayGoodbye : fu ...