当前位置:网站首页>【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】
【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】
2022-08-05 03:51:00 【ZhgDgE】
#852. 货币系统
题意:给定货币系统。对于某价值,小 t 每次会从钱包里找出不超过还需要支付的金额的最大货币,用于支付,一直到支付完毕。如果对于所有正整数价值,不存在其他支付方案的货币总数严格小于小 t 的支付货币数,那么这个国家是聪明的。 1 ≤ n ≤ 1000 , 1 = a i < a 2 < ⋯ a n ≤ 10000 1\leq n \leq 1000,1=a_i<a_2<\cdots a_n\leq 10000 1≤n≤1000,1=ai<a2<⋯an≤10000
思路:首先有个结论(不会证): ∀ w > 2 × max ( a i ) , w \forall w>2\times \max(a_i),w ∀w>2×max(ai),w 是聪明的。
那么我们只需要判断这个上界之下的数字即可。先暴力计算每个价值小 t 的支付货币数,然后可以用背包求解每个价值的最少货币数,逐一判断是否聪明。把一个面值 a i a_i ai 看作体积为 a i a_i ai ,价值为 1 1 1 的物品,问你恰好装满背包的最少价值,跑一下背包就行。
AC代码:http://oj.daimayuan.top/submission/315376
#815. 硬币
题意:略。
思路:不会,直接抄的题解。
AC代码:http://oj.daimayuan.top/submission/316043
#856. 新年的问题(数据加强版)
题意:给定一个 n × m n×m n×m 的矩阵,要求在每列中恰好选择一个数,并且这些数里面存在两个数在同一行,要求使这 m m m 个数的最小值最大,输出该值。 2 ≤ n , m ≤ 2500 , a i , j ≤ 1 0 9 2\leq n,m\leq 2500,a_{i,j}\leq 10^9 2≤n,m≤2500,ai,j≤109
思路:二分最小值,判断是否有选择方案。判断的话,保留大于等于二分数的元素,如果每一列都有元素,且存在某行有至少两个元素,则存在选择方案。
这里要注意一个和寻址方式有关的常数优化。
我的遍历(400+ms):
rep(j, 1, m) rep(i, 1, n)
if(a[i][j] >= down){
// solve
}
AC代码遍历(220ms):
rep(i, 1, n) rep(j, 1, m)
if(a[i][j] >= down){
// solve
}
数组不管是一维还是高维,在内存里都是连续存放的。后者遍历,绝大多数的寻址都是连续的,因为 cache 的存在,我们都可以根据上一次的地址快速得到。而前者遍历,我们每次寻址在数组里都是跳跃的而不是连续的,取数就会很慢。
AC代码:http://oj.daimayuan.top/submission/316533
#872. 三段式
题意:有一个长度为 n ( 1 ≤ n ≤ 1 0 5 ) n(1\leq n\leq 10^5) n(1≤n≤105) 的序列 a ( ∣ a i ∣ ≤ 1 0 5 ) a(|a_i|\leq 10^5) a(∣ai∣≤105) ,现在我们想把它切割成三段(每一段都是连续的),使得每一段的元素总和都相同,请问有多少种不同的切割方法。
思路:前缀和。设 b a s e = p r e n 3 base=\frac {pre_n} 3 base=3pren ,那么对于每个 p r e i = 2 × b a s e pre_i=2\times base prei=2×base ,看一下前面有多少个 j ( j ∈ [ 1 , i − 1 ] ) j(j\in[1,i-1]) j(j∈[1,i−1]) 满足 p r e j = b a s e pre_j=base prej=base 。注意 i i i 不能枚举到 n n n ,因为是非空。时间复杂度 O ( n log n ) O(n\log n) O(nlogn) 。
边栏推荐
- Open-Falcon of operation and maintenance monitoring system
- Ali's local life's single-quarter revenue is 10.6 billion, Da Wenyu's revenue is 7.2 billion, and Cainiao's revenue is 12.1 billion
- 阿里本地生活单季营收106亿,大文娱营收72亿,菜鸟营收121亿
- ffmpeg pixel format basics
- Kubernetes 网络入门
- sql怎么找字段里所有数据为空的字段
- 用CH341A烧录外挂Flash (W25Q16JV)
- Thinking (88): Use protobuf custom options for multi-version management of data
- XMjs cross-domain problem solving
- public static <T> List<T> asList(T... a) 原型是怎么回事?
猜你喜欢

shell脚本:for循环与while循环

BI业务分析思维:现金流量风控分析(二)信用、流动和投资风险

2022-08-04T17:50:58.296+0800 ERROR Announcer-3 io.airlift.discovery.client.Announcer appears after successful startup of presto

Static method to get configuration file data

UE4 通过与其它Actor互动开门

21 Days Learning Challenge (2) Use of Graphical Device Trees

今年七夕,「情蔬」比礼物更有爱

测试薪资这么高?刚毕业就20K

多御安全浏览器新版下载 | 功能优秀性能出众

How do newcomers get started and learn software testing?
随机推荐
Solana NFT开发指南
mutillidae下载及安装
markdown如何换行——md文件
From "useable" to "easy to use", domestic software is self-controllable and continues to advance
The test salary is so high?20K just graduated
Hard power or soft power, which is more important to testers?
ffmpeg pixel format basics
Bosses, I noticed that a mysql CDC connector parameters scan. The incremental. Sna
BI业务分析思维:现金流量风控分析(二)信用、流动和投资风险
Developing Hololens encountered The type or namespace name 'HandMeshVertex' could not be found..
[TA-Frost Wolf_may-"Hundred Talents Project"] Graphics 4.3 Real-time Shadow Introduction
36-Jenkins-Job迁移
The sword refers to Offer--find the repeated numbers in the array (three solutions)
burp安装及代理设置
MRTK3 develops Hololens application - gesture drag, rotate, zoom object implementation
905. Interval selection
UE4 opens doors with overlapping events
DEJA_VU3D - Cesium功能集 之 059-腾讯地图纠偏
You may use special comments to disable some warnings. Three ways to report errors
2022-08-04T17:50:58.296+0800 ERROR Announcer-3 io.airlift.discovery.client.Announcer appears after successful startup of presto