• [BZOJ4029][HEOI2015]定价


    从L开始从小到大暴力枚举。考虑到最后是让非零前缀数字个数最少,那么下面枚举的不可能在当前数的某个后缀零上变动。

    于是每次将最后一位不是0的数字+1并统计答案即可。

    每一位最多加了10次,一次是9的复杂度,最多9位,故复杂度O(810T)。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
     5 using namespace std;
     6 
     7 int T,l,r,ans,mn;
     8 
     9 int add(int x){
    10     int k=1;
    11     while (x%10==0) k*=10,x/=10;
    12     return k;
    13 }
    14 
    15 int cal(int x){
    16     while (x%10==0) x/=10;
    17     int t=x%10,a=0;
    18     while (x) x/=10,a++;
    19     if (t==5) return 2*a-1; else return 2*a;
    20 }
    21 
    22 int main(){
    23     freopen("bzoj4029.in","r",stdin);
    24     freopen("bzoj4029.out","w",stdout);
    25     for (scanf("%d",&T); T--; ){
    26         scanf("%d%d",&l,&r); mn=cal(l); ans=l;
    27         while (1){
    28             l+=add(l);
    29             if (l>r) break;
    30             int t=cal(l);
    31             if (t<mn) mn=t,ans=l;
    32         }
    33         printf("%d
    ",ans);
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    ajax长轮询实现即时聊天室
    node.js 通过post上传图片并显示
    Java集合类详解
    多行子查询
    Oracle中查看用户下面所有表的语句
    关于Oracle的create
    Oracle数据库学习
    oracle数据库
    js 中 undefined、NaN、null
    学习数据库SQL语句2
  • 原文地址:https://www.cnblogs.com/HocRiser/p/9890772.html
Copyright © 2020-2023  润新知