Price(洛谷P4109 [HEOI2015]定价)
题目
思路:
按照我的思路这一题应该是这样子的
剔除+判断
剔除
因为后面的0要越多越好,所以我们判断0出现的情况,当2个数之间的差大与10时,证明2个之间会存在一个0,所以这一位我们可以把它去掉,相当于我们已经储存了一个0,当2个数之间差小于10我们就不能再删了,因为这时可能不存在0,如果其中有个数小于10的话,我们也停止,因为再删这个数就会消失(其实继续删也可以,只是不要对长的数字多删除....)
e.g
145 160
由于2个数之间差大于10
所以就会被我处理成14 16
那么我们所需要的数就在14~16之间,但很明显的,我们不能选14,因为140不满足条件,所以在剔除数时,我们要记录我们所剔除掉的数是不是为0,如果存在不是0的,那么我们后面就要对14++即15,我们所要找到值也就是在15~16之间即150
while(m>=&&n-m>=)//1.剔除+判断
{
if(m%!=) x1=true;
m=m/;
n=n/;
len3++;
len4++;
}
if(x1==true)//对范围的影响
{
m+=;
}
接下来我们要做的就是进行特判处理
1.存在5的整10或整100数,我们可以通过计算很容易得出,这类数是长度最小的,所以我们放到第一个进行特判
我们记录输入2个数的长度,在这个长度的条件下去寻找,如果一个关于5的整10整100数成立,立刻输出(我就是这一步错了,导致只有50分,因为我在判断时,第一种情况就是50,结果我这么知道有50%的数据 都考到了这个点...)
int ans=;
for(int i=;i<=len2;i++)//计算是否有5的整数混在其中
{
if(ans>=x&&ans<=y)
{
cout<<ans<<endl;
fin=;
break;
}
ans*=;
}
2.由于关于5的整的都被我们判断完了,那么我们现在就是处理x的长度不等于y的长度的情况,在这种情况下,我们就只需要找到最小整10或整100..的就可以啦
同样我们在处理时,也要考虑2位数或更多位数其除了首位数以外对数字的影响
if(fin==&&len1!=len2)
{
while(x>)
{
if(x%!=&&x>) y2=true;
haha=x;
x=x/;
}
if(y2==true) haha+=;
for(int i=;i<len1;i++)
{
haha*=;
}
cout<<haha<<endl;
fin=;//对后面的判断有用
}
3.考虑长度相同的2个数,虽然这2个数已经被我剔除的差不够10了,但是其数字之间也是可以存在整10的,例如18 26..
而且期间也可能出现末尾是5的,那么这里我们就要纠结一下,到底是5优还是0优,0啦如上面的例子20 和25 一个的荒谬值为2,一个为3
所以最后一个特判也就如下,如果这2种情况都不存在,那就是最小的值
else if(fin==&&len1==len2)
{
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
{
int d=m;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
}
#include<bits/stdc++.h>
using namespace std;
int T;
int x,y;
bool x1=false;
bool y2=false;
int len1,len2,fin;
int main()
{
//freopen("Price.in","r",stdin);
// freopen("Price.out","w",stdout);
cin>>T;
while(T--)
{
scanf("%d%d",&x,&y);
x1=false;y2=false;
fin=;
int star,len,len3,len4,m,n;
len1=;
len2=;
len3=;
len4=;
m=x;
n=y;
while(m>)
{
m=m/;
len1++;
}//计算长度
while(n>)
{
n=n/;
len2++;
}
m=x;
n=y;
while(m>=&&m>=&&n-m>=)//1.剔除+判断
{
if(m%!=) x1=true;
m=m/;
n=n/;
len3++;
len4++;
}
if(x1==true)//对范围的影响
{
m=m+;
}
len=min(len1,len2);
int ans=;
for(int i=;i<=len2;i++)//计算是否有5的整数混在其中
{
if(ans>=x&&ans<=y)
{
cout<<ans<<endl;
fin=;
break;
}
ans*=;
}
int haha=;
if(fin==&&len1!=len2)
{
while(x>)
{
if(x%!=&&x>) y2=true;
haha=x;
x=x/;
}
if(y2==true&&len1!=) haha+=;
for(int i=;i<len1;i++)
{
haha*=;
}
cout<<haha<<endl;
fin=;
}
else if(fin==&&len1==len2)
{
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
{
int d=m;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
}
}
}
return ;
}
/*
思路:
从最后一位开始比较
如果前面的不同且包含5
就选择5
否则就选择整10数
#include<bits/stdc++.h>
using namespace std;
int T;
int x,y;
bool x1=false;
bool y2=false;
int len1,len2,fin;
int main()
{
//freopen("Price.in","r",stdin);
// freopen("Price.out","w",stdout);
cin>>T;
while(T--)
{
scanf("%d%d",&x,&y);
x1=false;y2=false;
fin=;
int star,len,len3,len4,m,n;
len1=;
len2=;
len3=;
len4=;
m=x;
n=y;
while(m>)
{
m=m/;
len1++;
}//计算长度
while(n>)
{
n=n/;
len2++;
}
m=x;
n=y;
while(m>=&&n-m>=)//1.剔除+判断
{
if(m%!=) x1=true;
m=m/;
n=n/;
len3++;
len4++;
}
if(x1==true)//对范围的影响
{
m=m+;
}
len=min(len1,len2);
int ans=;
for(int i=;i<=len2;i++)//计算是否有5的整数混在其中
{
if(ans>=x&&ans<=y)
{
cout<<ans<<endl;
fin=;
break;
}
ans*=;
}
int haha=;
if(fin==&&len1!=len2)
{
while(x>)
{
if(x%!=&&x>) y2=true;
haha=x;
x=x/;
}
if(y2==true&&len1!=) haha+=;
for(int i=;i<len1;i++)
{
haha*=;
}
cout<<haha<<endl;
fin=;
}
else if(fin==&&len1==len2)
{
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
for(int i=m;i<=n;i++)
{
if(i%==)
{
int d=i;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
fin=;
break;
}
}
if(fin==)
{
int d=m;
for(int j=;j<=len3;j++)
{
d*=;
}
cout<<d<<endl;
}
}
}
return ;
}
/*
思路:
从最后一位开始比较
如果前面的不同且包含5
就选择5
否则就选择整10数...
*/
Price(洛谷P4109 [HEOI2015]定价)的更多相关文章
- 洛谷——P4109 [HEOI2015]定价
P4109 [HEOI2015]定价 模拟(有点儿贪心) 题目要求在区间$l,r$中$x$后导0尽量多,且除去后导0之外,最后一个数尽量是$5$才最优 从$l$到$r$依次考虑, 假设当前考虑到$50 ...
- 洛谷 P4109 [HEOI2015]定价
洛谷 这是今天的考试题,我来发一波- 看L和R的范围,显然不能一个一个加,这样会有很多重复情况,会超时,只要看该数有多少个后导0,就把L加上10的多少次方. 很容易可以想到价格后面尽可能多0, 在此基 ...
- 洛谷 P4112 [HEOI2015]最短不公共子串 解题报告
P4112 [HEOI2015]最短不公共子串 题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的"子串"指的是它的连续的一段,例如bcd是 ...
- P4109 [HEOI2015]定价
题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...
- 洛谷P4107 [HEOI2015]兔子与樱花 [贪心,DFS]
题目传送门 兔子与樱花 题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1 ...
- [洛谷P4111][HEOI2015]小Z的房间
题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙 ...
- Luogu P4109 [HEOI2015]定价 贪心
思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($i ...
- [洛谷P4107] HEOI2015 兔子与樱花
问题描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...
- 【BZOJ4029】[HEOI2015]定价(贪心)
[BZOJ4029][HEOI2015]定价(贪心) 题面 BZOJ 洛谷 题解 每次加上十进制下的\(lowbit\)就行了??? #include<iostream> #include ...
随机推荐
- CodeForces Round #527 (Div3) C. Prefixes and Suffixes
http://codeforces.com/contest/1092/problem/C Ivan wants to play a game with you. He picked some stri ...
- jar读取外部和内部配置文件的问题
最近修改XX应用的时候,涉及到需要在jar包中读取工程配置文件的问题.在jar包中,读取配置文件,需要单独处理. 项目中的一些配置文件,如dbconfig.properties log4j.xml 不 ...
- jquery中on绑定click事件在苹果手机失效问题解决(巨坑啊)
描述:用一个div写一个按钮,并给这个按钮添加一个点击事件,在安卓机器上一切正常,但是在苹果机型上会出现点击事件失效. <!DOCTYPE html> <html lang=&quo ...
- MySQL专题 1 分布式部署数据库同步问题 BinLog
什么是 Binlog MySQL Server 有四种类型的日志——Error Log.General Query Log.Binary Log 和 Slow Query Log. 第一个是错误日志, ...
- 【Python】Python发展历史
起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣.用他 ...
- python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)
案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...
- Django 2.0 学习(18):Django 缓存、信号和extra
Django 缓存.信号和extra Django 缓存 由于Django是动态网站,所以每次请求均会去数据库进行相应的操作,当程序访问量大时,耗时必然会显著增加.最简单的解决方法是:使用缓存,缓存将 ...
- logstash收集MySQL慢查询日志
#此处以收集mysql慢查询日志为准,根据文件名不同添加不同的字段值input { file { path => "/data/order-slave-slow.log" t ...
- C++解析(5):内联函数分析
0.目录 1.常量与宏回顾 2.内联函数 3.内联函数深度探析 4.注意事项 5.小结 1.常量与宏回顾 C++中的const常量可以替代宏常数定义,如: const int A = 3; <- ...
- c#数据库连接 出现错误提示:keyword not supported:'connection timeour'
连接字符串错误,如 User Id 被换行了,导致无效字符串 请检查连接字符串是否正确