18 11 8 考試總結

2022-05-20 01:23:05 字數 2165 閱讀 2466

這道題是先統計一枚個點位根節點的子樹的$size$ 首先了解對於每一種連通塊的$size$只有唯一一種方案

這樣子先根號列舉$n$的所有因子 對於每個因子再去檢視每個節點子樹的$size$是否是當前因子的倍數

若是倍數 那麼被他到他的父親的這條邊切割形成的兩個連通塊都是當期因子的倍數 那麼這裡肯定是分割點之一

因為多統計了一次根節點 所以這樣子就相當於統計了塊的個數 接下來再判斷$n / size$與當前統計出的個數比較即可

這道題大家紛紛暴力隨機化$a$了 只有我這種蒟蒻不會

這道題正解是倍增 首先肯定考慮到二分 

那麼考慮對於每乙個二分的長度用倍增處理出從$i$點使用$2^$機會(滿足每次機會均小於當前二分的$len$)能跳到的最遠點

因為我們不知道它到底是以誰為起點的 所以就將區間翻倍 列舉起點

對$m$二進位制拆分跳倍增 在判斷最後跳到的點是否跨過當前列舉的起點對應的終點即可

**

#include #define oo 3e7

using

namespace

std;

const

int n = 1e5 + 5

;int dis[n][25], pos[n][25], n, m, to[n][25], a[2 *n], cmp;

void

init( )

int jump(int st, int

len)

void prepare(int

len)

for(int p = 0; p <= 20; p ++) to[2 * n + 1][p] = 2 * n + 1

;

for(int p = 1; p <= 20; p ++)

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

to[i][p] = to[to[i][p - 1]][p - 1];}

bool check(int

mid)

return

false;}

void

solve( )

printf("%d

", ans);

}int

main( )

init( );

solve( );

}

第三題標程都是錯的,,,

大概做法是將每個點想他能夠到達的地方連邊

因為不考慮$1$對方案數的貢獻 所以將每兩個$1$之間的邊縮掉 跑一邊$spfa$即可 記憶花搜尋應該也是可以的

沒有改這道題...。

18118 勇者鬥惡龍

時間限制 800ms 記憶體限制 65535k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 有n個頭的惡龍,你希望僱一些騎士把它殺死 即砍掉所有頭 村里有 個騎士可以僱傭,乙個能力值為x的騎士可以砍掉惡龍 乙個直徑不超過x的頭,且需要支付x個金幣。如何僱傭騎士才能砍掉惡龍的...

18118 勇者鬥惡龍

時間限制 800ms 長度限制 10kb 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 有n個頭的惡龍,你希望僱一些騎士把它殺死 即砍掉所有頭 村里有 個騎士可以僱傭,乙個能力值為x的騎士可以砍掉惡龍 乙個直徑不超過x的頭,且需要支付x個金幣。如何僱傭騎士才能砍掉惡龍的所有頭...

考試總結 CQOI2017 考試總結

再奮鬥一年,爭取ak noip2016 cqoi2017 這是去年我立的flag。看考場,電腦挺快,而且配置和評測機一樣,可以放心的在自己的電腦上卡常測試啦,好評。碼了一道fft的題,沒網只好拷著回家交,鍵盤蜜汁小,enter佔據了兩行,旁邊還有關機按鈕。座位安排奧妙重重,和巴蜀dyf大神坐在一起。...