| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 蓝桥杯31天冲刺打卡题解(Day11) -> 正文阅读 |
|
[数据结构与算法]蓝桥杯31天冲刺打卡题解(Day11) |
Day11第一题第十一届2020年蓝桥杯国赛天干地支
一道很复杂,但又不完全复杂的模拟题。 我们可以写一堆
所以我们可以来两个数组存储天干和地支,从
第二题第八届2017年蓝桥杯省赛包子凑数
假设我们有 N N N 个蒸笼,每个蒸笼的包子分别为 A 1 , A 2 . . . A n A_1,A_2...A_n A1?,A2?...An?,且他们的最大公约数是 d d d,且 d > 1 d>1 d>1,所有数都是 d d d 的倍数,如果一个数不能被 d d d 整数,则说明这个数也一定不能被 A 1 , A 2 . . . A n A_1,A_2...A_n A1?,A2?...An? 凑出来,所以此时会有正无穷 I N F INF INF 个数凑不出来。 当 g c d ( A 1 , A 2 . . . A n ) = 1 gcd(A_1,A_2...A_n)=1 gcd(A1?,A2?...An?)=1 时,不能凑出来的数一定是有限个,这是依据裴蜀定理,裴蜀定理是基于两个数 a , b a,b a,b 的定理,当 g c d ( a , b ) = 1 gcd(a,b) = 1 gcd(a,b)=1 时,最大不能表示的数是: ( a ? 1 ) ( b ? 1 ) ? 1 (a-1)(b-1)-1 (a?1)(b?1)?1, 当有 N N N 个数时定理也同样适用,当数变多时,这个上界必然会更小,因为可选的数变多了,因为 1 ≤ N ≤ 100 1\leq N \leq 100 1≤N≤100,小于 100 100 100 中最大互质的两个数是 98 , 99 98,99 98,99,所以这里的上界我们取到 10000 10000 10000 即可。 此时这个问题就变成了完全背包问题,在 10000 10000 10000 以内有多少个数不能被组合出来。 闫式DP分析法 此时的状态转移方程: f ( i , j ) = f ( i ? 1 , j ) ∣ f ( i ? 1 , j ? A i ) ∣ f ( i ? 1 , j ? 2 A i ) ∣ . . . ∣ f ( i ? 1 , j ≤ 0 ) f(i,j)=f(i-1,j)|f(i-1,j-A_i)|f(i-1,j-2A_i)|...|f(i-1,j\leq0) f(i,j)=f(i?1,j)∣f(i?1,j?Ai?)∣f(i?1,j?2Ai?)∣...∣f(i?1,j≤0) 时间复杂度为 O ( N 3 ) O(N^3) O(N3),状态的数量是 N 2 N^2 N2 个,转移的数量是 N N N 个,显然是需要优化一下的,一般的背包问题时间复杂度是 O ( N 2 ) O(N^2) O(N2)。 我们做一下 j j j 的变量变换: f ( i , j ? A i ) = f ( i ? 1 , j ? A i ) ∣ f ( i ? 1 , j ? 2 A i ) ∣ f ( i ? 1 , j ? 3 A i ) ∣ . . . f(i,j-A_i)=f(i-1,j-A_i)|f(i-1,j-2A_i)|f(i-1,j-3A_i)|... f(i,j?Ai?)=f(i?1,j?Ai?)∣f(i?1,j?2Ai?)∣f(i?1,j?3Ai?)∣... 此时这个等式可以替换为第一个等式从第二项开始后面的所有项: 状态转移方程优化为: f ( i , j ) = f ( i ? 1 , j ) ∣ f ( i , j ? A i ) f(i,j)=f(i-1,j)|f(i,j-A_i) f(i,j)=f(i?1,j)∣f(i,j?Ai?)
我们发现我们的方程第 i i i 维只依赖于第 i i i 和 i ? 1 i-1 i?1 项,所以我们可以将数组优化成一维:
第三题第十届2019年蓝桥杯国赛求值
目的是找到一个最小数,且它的约数个数是100。 简单的暴力打表题,我们在编译器上跑,在oj上提交结果的代码即可。
提交代码:
第四题第八届2017年蓝桥杯省赛青蛙跳杯子
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:22:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |