【考试总结】2022-06-21

给国与地震

一种暴力的想法就是将所有当前可以合并的边扔到优先队列里面,每次取出来堆顶合并,然后扫描这条边两端点所在联通块当前没有被合并的所有出边,如果能合并就合并

看起来每次合并就把所有出边都扫描一遍非常亏,所以可以给每条边权为 w 的边设置一个 wauav2 的阀值

那么只访问阀值小于增量的边并更新阀值为 wsumusumv的一半即可,这里 sumu 表示 u 所在联通块 a 的和

实现时,对于边 (u,v) 如果在 u 这端改变阀值,可以不在 v 的记录出边的数据结构中删除具有原来阀值的边的信息,因为它会被较后处理到

当然在将边的信息插入数据结构的时候需要让阀值加上当前联通块 sum

给国与时光机

A 表示两端都被正常经过的点,L/R 表示 左/右 边被正常经过的点,N 表示两端都没有被经过的点,那么 N 之间可以任意配对

显然 A 会和 A 连边,那么 A 是奇数的时候无解;

m=2n+1 的档中发现让 A4 个一组进行 13,24 配对就能遍历所有边,m2n 时也尝试如法炮制

让每个 L 找到在其后面最靠左的 R 配对,如果 A 的数量是 4 的倍数那么所有元素都被配对了,得到答案

否则如果存在 ALR...A...LR 的结构(点表示省略了若干个 A),让内侧 RL 配对,外侧 LR 配对,选择两对夹着的一个 A 以及外面的一个 A 凑成一组四个

此时将 A 的数量又变成了 4 的倍数,使用上面的方法处理即可

给国与赌场

策略是将 a1b1 写成二进制小数,每次选择最后一位 1 下注,这样也保证了递增

那么在小数位数有限时可以设 fi 表示小数点后第 i 位向前进位的概率,答案是 f1

如果第 i 位是 1 那么概率就是 fi+1+p(1fi+1);反之则为 pfi+1

这个递推显然可以写成一次函数复合的形式,那么对于小数位数无限的情况就先处理出来循环部分无限次复合的结果再和不循环的部分复合,一次函数复合无限次的结果是 i=0+bki=b1k

关于将分数变成小数可以模拟除法竖式,x 下一个出现的是 2xb1 或者 2x ,取决于 2xb1 与否

附上题解中关于这个策略的证明

f(x,n) 表示从 x 赢到 2n 的概率,此时下注只能是整数,设 c(i) 表示 i 的二进制表示中 1 的数量,q=1p,那么递推式为:

f(x,n)=qf(x2,n1)+pf(x2,n1)=i=0x1qc(i)pnc(i)

这可以通过归纳得到,具体而言:

f(x,n)=qf(x2,n1)+pf(x2,n1)=i=0x21pn1c(i)qc(i+1)+i=0x21pnc(i)qc(i)=i=0x21pnc(2i+1)qc(2i+1)+i=0x21pnc(2i)qc(2i)

2i 作为原和式中的偶数,2i+1 作为原和式中的奇数

现在需要证明 0<kx, pf(x+k,n)+qf(xk,n)qf(x2,n1)+pf(x2,n1)=f(x) ,也就是说没有任何一种其它在第一步下注的选择比按照上述策略优

先假定做完第一步之后采取上面说的策略更优,现在证明第一步中也执行这样的选择是最优的,那么将 f(x±k,n) 展开,简单和式变换可以得到

pf(x+k,n)pf(x,n)qf(x)qf(xk,n)i=0k1pnc(x+i)+1qc(x+i)i=0k1pnc(i+xk)q1+c(i+xk)

此时如果能找到一个 [x,x+k1][xk,x1] 的双射 F 使得对位满足小于关系,也就是说满足 pc(i)c(F(i))1qc(i)c(F(i))1

由于 pq 那么 c(i)c(F(i))+1 ,注意到任意 x,p 都有 c(x)c(x2p)+1 所以直接找到 k 在二进制表示下的最高位 b ,让 y[x+k2b,x+k1]F(y)=y2b 然后迭代即可

posted @   没学完四大礼包不改名  阅读(123)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示