01.03 CW 模拟赛 T1. math

news/2025/1/9 5:27:43/文章来源:https://www.cnblogs.com/YzaCsp/p/18650588

前言

赛场上 \(\rm{while}\) 打成 \(\rm{if}\) 痛失 \(40 \rm{pts}\)
不过下来看是贪心的话也没什么好做的了, 一般都不会

对了这是题目
题目下载

\(\rm{sol}\)

方法 \(1\) : 逐位计算

思路

显然的是你需要把数字从大到小填入, 使得高位的数尽量大, 这个显然
由上面的结论可以知道, 如果你从大到小考虑每一个数, 每个数填给 \(a, b\) 中的一个一定是符合最优解的构造的


考虑对于当前的数字, 填给 \(a, b\) 哪个更优
假设当前已经填过的前缀为 \(A, B\) , 显然的如果有一个的大小已经达标那么填给另一个
假设当前的数字为 \(x\) , 分类讨论计算贡献

  • \(x\) 放给 \(A\) , \(A \gets 10A + x, AB = 10AB + Bx\)
  • \(x\) 放给 \(B\) , \(B \gets 10B + x, AB = 10AB + Ax\)

发现什么?
两个贡献的形式都是 \(10AB + con\) , 而 \(AB\) 是上一次选择产生的贡献, 这证明了在这里使用贪心法使得填数之后当前贡献最大是正确的

对贡献作差, 结果是 \((B - A)x\) , 显然的

  • \(B > A\) , 填给 \(a\)
  • \(A > B\) , 填给 \(b\)

考虑 \(A = B\) 的情况
需要注意的是, 我们当前无论填给谁, 对之后的贡献都是 \(0\) , 所以这是一个全局性的考量

你发现一直填下去, 直到最后 \(A, B\) 有一个达到了 \(a, b\) 的要求, 那么接下来的贡献呢
我们钦定 \(a < b\) , 其他情况同理 (特别的, \(a = b\) 的时候可以随意填)
假设当前剩下的数为 \(x\) , 其位数为 \(b - a\)

\(A, B\) 前面位数相同的极大前缀为 \(A^{\prime}, B^{\prime}\)
\(\rm{belike}\) :
pEpll38.png
的黄色部分

最终的贡献柿子为

\[(B^{\prime} \cdot 10^{b - a} + x) \cdot A^{\prime} = A^{\prime}B^{\prime} \cdot 10^{b - a} + A^{\prime} x \]

我们知道的是, \(x, A^{\prime}B^{\prime}\) 并不由当前选择填给谁而决定, 而 \(A^{\prime}, B^{\prime}\) 是受影响的

所以我们应当令 \(A^{\prime}\) 尽量大, 也就是说, 我们要把这个数填给位数较小的数

总结

善于通过计算单个单位的贡献来解决一类贪心问题
拍子可以搞出一些 \(\rm{border\ case}\) 去做, 时间充裕还是要打

对贡献作差是一种常见的方法来找到最优解

方法 \(2\) : 确定性

实现

首先是学习一下常用的高精度模板, 以后避免不会用

框架

首先 \(A, B\) 的比较和乘法都需要高精度, 让我来看看这两个怎么做
补好是两个高精度相乘, 我们没救了

代码

首先是高精度不想写了, 所以写 \(\rm{python}\)

