华为OD机试 - 数据最节约的备份方法 - 贪心算法、FFD算法(Java 2025 B卷 100分)

华为OD机试2023B卷中,要求找到使用光盘最少的文件备份方法,每张光盘500MB。通过二分查找算法,按文件大小升序排序,分配到光盘上。Java实现详细解析,算法时间复杂度为O(log n)。

一、题目描述

有若干个文件,使用刻录光盘的方式进行备份,假设每张光盘的容量是500MB。

求使用光盘最少的文件分布方式,所有文件的大小都是整数的MB,且不超过500MB,文件不能分隔、分卷打包。

二、输入描述

每组文件大小的数据。

三、输出描述

使用光盘的数量。

四、测试用例

测试用例1

1、输入

100 200 100

2、输出

1

3、输出

总大小400MB < 500MB,一张光盘可以装下所有文件

测试用例2

1、输入

400 100 200 300 100

2、输出

3

3、输出

排序后:[400, 300, 200, 100, 100]
第1张光盘:400MB,剩余100MB
第2张光盘:300MB,剩余200MB
第2张光盘:放入200MB,剩余0MB
第1张光盘:放入100MB,剩余0MB
第3张光盘:100MB,剩余400MB

<think>好的,用户之前已经询问过如何使用华为云进行物联网数据可视化的步骤,现在他们特别提到了华为云的数据可视化服务DLV(Data Lake Visualization),想了解具体如何操作。我需要先回顾之前提供的回答,确保这次的内容不重复,但又能深入讲解DLV的使用步骤。 首先,用户之前的询问涵盖了IoTDA实例创建、数据存储配置、DAS可视化开发、API接口和安全配置等内容。现在转向DLV,我需要重点突出DLV与DAS的不同之处,以及DLV的优势和使用场景。DLV作为华为云的数据可视化工具,支持多种数据源,适合更复杂的可视化需求,可能需要详细步骤说明如何连接数据源、创建仪表盘、配置图表等。 接下来,我需要考虑用户可能的背景。他们可能已经有一定的华为使用经验,现在想更深入利用DLV进行高级可视化,或者他们可能在比较不同的可视化工具,寻找适合自己需求的解决方案。用户可能关心DLV如何集成现有数据源,如何创建动态仪表盘,以及如何实现交互式数据展示。 用户可能没有明确提到的深层需求包括数据实时更新、多数据源整合、权限管理和大屏展示等。因此,在回答时,我需要涵盖这些方面,确保用户了解DLV的全面功能。例如,DLV支持实时数据刷新,可以连接多种数据库,还能创建权限组控制访问,这些都是用户可能需要的功能。 在结构上,应该按照逻辑步骤点说明,从准备工作、数据源配置、创建可视化大屏、组件使用、高级功能到注意事项。每个步骤需要具体操作指导和示例,比如如何添加GaussDB数据源,如何配置折线图,如何设置交互动作等。同时,提供代码示例或配置示例会让用户更容易理解,比如SQL查询示例或JSON配置。 需要确保语言简洁明了,避免技术术语过于复杂,但也要准确。比如,解释DLV的两种模式:大屏和报表,以及它们的适用场景。此外,注意事项部应提醒用户关于性能优化、数据安全、模板使用和API集成,这些是实际使用中常见的问题点。 后,总结DLV的优势,帮助用户明确是否适合他们的需求,比如适合复杂场景、多源整合和动态交互,同时对比之前提到的DAS,指出DLV更适用于高级可视化需求。这样用户可以根据自己的项目需求选择合适的工具。</think>以下是使用华为数据可视化服务**DLV(Data Lake Visualization)**的详细操作指南,涵盖从数据接入到高级可视化的完整流程: --- ### **一、DLV核心优势** - **多源融合**:支持连接**GaussDB、RDS、CSV、API**等20+数据- **实时渲染**:内置流数据处理引擎,延迟<1秒 - **交互设计**:支持钻取、联动、参数传递等动态交互 - **大屏模板**:提供智慧城市、工业监控等预置模板 --- ### **二、准备工作** 1. **开通DLV服务** - 进入[华为云DLV控制台](https://console.huaweicloud.com/dlv) → 选择「立即购买」(按需选择规格) - 推荐配置:`专业版`(支持API动态数据源) 2. **准备测数据** - 示例:在GaussDB中创建`sales_data`表 ```sql CREATE TABLE sales_data ( region VARCHAR(20), product VARCHAR(50), sale_date DATE, amount DECIMAL(10,2) ); ``` --- ### **三、数据源配置** #### 1. **连接GaussDB** - 进入DLV → 数据管理 → 新建数据- 配置参数: ``` 类型: 云数据库 GaussDB 名称: sales_db 连接模式: 共享连接(推荐生产使用) SQL查询示例: SELECT * FROM sales_data WHERE sale_date BETWEEN ${start_date} AND ${end_date} ``` - **关键技巧**:使用`${}`定义动态参数,后续可在仪表盘中交互过滤 #### 2. **API数据源** - 适用于实时数据场景: ```json { "url": "https://your-api.com/data", "method": "GET", "headers": { "Authorization": "Bearer your_token" }, "refresh_interval": 60 // 单位:秒 } ``` --- ### **四、创建可视化大屏** #### 1. **选择模板** - 新建大屏 → 选择「零售析模板」→ 进入编辑界面 #### 2. **基础组件配置 - **地图组件**: ```json { "dataSource": "sales_db", "geojsonType": "china", "colorMapping": { "field": "amount", "gradient": ["#2E8B57", "#FFD700", "#FF4500"] } } ``` - **动态折线图**: ```yaml X轴字段: sale_date(按周聚合) Y轴字段: amount(求和) 趋势线类型: 移动平均(周期7天) ``` #### 3. **交互设计 - **钻取联动**: 1. 选中地图组件 → 设置「点击事件」 2. 添加动作类型:「传递参数」 → 定义参数`selected_region=${region}` 3. 其他图表设置过滤器:`region=${selected_region}` - **参数控件**: ```markdown 1. 添加日期选择器 → 绑定参数start_date/end_date 2. 添加下拉列表 → 绑定SQL: SELECT DISTINCT product FROM sales_data ``` --- ### **五、高级功能实现** #### 1. **实时数据- 配置Kafka数据源: ```sql CREATE STREAM sales_stream WITH ( kafka_topic = 'real-time-sales', value_format = 'JSON' ); ``` - 在DLV中创建流式图表,设置10秒刷新间隔 #### 2. **自定义插件 - 开发自定义三维组件: 1. 使用Three.js编写可视化组件 2. 打包为DLV插件格式: ``` my-3d-chart/ ├── index.html ├── config.json // 组件元数据 └── assets/ └── main.js ``` 3. 通过「插件管理」上传并启用 --- ### **六、发布与集成** #### 1. **权限管理 - 创建访问控制组: ```markdown - 管理员组:可编辑大屏 - 查看组:仅允许全屏模式查看 - 通过IAM服务同步企业AD账号 ``` #### 2. **嵌入第三方系统 - 生成嵌入代码: ```html <iframe src="https://dlv.huaweicloud.com/embed/your-screen-id?token=动态令牌" style="width:100%;height:800px" ></iframe> ``` - **安全建议**:启用token时效验证,设置referrer白名单 --- ### **七、性能优化技巧** 1. **数据层优化** - 对超过100万行的表创建物化视图: ```sql CREATE MATERIALIZED VIEW sales_summary AS SELECT region, product, SUM(amount) FROM sales_data GROUP BY region, product; ``` 2. **渲染优化** - 对地图组件启用「瓦片化渲染」 - 设置大数据量图表开启「采样显示」: ``` 当数据点>5000时,自动启用LOD(Levels of Detail) ``` --- ### **典型应用场景示例** 1. **实时物流监控大屏** - 数据源:IoT设备GPS数据 + 订单数据- 组件组合: - 热力地图显示车辆- 甘特图展示运输任务进度 - 预警看板显示异常事件 2. **零售BI析** ```markdown - 使用「对比漏斗图」析用户转化路径 - 通过「购物篮析矩阵」显示商品关联性 - 集成华为云ModelArts预测模型输出 ``` --- **关键注意事项**: 1. 当使用动态参数时,务必在SQL中做好防注入处理: ```sql SELECT * FROM table WHERE date > ${date} -- DLV自动参数化查询 ``` 2. 大屏辨率建议采用16:9比例,基准尺寸设为1920x1080 3. 如需对接企业微信等移动端,启用「自适应布局」模式 如果需要具体场景的配置示例(如疫情数据地图、工厂设备监控等),可提供您的业务方向,我将给出针对性设计方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值