摘要:
传送门 解题思路 刚开始是找的桥,后来发现这样不对,因为一条链就可以被卡。后来想到应该缩点后找到度数为1 的点然后两两配对。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<set> u 阅读全文
摘要:
传送门 解题思路 让所有夫妇之间连男到女的边,所有情人之间连女到男的边,然后用$tarjan$,如果对于一对夫妻在强连通分量里,那么就是不稳定的,因为他们可以绕一圈。 #include<iostream> #include<cstdio> #include<cstring> #include<str 阅读全文
摘要:
传送门 解题思路 因为要求最小值,并且满足单调性,那么可以想到二分答案。刚开始逗比了,二分答案里又套了个二分,调到死也没调出来。其实只要维护一个前缀和就行了。 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> 阅读全文
摘要:
传送门 解题思路 首先考虑对于一个点来说,如果这个点是1的话,那么对于答案来说 $(ans+1)^3=ans^3+3*ans^2+3*ans+1$,这对于上一个答案来说其实贡献了 $3*ans^2+3*ans+1$,那么只需要维护一个 $ans^2$与 $ans$的期望,然后转移到$ans$就行了。 阅读全文
摘要:
传送门 解题思路 第一问比较简单,设$f[i]$表示扔了$i$次正面向上的硬币的期望,那么有转移方程 : $f[i]=f[i]*(1-p)+f[i-1]*p+1$,意思就是$i$次正面向上可以由$i-1$次扔一个正面或者$i$次扔一个背面得到,化简后可得 : $f[i]=f[i-1]+1 阅读全文
摘要:
传送门 # 解题思路 ~~这怕是本蒟蒻第一个独立做出来的期望$dp$的题,发篇题解庆祝一下~~。首先,应该是能比较自然的想出状态设计$f[i][j][0/1]$ 表示当前还剩 $i$个白老鼠,$j$个黑老鼠,当前是$A/B$抓的概率。有个问题似乎因为当其中一个人抓到白老鼠时游戏就结束了,而在转移过 阅读全文
摘要:
传送门 解题思路 拉了很长的战线,换了好几种写法终于过了。。首先每个蓄水场一定是对沙漠造成连续一段的贡献,所以可以$bfs$出每种状态,然后做一次最小区间覆盖,但这样的复杂度有点高。就每次只搜那些比左右高的点。 #include<iostream> #include<cstdio> #include 阅读全文
摘要:
传送门 解题思路 可以通过手玩或打表发现,其实要选的点一定是他们三个两两配对后其中一对的$lca$上,那么就直接算出来所有的$lca$,比较大小就行了。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> # 阅读全文
摘要:
解题思路 比较简单的题,用二项式定理即可。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> using namespace std; const int MAXN = 10 阅读全文
摘要:
解题思路 明明一道比较简单的贪心结果挂了好几次23333,就是按照时间排序,然后拿一个小根堆维护放进去的,如果时间允许就入队并且记录答案。如果不允许就从堆里拿一个最小的比较。 #include<bits/stdc++.h> using namespace std; const int MAXN = 阅读全文