热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BZOJ4029[HEOI2015]定价策略优化(贪心算法)

本文探讨了BZOJ4029[HEOI2015]定价问题,通过使用贪心算法解决该问题。文章提供了详细的题目解析和代码实现,重点在于如何通过计算十进制下的最低有效位(lowbit)来简化问题。

BZOJ4029 [HEOI2015] 定价策略优化(贪心算法)

题目描述


本题来源于 BZOJ 和 洛谷,在给定的价格区间内找到一个最优价格,使得该价格在进行特定操作后达到最小化的目标。


解决方案


该问题的核心在于利用贪心算法,每次对当前价格增加其十进制表示下的最低有效位(lowbit),从而逐步逼近最优解。具体实现如下:


#include 
#include
using namespace std;

inline int read() {
int x = 0; bool t = false; char ch = getchar();
while ((ch <'0' || ch > '9') && ch != '-') ch = getchar();
if (ch == '-') t = true, ch = getchar();
while (ch <= '9' && ch >= '0') x = x * 10 + ch - 48, ch = getchar();
return t ? -x : x;
}

int lowbit(int x) {
for (int i = 1;; i *= 10)
if (x % 10) return i;
else x /= 10;
}

int calc(int x) {
while (x % 10 == 0) x /= 10;
int l = 0;
if (x % 10 == 5) l -= 1;
while (x) l += 2, x /= 10;
return l;
}

int main() {
int T = read();
while (T--) {
int l = read(), r = read(), ans = 1e9, val = l;
while (l <= r) {
int x = calc(l);
if (ans > x) ans = x, val = l;
l += lowbit(l);
}
printf("%d\n", val);
}
return 0;
}

上述代码首先读取输入数据,然后通过循环遍历每个可能的价格,并计算其经过特定操作后的值。最终输出最优价格。


推荐阅读
  • 3144:[Hnoi2013]切糕TimeLimit:10SecMemoryLimit:128MBSubmit:1261Solved:700[Submit][St ... [详细]
  • 正在学习操作系统开发,遇到一个内核在GRUB Legacy(0.97)中无法成功引导的问题。具体表现为输入内核命令后显示错误信息,尝试引导时GRUB挂起。 ... [详细]
  • 探讨如何在C++中,当子类实例存储在父类类型的向量中时,正确访问子类特有的成员变量或方法。 ... [详细]
  • Qt应用开发:创建基本窗口
    本文介绍如何使用Qt框架创建基础窗口的两种方法。第一种方法直接在main函数中创建并显示窗口;第二种方法通过定义一个继承自QWidget的类来实现更复杂的功能。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • C基本语法C程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。对象-对象具有状态和行为 ... [详细]
  • 题目描述墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令ÿ ... [详细]
  • 本文详细介绍了Python的multiprocessing模块,该模块不仅支持本地并发操作,还支持远程操作。通过使用multiprocessing模块,开发者可以利用多核处理器的优势,提高程序的执行效率。 ... [详细]
  • 本文探讨了如何利用伸展树(Splay Tree)来高效地处理区间操作,包括区间修改、查询和删除等。通过引入size域,伸展树能够灵活应对序列结构的变化。 ... [详细]
  • Activity跳转动画 无缝衔接
    Activity跳转动画 无缝衔接 ... [详细]
  • 本文档提供了使用单片机控制LCD1602液晶显示屏的完整程序代码及详细说明。 ... [详细]
  • 正文♦时间复杂度:\(\mathcal{O}(n)\)思维题,不需要建树。设数组\(a\)记录每一个节点是否尊重它的父节点,数组\(b\)记录是否有节点尊重它,特别的,叶子节点必然 ... [详细]
  • 多用户密码验证与加密登录系统
    本文介绍了一种基于多用户密码文件的加密登录方法,通过读取用户密码文件并使用简单的加密算法实现安全登录。文中详细描述了程序的设计思路及其实现过程。 ... [详细]
  • 本文探讨了在Qt框架下实现TCP多线程服务器端的方法,解决了一个常见的问题:服务器端仅能与最后一个连接的客户端通信。通过继承QThread类并利用socketDescriptor标识符,实现了多个客户端与服务器端的同时通信。 ... [详细]
author-avatar
我心永恒2602922374_902
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有