首页 > 其他分享 >题解 - 定价

题解 - 定价

时间:2024-07-05 16:58:32浏览次数:15  
标签:10 int 题解 mnp 后导 res 定价 define

题目

题目描述

你如此计算一个价格 \(p\)(为正整数)的荒谬程度:

  1. 首先将 \(p\) 看做一个由数字组成的字符串(不带前导 \(0\));
  2. 然后,如果 \(p\) 的最后一个字符是 \(0\),就去掉它。重复这一过程,直到 \(p\) 的最后一个字符不是 \(0\);
  3. 记 \(p\) 的长度为 \(a\),如果此时 \(p\) 的最后一位是 \(5\),则荒谬程度为 \(2a - 1\);否则为 \(2a\)。

现在,你要出售一样闲置物品,你能接受的定价在 \([L, R]\) 范围内,如果荒谬度最低的价格不唯一,输出最小的那个。

思路简析

我去这题难受死我了。

不是很难细节贼多。

但是考虑暴力:
对于本题的要求是尽可能多的后导零。
设当前数为 \(x\),有 \(l\) 个后导零,显然 \((x, x+10^x)\) 中没有优于 \(x\) 的价格。
所以可以不一个一个搜而是 \(10^x\) 个 \(10^x\) 个搜。

而且当 \(x\) 改变的时候 \(10^x\) 也改变,所以每次(或者进行一个优化:每 \(10\) 次)都要重新统计后导零。

CODE

Time complexity:\(O(Unknown)\)

#include <bits/stdc++.h>
namespace {
#define fiin(x) freopen(x".in", "r", stdin)
#define fiout(x) freopen(x".out", "w", stdout)
#define files(x) fiin(x), fiout(x)
using namespace std;
#define ll long long
#define db double
const int man = 2.5e5;
}

int T, a, b, mnp = 1e9+10, res;
void ger (int) ;
int main () {
#ifndef ONLINE_JUDGE
    files("test");
#endif
    scanf ("%d", &T);
    while (T --) {
        scanf("%d%d", &a, &b);
        while (a <= b) {
            int la = a, cnt = 0, lx = 0;
            while (!(la%10)) la /= 10, ++ cnt;
            int f = la%10;
            for (int i = la; i; i /= 10) ++ lx;
            int p = -(f == 5)+2*lx;
            if (mnp > p) mnp = p, res = a;
            a += pow(10, cnt);
        } printf("%d\n", res);
        mnp = 1e9+10;
    } return 0;
}

标签:10,int,题解,mnp,后导,res,定价,define
From: https://www.cnblogs.com/stamorlin/p/18286148/solution-price

相关文章

  • 洛谷P5517题解
    题目解释现有一数列:\(a_{0}=-3,a_{1}=-6,a_{2}=-12,a_{n}=3a_{n-1}+a_{n-2}-3a_{n-3}+3^n,求T组a_{n}\)modp的异或和题目思路分析抛开复杂度不谈,这道题可以用矩阵加速(矩阵的快速幂)和通项公式两种方法来做,这两种方法求一个\(a_{n}\)的时间复杂度都是\(log_2(n)\),但矩阵乘法需......
  • Kali网卡失效IP不显示问题解决
    因为我的个人习惯,通常为虚拟机配置两个网卡,一个Host-only网卡用于与主机进行通信、一个网络地址转换网卡用于访问网络。然而,在配置Kali主机时,常常遇到网络地址转换网卡断联的现象,导致虚拟机无法正常访问网络。根据先前的经验,问题出在网络配置上。查看/etc/network/interfaces文......
  • [题解]逃离地球
    题意简述有一个星系,共有\(n*m\)个星球,排成\(n\)行\(m\)列。初始星球之间没有道路。接下来给定\(P\)种魔法\(1\),\(Q\)种魔法\(2\):魔法\(1\):第\(i\)种魔法用\(a_i,b_i,c_i\)描述。表示你可以任选星系的一行,在第\(a_i\)和第\(b_i\)个星球之间建立一条航道,消耗\(c_i\)的能量。魔......
  • [题解]P1083 [NOIP2012 提高组] 借教室
    [题解]P1083[NOIP2012提高组]借教室解法\(1\):线段树-\(O((n+m)\logn)\)比较直观的一种做法,但是可能需要卡一下输入(这里没卡也过了,但要注意输入是\(10^6\)级的,为了保险一定要加)。#include<bits/stdc++.h>#definelc(x<<1)#definerc((x<<1)|1)#defineintlonglong......
  • SP15620 POSTERIN - Postering 题解
    题目传送门前置知识单调栈解法容易有每个建筑物的宽度对答案没有影响,故可以将其宽度均看作\(1\)。在最优策略下,对于每张海报,其高度一定等于所覆盖的楼的最小高度。单调栈维护最小高度,记录额外海报数量(与先前高度相等时可以少用一张海报)。最终,用总张数\(n\)减去额外海报......
  • reverse 题解
    reverse题解注意到本题数据范围较大且与数位有关,考虑数位DP。我们发现对于每个询问,我们可以将第一个条件拆开之后差分,可以先从后往前DP,预处理出末尾满足$L\le\operatorname{reverse}(n)\leR$的个数,之后使用试填法填数即可。具体地,在预处理时,处理出顶到上界,顶到下界......
  • Kithara常见问题解答
    目录通用问题我的内核驱动程序已经签名了吗?是否可以在打开驱动程序时防止显示介绍窗口?Windows7仍然支持吗?错误0x10142422(`KSERROR_CANNOT_START_KERNEL`)在`KS_openDriver`时出现?错误10145241(KSERROR_CANNOT_START_KERNEL)在KS_openDriver时出现?可以在C#应用程......
  • javascript url 传递参数中文乱码问题解决方案
    在JavaScript中,传递URL参数时,如果参数包含中文字符,可能会出现乱码问题。解决这一问题可以使用encodeURIComponent和decodeURIComponent函数。这些函数会对URL参数进行编码和解码,确保特殊字符(包括中文字符)能够被正确传递和解析。以下是一个完整的解决方案示例: 1.......
  • [JLU] 数据结构与算法上机题解思路分享-
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)第三次上机A手撕BST分数50作者朱允刚单位吉林大学对一棵初始为空的二叉查找树(Binary......
  • 牛客小白月赛97 A-D题解
    AAAAAAAAAAAAAAAAAAAAA-----------------------------题解-------------------------------------------统计数组中有没有出现三个相同的边即可点击查看代码#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;map<int,int>m;int......