码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】


    #852. 货币系统

    题意:给定货币系统。对于某价值,小 t 每次会从钱包里找出不超过还需要支付的金额的最大货币,用于支付,一直到支付完毕。如果对于所有正整数价值,不存在其他支付方案的货币总数严格小于小 t 的支付货币数,那么这个国家是聪明的。 1 ≤ n ≤ 1000 , 1 = a i < a 2 < ⋯ a n ≤ 10000 1\leq n \leq 1000,1=a_i1≤n≤1000,1=ai​<a2​<⋯an​≤10000

    题解:(DP) 代码源每日一题 Div1 货币系统

    思路:首先有个结论(不会证): ∀ 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. 硬币

    题意:略。

    题解:(暴力) 代码源每日一题 Div1 硬币

    思路:不会,直接抄的题解。

    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
    	}
    
    • 1
    • 2
    • 3
    • 4

    AC代码遍历(220ms):

    rep(i, 1, n) rep(j, 1, m)
    	if(a[i][j] >= down){
    		// solve
    	}
    
    • 1
    • 2
    • 3
    • 4

    数组不管是一维还是高维,在内存里都是连续存放的。后者遍历,绝大多数的寻址都是连续的,因为 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) 。

    AC代码:http://oj.daimayuan.top/submission/316554

  • 相关阅读:
    驱动开发:内核扫描SSDT挂钩状态
    【Java】传输层协议TCP
    java计算机毕业设计家教到家平台MyBatis+系统+LW文档+源码+调试部署
    推理优化(1)
    写给小白的开源编译器
    Day119.尚医通:取消预约(微信退款)、就医提醒(定时任务)、预约统计
    理解Java泛型的复杂写法<? super T>,<? extend T>
    C#WPF StackPanel布局及Border边框应用实例
    el-table的一些样式总结
    folly::ConcurrentSkipList 详解
  • 原文地址:https://blog.csdn.net/weixin_51948235/article/details/126142371
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号