| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 2021年北师大人工智能学院夏令营上机测试题解 -> 正文阅读 |
|
[人工智能]2021年北师大人工智能学院夏令营上机测试题解 |
前言:有幸拿到rk1,但由于服务器卡成OI赛制,少A整整一道题。 这里多吐槽一句,连我们学校校内软卓选拔都舍得开一个月600的云服务器(当时我负责的这事儿)。北师大也太勤俭持家了吧,弄两天弹性服务也成啊呜呜呜 面试:感觉凉透了,老师一直在问我rk能保研不(双非低rk的伤)。然后英语问答也没准备好,让介绍家乡,我就憋了三句话(我感觉让我用中文说,也就能说三句话).还是要多准备模板啊!!! A.签到题(略)B.数列比较
题目思路:将a,b数组对应的存成点对。对第一维度(a)升序排序,那么条件转化为: 所以根据我们的条件,对第一维排序,当相等的时候,对第二维升序排序。 这么排完后,我们只需要 O ( n ) O(n) O(n)的 c h e c k check check一遍第二维是否非降即可。 时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) C矩阵乘法
题目思路:就枚举 a , b , c , d a,b,c,d a,b,c,d,强行解方程完事了,有点无聊的题目。当然,我还被卡常了,打了个表过了。 时间复杂度: O ( n 4 ) O(n^4) O(n4) D.猴子打字题目思路:经典题目,我tm还能推错转移方程,自撒算了我靠。 不懂怎么做这题的,推荐看我这篇博客的第3题,把状态机思想弄明白 n ≤ 90 % n \leq 90\% n≤90%的做法:状态机 d p dp dp.令 d p ( i , j = 0 / 1 / 2 / 3 ) dp(i,j=0/1/2/3) dp(i,j=0/1/2/3) 代表前 i i i个长度,并且当前以状态 j j j结尾的方案数. j = 0 j=0 j=0代表当前没出现 b n u bnu bnu,且结尾也不是 b b b. j = 1 j=1 j=1代表当前没出现 b n u bnu bnu,且结尾恰好是 b b b. j = 2 j=2 j=2代表当前没出现 b n u bnu bnu,且结尾恰好是 b n bn bn. j = 3 j=3 j=3代表当前已经出现了 b n u bnu bnu. PS:这么定义状态是因为 b n u bnu bnu子串的出现一定是如上述按若干个小阶段构造出来的。 此时可以构建出有限状态机出来。状态的转移就像在图上游走。 如下图所示:
d
p
(
i
,
0
)
=
d
p
(
i
?
1
,
0
)
?
(
k
?
1
)
+
d
p
(
i
?
1
,
1
)
?
(
k
?
2
)
+
d
p
(
i
?
1
,
2
)
?
(
k
?
2
)
dp(i,0)=dp(i-1,0) * (k-1) + dp(i-1,1)*(k-2) + dp(i-1,2)*(k-2)
dp(i,0)=dp(i?1,0)?(k?1)+dp(i?1,1)?(k?2)+dp(i?1,2)?(k?2) n = 1 e 7 n=1e7 n=1e7时,开滚动数组优化空间即可. 满分做法:矩阵快速幂优化dp这只要会矩阵快速幂优化fib递推式就可以了. so,对于上面的转移方程,我们将没有的项补0可以构造出下面的矩阵递推式: 令转移矩阵为: T = ( k ? 1 k ? 2 k ? 2 0 1 1 1 0 0 1 0 0 0 0 1 k ) T=\begin{pmatrix} k-1& k-2 & k-2 & 0\\ 1& 1& 1&0 \\ 0& 1& 0&0 \\ 0& 0 & 1 &k \end{pmatrix} T=?????k?1100?k?2110?k?2101?000k??????. 那么有: 所以答案: a n s = T n [ 4 ] [ 1 ] ans =T^n[4][1] ans=Tn[4][1]. 直接矩阵快速幂就好了~~ 时间复杂度: O ( 4 3 l o g n ) O(4^3logn) O(43logn) D.春游
题目思路:40 % 40\% 40%的数据我直接bfs加输出路径了. 30 % 30\% 30%的数据,直接 [ u + 1 , v ] [u+1,v] [u+1,v]之间找一个不是 v v v的约数的素数。(把素数筛出来,二分u后枚举素数)。这样确实非常快,但是没有正确性。总之是乱搞的。 满分做法待补~~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 10:19:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |