T1:这题用dp。
设f[i][j]表示第j个人通过第i轮的概率。则f[i][j]=sum(f[i-1][j]*f[i-1][k]*a[j][k]),k表示第i轮可能与第j个人相遇的人。至于k,我们可以用2的次方去求。
T2:这题是贪心+线段树。
我们先以给出区间的右端点为第一关键字,左端点为第二关键字从小到大排序。设x为这个区间要种树的棵数与目前已种的树的棵树的差,那么最优的种树方法就是取这个区间后x个没有种树的位置种树。至于求一个区间的树的棵树,可以用线段树。
T3:这题的g(x)可以用快速幂求,设m=g(x),则ans=C(k-1,m-1),记得用高精度。
T4:我们设ans[i][j]表示从第i天到第j天都可以走的最短路,ans数组用SPFA求。然后设f[i]表示到第i天的最小值,则
f[i]=min{
1、ans[1][i](从第一天到第i天都没有换过)
2、f[j]+ans[j+1][i]+k(从第j天开始换了一次)}
最终的答案就是f[n]。