【BZOJ4029】【HEOI2015】定价 模拟

链接:

#include <stdio.h>
int main()
{
    puts("转载请注明出处[vmurder]谢谢");
    puts("网址:blog.csdn.net/vmurder/article/details/45334857");
}

题解:

枚举后面有几个 0,然后每次(当前求 k 个后导 0 )算出第一个比 L 大的 10k 的倍数,和第一个比 L 大的 5×10k 的倍数。

然后把所有这些数都比较一下就好啦。

代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
long long ans,A,B,x;
void dfs(long long div)
{
    long long C=((A-1)/div+1)*div,c=0;
    if(C>B)return ;
    long long D=((A-1)/(5*div)+1)*(5*div),d=0;
    if(D>B)d=inf;
    for(long long T=C/div;T;T/=10)c+=2;
    for(long long T=D/div;T;T/=10)d+=2;
        d--;
    if(c<=d)
    {
        if(x>c)
        {
            x=c;
            ans=C;
        }
    }
    else {
        if(x>d)
        {
            x=d;
            ans=D;
        }
    }
    dfs(div*10);
}
int main()
{
    int i,j,k,g;
    for(scanf("%d",&g);g--;)
    {
        cin>>A>>B;
        x=inf,dfs(1);
        cout<<ans<<endl;
    }
    return 0;
}
时间: 2024-11-13 09:13:26

【BZOJ4029】【HEOI2015】定价 模拟的相关文章

[BZOJ4029][HEOI2015] 定价

Description 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商家常用的价格策略.不过在你看来,这种价格十分荒谬.于是你如此计算一个价格 p(p 为正整数)的荒谬程度: 1.首先将 p 看做一个由数字组成的字符串(不带前导 0): 2.然后,如果 p 的最后一个字符是 0,就去掉它.重复这一过程,直到 p 的最后一个字符不是 0: 3.记 p 的长

BZOJ4029 HEOI2015定价

贪心. 每次将最后一个非零位加一判断即可. 一开始想少了,只关心把最后一位变成5了,其实可以都变的. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int T,l,r; 4 int add(int x) 5 { 6 int k=1; 7 while(x%10==0)k*=10,x/=10; 8 return k; 9 } 10 int calc(int x) 11 { 12 int k=0,b=0; 13 int y=x; 14 whil

「BZOJ4029」[HEOI2015] 定价 贪心

「BZOJ4029」[HEOI2015] 定价 2015年4月28日2,7490 Description 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商家常用的价格策略.不过在你看来,这种价格十分荒谬.于是你如此计算一个价格 p(p 为正整数)的荒谬程度: 1.首先将 p 看做一个由数字组成的字符串(不带前导 0): 2.然后,如果 p 的最后一个字符是

[HEOI2015]定价

定价 [问题描述] 在市场上有很多商品的定价类似于 999 元.4999 元.8999 元这样.它们和 1000 元.5000 元和 9000 元并没有什么本质区别,但是在心理学上会让人感觉便宜很多,因此也是商家常用的价格策略.不过在你看来,这种价格十分荒谬.于是你如此计算一个价格 p(p 为正整数)的荒谬程度: 1.首先将 p 看做一个由数字组成的字符串(不带前导 0): 2.然后,如果 p 的最后一个字符是 0,就去掉它.重复这一过程,直到 p 的最后一个字符不是 0: 3.记 p 的长度为

BZOJ 4029 HEOI2015 定价 数位贪心

题目大意:定义一个数的荒谬程度为去掉末尾所有0后的数字数量?2(若末尾为5则荒谬程度减掉1),求[l,r]区间内荒谬程度最小的数字(若多个相同取最小) 从高位往低位贪心即可. 注意500的荒谬程度比100低 #include <assert.h> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; in

P4109 [HEOI2015]定价 贪心

思路:找规律?$or$贪心. 提交:1次 题解: 发现:若可以构成$X0000$,答案绝对不会再在数字最后把$0$改成其他数: 若可以构成$XX50...0$更优. 所以左端点增加的步长是增加的($inc=pow(10,x),x$递增). 所以去掉了一些不必要的枚举. #include<cstdio> #include<iostream> #include<cmath> #define R register int using namespace std; #defin

贪心(qwq)习题题解

贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确定了前三位\((101...)_2\),下一位应该是1 那么\(a_i+x_i\)的查找区间为:\([(101100)_2,(101111)_2]\) ,同理如果应该是0则为\([(101000)_2,(101011)_2]\). 注意到有区间\([l,r]\)范围的限制所以用主席树维护即可. [

定个10.1小目标

A掉各种大题:(其实是noip还没水完的蒟蒻qwq)(我就想想好了...写不写得完看天了) 2106. [NOIP2015] 斗地主(目前60分) 407. [NOIP2009] 靶形数独(目前85分) 521. [NOIP2010] 引水入城(假的贪心贪了90) 1808. [NOIP2014]解方程(我还不知道这是个啥题qwq) 1442. [NOIP2013]华容道(他们都说简单...) 1267. [NOIP2012] 疫情控制(我听过题解了...) 632. [NOIP2011] 观光

Python金融应用编程(数据分析、定价与量化投资)

近年来,金融领域的量化分析越来越受到理论界与实务界的重视,量化分析的技术也取得了较大的进展,成为备受关注的一个热点领域.所谓金融量化,就是将金融分析理论与计算机编程技术相结合,更为有效的利用现代计算技术实现准确的金融资产定价以及交易机会的发现.量化分析目前已经涉及到金融领域的方方面面,包括基础和衍生金融资产定价.风险管理.量化投资等.随着大数据技术的发展,量化分析还逐步与大数据结合在一起,对海量金融数据实现有效和快速的运算与处理. 在量化金融的时代,选用一种合适的编程语言对于金融模型的实现是至关