题目

思路:

按照我的思路这一题应该是这样子的

剔除+判断

剔除

因为后面的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]定价)的更多相关文章

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

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

  2. 洛谷 P4109 [HEOI2015]定价

    洛谷 这是今天的考试题,我来发一波- 看L和R的范围,显然不能一个一个加,这样会有很多重复情况,会超时,只要看该数有多少个后导0,就把L加上10的多少次方. 很容易可以想到价格后面尽可能多0, 在此基 ...

  3. 洛谷 P4112 [HEOI2015]最短不公共子串 解题报告

    P4112 [HEOI2015]最短不公共子串 题目描述 在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的"子串"指的是它的连续的一段,例如bcd是 ...

  4. P4109 [HEOI2015]定价

    题目描述 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商 ...

  5. 洛谷P4107 [HEOI2015]兔子与樱花 [贪心,DFS]

    题目传送门 兔子与樱花 题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1 ...

  6. [洛谷P4111][HEOI2015]小Z的房间

    题目大意:有一个$n\times m$的房间,一些位置是房间,另一些位置是柱子,相邻两个房间之间有墙,问有多少种方案可以打通一些墙把所有房间连成一棵树,柱子不可以打通 题解:矩阵树定理,把房间当点,墙 ...

  7. Luogu P4109 [HEOI2015]定价 贪心

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

  8. [洛谷P4107] HEOI2015 兔子与樱花

    问题描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...

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

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

随机推荐

  1. 奇异值分解(SVD)原理详解及推导(转载)

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有 ...

  2. PAT 甲级 1020 Tree Traversals

    https://pintia.cn/problem-sets/994805342720868352/problems/994805485033603072 Suppose that all the k ...

  3. 主流的RPC框架有哪些

    RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展.Java中的RPC框架比较多,各有特色,广泛使用的有RMI.Hessian.Dubbo等.RPC还 ...

  4. bzoj3961[WF2011]Chips Challenge

    题意 给出一个n*n的网格,有些格子必须染成黑色,有些格子必须染成白色,其他格子可以染成黑色或者白色.要求最后第i行的黑格子数目等于第i列的黑格子数目,且某一行/列的格子数目不能超过格子总数的A/B. ...

  5. LeetCode 671. Second Minimum Node In a Binary Tree

    Given a non-empty special binary tree consisting of nodes with the non-negative value, where each no ...

  6. BZOJ4998 星球联盟(LCT+双连通分量+并查集)

    即要求动态维护边双.出现环时将路径上的点合并即可.LCT维护.具体地,加边成环时makeroot+access+splay一套把这段路径提出来,暴力dfs修改并查集祖先,并将这部分与根断开,视为删除这 ...

  7. QVariant实质

    QVariant实质 QVariant是一种可以存储不同类型的数据结构,在很多场合这是很有用得为了达到这种目的,可以想象,该对象应该存储对象的类型信息,数据信息以及其他辅助详细考虑用途,这种对象必须支 ...

  8. 51NOD 1709:复杂度分析——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1709 (我什么时候看到二进制贡献才能条件反射想到按位处理贡献呢……) 参 ...

  9. 关于Centos的yum安装LAMP

    Step1.配置网易的源 在mirrors.163.com中找到centos的帮助信息,完成源的更新配置,如图1,图2,图3所示. 图1 图2 图3 Step2.然后安装PHP+MySQL+apach ...

  10. K Closest Numbers In Sorted Array

    Given a target number, a non-negative integer k and an integer array A sorted in ascending order, fi ...