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 ...
随机推荐
- PAT L1-015 跟奥巴马一起画方块
https://pintia.cn/problem-sets/994805046380707840/problems/994805124398956544 美国总统奥巴马不仅呼吁所有人都学习编程,甚至 ...
- PAT 甲级 1027 Colors in Mars
https://pintia.cn/problem-sets/994805342720868352/problems/994805470349344768 People in Mars represe ...
- PHP中与类有关的运算符
与类有关的运算符: new, instanceof:判断一个“变量”(对象,数据),是否是某个类的“实例”: 示意如下: class A {} class B {} class C extend ...
- zookeeper应用实例
创建持久节点和临时节点 ZooKeeper zk=new ZooKeeper(HOST,CLIENT_SESSION_TIMEOUT,new Watcher(){ @Override public v ...
- poj3107 Godfather 求树的重心
Description Last years Chicago was full of gangster fights and strange murders. The chief of the pol ...
- lb route 相关的一些问题
lb route 相关的一些问题 ========================== 查看系统平台和版本 > show hardware Platform: NetScaler Virtual ...
- OI队测题解:
Test 17 T1: 题目大意: 喵星系有n个星球,标号为1到n,星球以及星球间的航线形成一棵树. 所有星球间的双向航线的长度都为1.小昕要在若干个星球建矿石仓库,设立每个仓库的费用为K.对于未 ...
- IOS中手势UIGestureRecognizer
通常在对视图进行缩放移动等操作的时候我们可以用UIScrollView,因为它里边自带了这些功能,我们要做的就是告诉UIScrollView的几个相关参数就可以了 但是没有实现旋转的手势即UIRota ...
- BZOJ4408 [Fjoi 2016]神秘数 【主席树】
题目链接 BZOJ4408 题解 假如我们已经求出一个集合所能凑出连续数的最大区间\([1,max]\),那么此时答案为\(max + 1\) 那么我们此时加入一个数\(x\),假若\(x > ...
- 流媒体协议之RTSP详解20170922
一.RTSP协议介绍 1.什么是rtsp? RTSP协议以客户服务器方式工作,,如:暂停/继续.后退.前进等.它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制, 因此 ...