#include <bits/stdc++.h>
#define int long long
const int MAXVAL = 10;
const int MAXN = 21;int T;
int a, b;
int num[MAXVAL];signed main()
{scanf("%lld", &T);while (T--) {int ans = 0;scanf("%lld %lld", &a, &b);for (int i = 1; i <= 9; i++) scanf("%lld", &num[i]);int A = 0, B = 0;int res = 9;int cnt = a + b;for (int i = 1; i <= cnt; i++) {while (!num[res] && res > 0) res--;if (a == 0) B = B * 10 + res, b--;else if (b == 0) A = A * 10 + res, a--;else if (B > A) A = A * 10 + res, a--;else if (A > B) B = B * 10 + res, b--;else {if (a < b) A = A * 10 + res, a--;else B = B * 10 + res, b--;}num[res]--;}printf("%lld\n", A * B);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/863467.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电商团队信息共享的最佳方案:在线协同工具的应用

电商行业发展迅速,竞争也日益激烈,团队协作效率已成为企业能否脱颖而出的决定性因素。一个高效的电商团队不仅需要快速反应和高效执行,更需要具备流畅的沟通和协同机制。而在线协同编辑文档工具,正是推动这一机制的核心工具之一。 电商团队架构的挑战与需求 电商团队通常由…

体验领礼啦!体验自建数据库迁移到阿里云数据库RDS,领取桌面置物架!

​「技术解决方案【Cloud Up 挑战赛】」上线了! RDS MySQL 支持实例管理、账号管理、数据库管理、备份恢复、白名单、透明数据加密以及数据迁移等基本功能,还支持读写分离、SQL审计、多可用区集群等高级功能。经过双十一高并发、大数据量的考验,RDS MySQL 拥有优良的性能。 …

接入企业微信审批开发记录

背景 客户提了关于对接企业微信【审批】功能的需求,具体需求包括: 1、当企业微信审批流程到达某个节点后,能将审批信息推送到我们系统,或者我们系统能够拉取某个流程的信息; 2、能在审批流程中嵌套一个评价节点,跳转我们系统的评价页面。1 调研企业微信是否支持 根据这篇…

并发编程 StampedLock

StampedLock是JDK8引入的,是为了优化读的性能乐观读:tryOptimisticRead方法内没有加任何锁,在真正进行读取操作之前要进行一次查验,即validate,因为在获取stamp后,到读取操作之间,可能会有并发问题。 如果查验结果为false,就会升级为读锁

【硬件测试】基于FPGA的8PSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

1.算法仿真效果 本文是之前写的文章:基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR-CSDN博客的硬件测试版本。在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:(完整代码运…

Linux 安装和配置openssl

使用python3.10版本时遇到无法加载.ssl的报错,解决方法如下: 1. 检查openssl的当前版本,如果已经是openssl-1.1.1w,则跳过下文,应该不是同一个问题。openssl version OpenSSL 1.0.2k-fips 26 Jan 2017 2. 下载openssl-1.1.1w版本的压缩包 openssl-1.1.1w.tar.gz3. 解压压…

【Java 温故而知新系列】基础知识-04 重点关键字(面试经常遇到的)

1、final 在 Java 中,final 关键字可以用于变量、方法和类,分别赋予它们不同的语义和行为。以下是 final 关键字的主要作用 修饰变量 当 final 修饰一个变量时,表示该变量的值一旦初始化后就不能再被改变。这适用于基本类型和引用类型。基本类型:对于基本类型(如 int, do…

春节不打烊,超市管理工具如何助力商家应对销售高峰

春节超市管理工具种类繁多,每种工具都有其独特的功能和优势。在选择工具时,超市应根据自身的需求和实际情况进行选择,以确保管理效率和服务质量的提升。春节期间,超市管理工具种类繁多,这些工具旨在帮助超市高效管理库存、促进销售、调度员工以及提升顾客服务质量。以下是…

vue3 在渲染md中的数学公式

常规的md转数学公式插件无法解决此问题 问题: 在渲染过程中 \t 被转义 导致渲染出错**方案为:将\t 转义为\t ** 依赖的插件及版本"katex": "^0.16.15","markdown-it": "^14.1.0","markdown-it-katex": "^2.0.3",…

重新定义电商团队协作:在线文档工具的战略作用

在当今快速发展的电商行业,团队协作效率对业务成功至关重要。尤其是跨部门沟通和信息共享,已经成为提升电商团队组织架构优化的关键因素。而一个功能强大的在线协同编辑文档工具正是提升这些关键环节的解决方案之一。 电商团队组织架构的挑战 电商企业通常面临复杂的业务流程…

基于海豚调度功能开发——推送下游系统数据库连接信息批量修改方案与实现

功能需求背景 由于信创(信息技术应用创新产业)改造要求,上个月已将从数据仓库推送下游官网系统的ORACLE数据库相关数据推送任务迁移到信创人大金仓临时数据库,整体任务完成切换上线并试运行稳定。 由于年底需要进行信创数据库的正式上线,目前需要将人大金仓临时数据库切换…

Pycharm 2024 安装激活详细使用教程(激活至2026,实测是永久,亲测!)

开发工具推荐:Pycharm 安装激活详细使用教程(激活至2026,实际上永久,亲测!)申明:本教程 Pycharm补丁、激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除。若条件允许,希望大家购买正版 ! Pycharm是JetBrains公司推出的一款功能强大的Python集…