11.8

事实证明了只要暴力会卡常写的好,就可以去代替正解

第一题:

做法:

 树状数组可以快速求出当前所有并查集中,比现在这个集合个数少c的集合个数(O(logn))

就相当于求前缀和那种嘛

那么我们的做法就是去枚举每一个集合大小在树状数组中去查询比他小的集合个数来统计答案

卡常:1.只要到达当前集合上限即可

2.当前集合的大小如果小于c就不用查,也就可以从大集合往小集合去枚举

3.如果当前集合都无法找到比他小c的,那么后面比他小的集合就更不可能找到了,直接break

4.可以发现你合并的次数越多虽然maxx大但cnt(当前集合的数量)越少,cnt==0,break

第二题:

概率dp:dp [ i ] [ j ] :i这个数在当前序列的位置为j

那么考虑归并的过程,我们是两两比较对吧?

我们先枚举最后一个数的位置,那么他已经固定了,再去填前面的,由于现在还不知道另一段序列是怎样的,那么概率应是C(t-1,k-1)/(2^k)

t为当前层的位置,k为上一层的位置

但是还要考虑一种特殊情况:若已经填完第二段的了,就不需要两两比较了,概率为C(t-1,r1-l1)

这是对于左边那段,右边那段cv即可

第三题:

数据不会故意卡你,所以只用n^2的算法,当跳到极限时及时回来即可。。。。。。

 觉得这位dalao说的很有道理(关于考试技巧):https://www.cnblogs.com/hzoi-yzh/p/11557618.html

推荐考前可以看一看:https://www.cnblogs.com/five20/p/7531905.html


今日做题收获:

作业:

树状数组可以快速查询小于每个权值的数的个数

维护两个树状数组,一个表示数的个数,一个表示不同数值的个数。为了判断当前加入的数值存不存在/当前删除的数值是不是最后一个,开一个count数组。

P4654:

 判断两点路径上是否有环可以两遍bfs来实现确保点在路径上,然后看那个点所在强连通分量的节点数,如果>=2即有环

旅行:

这道题等价于直接判断起点终点是否连通,求最大边权和最小边权的最小比

连通性想到了啥? 并查集呀

考虑先固定一条边,然后我们可以考虑最小生成树的加边过程从大到小添加小边,这样只要找到了一个满足与st和ed在同一集合中的边就直接加入答案候选集合中,break

原文地址:https://www.cnblogs.com/lkx422/p/11820727.html