省選模擬賽 環

2022-05-01 06:18:08 字數 816 閱讀 9826

分析:不算太難的一道題.

如果把每個編號i看作乙個點,i向ai連邊,那麼最後一定會出現環,並且環與環之間是不相交的. 那麼我們可以dfs預處理出所有的環,用詢問的m除以環的長度,剩下的餘數就可以o(1)計算了,時間複雜度o(n).

上面這種做法在處理餘數部分時比較容易寫錯. 一種不容易寫錯的方法是倍增. 複雜度o(nlogn),可以通過本題.

#include #include 

#include

#include

using

namespace

std;

const

int maxn = 100010

;int n,fa[maxn][20

],vis[maxn];

void solve(int x,int

y)int

main()

for (int j = 1; j <= 19; j++)

for (int i = 1; i <= n; i++)

fa[i][j] = fa[fa[i][j - 1]][j - 1

];

intt;

scanf("%d

",&t);

solve(x,t);

while (scanf("

%d%d

",&x,&t) == 2

) solve(x,t);

return0;

}

省選模擬賽 project

最小割問題。建如下邊 s,i,ai 代表選用a語言編寫第i個專案 i,t,bi 代表選用a語言編寫第i個專案 其後注意要反向連邊 i,j,d 代表選用b語言編寫第i個專案,選用a語言編寫第j個專案 j,i,c 代表選用a語言編寫第i個專案,選用b語言編寫第j個專案 litc學長出的題,引文最小割題目...

mirror 省選模擬賽

標籤 狀壓dp 結論 當最優情況下,每行每列鏡子的個數都為偶數 題目可以轉化為擺放鏡子,使得格仔中產生的光環最長 所以不需要考慮鏡子到底放什麼方向 於是我們直接狀壓一列鏡子當前的奇偶性進行轉移 時間複雜度o 4n n m2 o 4 n n m2 include include include inc...

Sequence 省選模擬賽

標籤 貪心 給定乙個整數數列 a,定義f a max1 inaj aif a max1 i naj ai 保證 f a 0。你需要求出至少需要修改 a 的多少個位置才能使 f a 變小。注意,你修改之後的數也必須是整數。2 n 106 ai 109 2 n 106 ai 109 簽到題gg,自己真的...