- 博客(68)
- 收藏
- 关注
原创 概率与数学期望
做位运算的题目,首先想到按位计算,即通过枚举每一位的情况来计算。算期望首先要算概率,考虑抽区间的概率。随机等概率抽取1-n内的两个数,概率显然各为1/n。但是要考虑两个数相同以及可以交换的情况,所以若两数相同就是1/n。这题的思考方式与上题类似,考虑用记忆化搜索的动态规划来做。每次把未来未知的期望值当作已知量来计算是核心所在。and和or的求法较简单,难点在于xor。本题的特点是难在求值,而概率是定值,所以其实本质上还是考察位运算的性质。例题1:AcWing 217.绿豆蛙的归宿。,若两数不同则为2/n。
2023-08-18 22:58:26
177
原创 ABC 308总结(7.1)
我们一看mex函数的计算方法,似乎没有任何数学规律可循,所以要考虑采用巧妙的数据结构与预处理来解决这个问题。首先考虑枚举所有中间字母E,然后我们只需要获得这个位置前面所有的M以及后面所有的X的数量即可。但是我们还要考虑a值的影响,所以应当将不同a值的M与X分开计算。即统计一下不同a值的M的数量的前缀和以及不同a值的X的数量的后缀和即可。C题就出问题确实没想到,本题的技巧在于,分数比较采取交叉相乘比较法。F题已经在贪心算法博客中提过了,不再赘述。D题秒了,简单的bfs题。一道有点东西的计数题。
2023-08-15 18:57:19
298
原创 ABC 309(7.8)
实际上这题也不是非常困难,关键在于写代码写的好不好。其实每次只要考虑自己父亲传下来的保险和自己本来买了的保险就行了,然后就是一代代往下传并不断累加答案。
2023-08-15 18:51:49
196
原创 ABC 312总结
这题的设dp方式比较特殊,观察每一个合法的括号序列,可以发现:不管从哪个位置将序列断开,左半段序列必然满足:左括号的数量≥右括号的数量。那么这样可以得到一个dp方法:f表示我们枚举到了第i个位置,且当前左括号的数量比右括号的数量恰好多j个的序列数量。那么容易知道:f=f+f(s[i+1]=‘?最终答案就是f,初始化只需令f=1即可。
2023-08-12 14:57:06
170
原创 「ZHYOI」Round 3
这题是先猜后证的典例。首先想到这题把所有的边连起来必然是不合理的,考虑删去无用边。猜想:连接两个不能整除某一方的两个节点的边是无用的。可以证明,在a与pa间塞入一个节点x,那么x与a的边权≤a/2,x与pa的边权也≤a/2。(不是很严谨,但无所谓)进一步可以只保留质数倍的两点相连。
2023-08-12 14:39:10
65
原创 ABC 306总结
找出集合A中所有元素在集合A∪B中的排名之和,实际上就是找A∪B中小于等于自己的元素个数。那么由于A与B没有交集,所以可以分开来做。这部分推导并不困难,关键在于后续的维护。一道有点坑的数据结构题。考虑采用类似于“对顶堆”的写法,将前k个数存在一个堆里,后面的数存在另一个堆里即可。具体操作考虑到要删除,所以不考虑用优先队列,采用multiset。注意,multiset中的erase函数若在括号中填数值x,那么会把所有值为x的元素删去。若想至多删除一个元素,那么考虑采用s.erase(s.find(x))。
2023-08-11 20:31:02
88
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人