2021 年百度之星·程序设计大赛 - 初赛一
1001
题意:给出一个无向图,其中边有两种,附魔和没附魔的。初始在1号点,状态为没附魔,每次会等概率随机挑选一条边走,当经过附魔边时,状态会改变(附魔->没附魔,没附魔->附魔),问走k步后到达n号点且状态为附魔的概率。
比赛时,我错误的认为走出每条路径的概率都是相等的,一个反例如下:
路径1-2-5的概率为,而路径1-3-5的概率为
首先讲一下官方题解做法:
最终答案为:走k步到n且状态为附魔的概率/任意走k步的概率
显然任意走k步的概率为1,所以只需求出分子。我们发现,如果没有状态,是很容易求出1到n的概率,所以我们可以将状态转化到点上:将每一个点拆成两个,附魔点和没附魔点,代表当前的状态。若一条边时附魔边,则将对应的一点的附魔点于另一点没附魔点相连,若是普通边,则将对应的附魔点和没附魔点相连。
这样转化后,我们发现只需求出1号没附魔点到n号附魔点的概率就行了。
复杂度
接下来是我比赛时的做法:
还是求走k步到n且状态为附魔的概率,设数组表示从i到j,且满足在j点是状态为附魔的概率,表示从i到j的概率,但对在j点的状态没有限制。
考虑矩阵乘法中的一次转移,枚举了从i到j的一个中间点k,(转移后的)可以直接加上,那么考虑,有两种情况,从i到k时变成附魔,而从k到j状态不变,概率为,对应的,另一种情况的概率为,两种情况相加即可。
复杂度同样为
1003
题意:有n台电脑,其中第k台电脑坏了,有m个交换方式依次进行,问对于1~n,使得最后坏的电脑交换到这个位置,最少放弃几次操作
我们可以定义一个状态表示前i个操作,交换到j的最小代价(即最少放弃几次操作)
对于每个交换,与其无关的剩下n-2个电脑是否放弃此次操作并无关系,所以为使代价最小,此次不放弃,即
而对于a,如果执行此次交换操作,那么代价为,而如果放弃,则代价为,取两者较小值即可
利用滚动数组优化空间,复杂度为
2021 年百度之星·程序设计大赛 - 初赛一相关推荐
- 2021 年百度之星·程序设计大赛 - 初赛二 1001 签到(找规律,快速幂)
solution 找规律 #include <iostream> #include <algorithm>using namespace std;const int mod = ...
- 2021 年百度之星·程序设计大赛 - 初赛二 1003 魔怔(并查集,联通性,欧拉回路)
problem solution 发现除了起点和终点,剩下所有点周围的边都会被恰经过偶数次,所以这些点初始连向了偶数条白边. 考虑由白边连接形成的图,每个连通块中度数为奇数的点一定为偶数个. 所以起点 ...
- 2021 年百度之星·程序设计大赛 - 初赛二 1005 水题(贪心结论)
problem solution 开始还以为是CF987E,但是奇偶性并不一样,,结果是个贪心乱搞..样例都没过交了能过,醉了. #include<bits/stdc++.h> using ...
- 2021 年百度之星·程序设计大赛 - 初赛二 1002 随机题意(区间贪心)
problem 随机题意 Accepts: 1411 Submissions: 3641 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32 ...
- 2021 年百度之星·程序设计大赛 - 初赛一 1001 :迷失(DP+Floyd快速幂优化)
迷失 Accepts: 221 Submissions: 1479 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- 2021 年百度之星·程序设计大赛 - 初赛一(1006/毒瘤数据结构题)
原题跳转 树状数组记录前 i 项1的个数,当前缀和query(i) == i时,说明前 i 项满足要求, 对于op == 1的情况,如果对应位置为0(sum[i] - sum[i - 1] == 0) ...
- HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu6383(2018 “百度之星”程序设计大赛 - 初赛(B))
p1m2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- hdu6380(2018 “百度之星”程序设计大赛 - 初赛(B))
degree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- hdu6375(2018 “百度之星”程序设计大赛 - 初赛(A))
度度熊学队列 Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
最新文章
- App Store 申请审核加速
- iMeta:西农韦革宏团队焦硕等-土壤真菌驱动细菌群落的构建(全文翻译/PPT/视频解读)...
- python从入门到精通视频教程百度云-let's python从入门到精通视频教程
- php 打印测试技巧
- MySQL中用decimal的原因
- 你最想要的圣诞礼物是什么?
- PHP正则匹配效率,PHP 正则表达式效率 贪婪、非贪婪与回溯分析(推荐)
- WebHelper类
- Win10系统下安装ubuntu系统
- Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具
- 最常用的Linux命令大全
- 计算机毕业论文指导过程记录表6,毕业论文指导记录表范文
- [精简]托福核心词汇102
- 计算机网络实验一:网线制作
- 最新彻底禁止win10自动更新
- 如何查看网页元素的名称ID和其他信息
- 云队友丨顶级高手,如何进行系统思考?
- 随机函数(随机取数)
- 【产品设计】用户画像模板
- 【安全】漏洞挖掘之王的传奇人生