当前位置: 首页 > news >正文

[蓝桥杯 2023 国 Python B] 划分 Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] arr = new int[41];int sum = 0;for (int i = 1; i <= 40; i++) {arr[i] = sc.nextInt();sum += arr[i];}sc.close();int target = sum / 2; // 最接近的两个数乘积最大long[] dp = new long[target + 1];for (int i = 1; i <= 40; i++) {for (int j = target; j >= arr[i]; j--) {dp[j] = Math.max(dp[j], dp[j - arr[i]] + arr[i]); // 01背包求出最接近target的数}}System.out.println(dp[target] * (sum - dp[target])); // 输出两组最大乘积}
}
public class Main {public static void main(String[] args) {System.out.println(12873625444L);}
}

这题其实很简单,就是要分成两组,然后分别对两组求和,让求出的两个和乘积最大。假如所有数分成A和B两组,那么A和B的乘积最大值就是 ((A + B) / 2) * 2,意思就是找到一组的和最接近所有数之和的一半,也就是 (A + B) / 2,那么这它与另一组数之和相乘即可得到最大乘积。

http://www.xdnf.cn/news/243721.html

相关文章:

  • 如何快速定位网络中哪台主机发起ARP攻击
  • 范式演进:从ETL到ELT及未来展望
  • 如何提升个人的稳定性?
  • 学习 Django 之前
  • 数据结构——树(中篇)
  • 论文笔记——QWen2.5 VL
  • 基于大模型预测的输尿管癌诊疗全流程研究报告
  • PDF24 Tools:涵盖20+种PDF工具,简单高效PDF工具箱,支持一键编辑/转换/合并
  • Selenium:模拟真实用户的爬虫
  • 【Python Web开发】04-Cookie和Session
  • 彩带飘落效果
  • 大学之大:香港理工大学2025.5.1
  • 返回类型后置 和 auto推导返回值类型
  • Vue 3 中通过 this. 调用 setup 暴露的函数
  • 使用CubeMX新建DMA工程——存储器到外设模式
  • 21 课时精通生成式 AI:微软官方入门指南详解
  • 人工智能发展对未来IT从业岗位的展望
  • Java大厂硬核面试:Flink流处理容错、Pomelo JVM调优、MyBatis二级缓存穿透防护与Kubernetes服务网格实战解析
  • Rust多线程性能优化:打破Arc+锁的瓶颈,效率提升10倍
  • SpringBoot研究生双选系统开发实现
  • 图与网络模型
  • C#实现主流PLC读写工具类封装
  • 设计模式简述(十五)观察者模式
  • OpenGL-ES 学习(15) ----纹理
  • x86_64 Linux使用avx指令(补充)
  • RISC-V AIA SPEC学习(四)
  • python如何把pdf转word
  • (33)VTK C++开发示例 ---图片转3D
  • Lucene多种数据类型使用说明
  • 文献阅读篇#5:5月一区好文阅读,BFA-YOLO,用于建筑信息建模!(上)