结业赛下半场题解bulid by [正牌管理员]萌萌哒管理员 at 2015-09-05 18:00
Rating:978
A:设dp[i][j]表示打第i个敌人时用第j种队伍的最大胜率,那么状态转移有两种,设p[x][y]表示第x种队伍对第y种队伍的胜率,设第i个AI是队伍k。那么我们有:
dp[i][j]=p[j][k]*max(dp[i+1][j],dp[i+1][k]),第一种表示不换,第二种表示换。最后求dp[1][j]的最大值即可。
B:把广搜的过程中的队列改成优先队列,每次取出距离出发点最近的点扩展。
C:设线段连接x和y。把线段根据x排序,然后扫描一遍,类似于逆序数对的做法,添加y进树状数组,然后查询1~y-1的和累加。注意结果可能超过int范围
D:首先n==1时答案是1,k>2时无解,k==2时答案是1。k==1时枚举gcd(a,n) 的结果g,则gcd(b,n)=n/g,gcd(a,n)=g的a的个数即为phi(n/g) phi(x)为欧拉函数。结果即为∑phi(g)*phi(n/g)  (n%g==0) 直接枚举n的因子即可。
E:根据nim博弈的结果,必败态是所有数的异或和为0,所有第一步操作完后要达到必败态即可获胜。枚举第一步要操作的堆,把其他堆全部异或起来的值即为这一堆需要达到的值,如果这个值小于原来的值说明可以操作。计数累加即可。
F:拓扑排序,求当出现有3个组成的环时就是yes
G:二分枚举高度,求最短路。
1 reply by testjsp2 at 2020-10-28 01:48
Rating:-
<<<<<
回复
要回复,请先登录

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: