[题目]B. Invariance of Tree [题意]给定n个数的置换,要求使n个点连成1棵树,满足u,v有边当且仅当a[u],a[v]有边,求一种方案或无解.n<=10^5. [算法]数学 置换 [题解]置换可以分解成若干循环,那么两个点的连边本质上是两个循环之间的连边. 因为要求无环(树),易知所有循环长度必须为偶数(这里不包括最后的情况1). 那么循环之间通过连边形成一棵树后,最后的问题是必须至少存在一个循环内部相互连边.(不可能通过循环之间的连边使得循环内部连边,否则循环之间的连边…
[Codeforces]Round #491 (Div. 2) 总结 这次尴尬了,D题fst,E没有做出来.... 不过还好,rating只掉了30,总体来说比较不稳,下次加油 A:If at first you don't succeed- SB题,就是注意一下特判就好了,然后我一开始wa了三次... #include<bits/stdc++.h> using namespace std; int read(){ int ans=0,w=1;char c=getchar(); while(!…
题目链接 Flights for Regular Customers 首先按照$d$的大小升序排序 然后分成$m$个时刻,每条路径一次处理过来. $can[i][j]$表示当前时刻$i$能否走到$j$ $can$通过上一条路径后的$can$和当前的可行路径矩阵的$d$次幂得到. 这由$floyd$求解即可.考虑到$d$很大,用矩阵快速幂加速. TLE on test 10 矩阵乘法的时候用$bitset$优化. 更新答案的时候,我们枚举每个点. 若第$1$个点可以走到第$i$个点,则更新答案.…