T1签到
显然答案是
1−Πi=1n(1−pi)
注意当n=0的时候,被砸到的概率为0。
T2法法
显然答案就是
(∑i=1n[2∤i]×(n−1)!)mod2=⎩⎪⎨⎪⎧110n=1n=2n>2
T3红球进黑洞
对于k∈{0,1}的部分,提示大体思路应该是是逐位考虑,也就是说对于某一位,只需要知道有多少个元素在这里一位是1就行了,然后乘以相应的2的若干次幂。
T4树上求和
搞出来dfs序列后,子树是一段连续的区间,因此是个序列问题,小学老师告诉我们,(xi+a)2=xi2+a2+2axi,显然可以线段树维护,那么你就切掉这道题了。
##T5换个角度思考
查询区间小于等于某个数的个数,如果强制在线的话要写主席树之类的...
然而允许离线,那么可以直接用套路做题了
首先把询问(I,r,k)拆成(1,r,k)和(1,1−1,k),同时打上对答案产生贡献的标记(前者是1,后者是−1)
那么现在问题就成了:查询前缀小于等于k的个数
把所有询问按照右端点(实际上是r)排序,然后转化为-开始给定一个空序列, 每次往序列末端添加一个数,同时支持查询这个序列小于等于k元素个数
数据范围才105,树状数组维护一下就好了。
##T6暴力出奇迹
不妨看数据范围猜题解
1∼1
n≤10,ai≤105
发现n很小,不妨暴力枚举区间,然后更新最大值
注意ai≤105,也就是说答案可以到达1010级别,所以你应该使用long long 这种数据类型
2∼2
n≤105,∀i,j∈[1,n],ai=aj
发现每个数都一模一样,那么选择的区间就是[1,n]
3∼3
n≤105,ai=i
迷之部分分,出题人并没想怎么做
4∼4
200≤n≤105,∀i∈[1,100],ai 是随机数, ∀j∈[101,n],aj=0
发现[101,n]实际上没啥用,也就是说成了一个n≤100的问题,O(n2)就行
5∼10
不妨看一下最大值:105×(105×105)=1015
用 long long 存一下就好
如果固定右端点,然后往左扩展,那么取值只有O(logV)种,其中V是最大值
证明
不妨拆位考虑,每一位只会从1变为0,或者保持0,因此只有O(logV)种取值
那么从左往右枚举右端点,对于每一个值, 维护最左侧的端点就好了
##T7简单
前置技能
森林中连通块个数的T存在等式: T=n−m
证明:每添加一条边,就会合并两个连通块,相应的,连通块的个数就会少一个
根据期望的线性性,可得:E(T)=E(n)−E(m)
于是问题就转化为了计算E(n)和E(m)
为了方便起见,设Pu表示u的存在的概率
于是对Pu做前缀和数组Sp后,可得,E(n[l,r])=Sp,−Spl−1
之后只需要考虑E(m)如何计算,显然有:
E(m[l,r])=∑(u,v)∈E∧ω∈[l,r]∑n∈∈[l,r]pu⋅pv
于是可以暴力的把每一条(u,v)∈E的边看成一个点 (u,v),它的权值是pu∗pv。
之后相当于询问一个矩形内的点的权值和,这显然就是一个二 维数点问题,可以使用离线后树状数组或主席树或树套树乱搞
T8论如何出一道水题
对于相邻的两个数字x,x+1来说,有:
gcd(x,x+1)=gcd(x+1−x,x)=gcd(1,x)=1
所以答案就是:
n+max(n−1,1)
T9给给
根据期望的线性性,可得知E(U)=∑i=1n1×p(i)
也就是说只需要计算每一个点至少被选中一次的概率就行了,设第i个点的这个概率为p(i)
然而这个不太好算,不妨算另一个东西
设q(i)表示第i个点,在这k次选择中都没有被染色的概率,因为p(i)和q(i)是互斥事件, 所以p(i)+q(i)=1,即
p(i)−1−q(i)
k次都没有被染色的意义是,每次都不会选择跨过这个点的路径,这个可以通过一次dfs计算每个节点的size后乘一
乘就行了
于是就做完了
T10 div.2A
(t+k−1k−1)=(t+k−1t)=t!(k−1)!(t+k−1)!
由于t≤log2(n),因此可以直接预处理后再做
时间复杂度:O(n)
其他疑问可加以下交流群(加入一个即可啦~)
牛客多校算法训练营1:453799454
牛客全国算法训练营2:330766563
牛客多校算法训练营3:934889305