NOIP模擬測試25

2022-03-26 21:34:01 字數 1211 閱讀 2599

這次考試後面心態**了。。。發現剛了2h的t2是假的之後就扔掉了,草率地打了個騙分

t1只會搜尋和m=0

最先做的t3,主要是發現部分分很多,當時第一眼看上去有87分(眼瞎了)。

後來想了想,感覺一條鏈不可做,69分

碼出來69分之後去測了一下第二個大樣例,發現跑了2.6s,心態**,預計得分47

出分之後發現把4000的22分拿到了,有69分。

於是成功憑藉t3苟進rk3

t1.是個容斥好題,考場上一直在想如何對點容斥,想到考試結束也沒想出來。

正解是容斥邊。

t2.尤拉迴路

t3.考試時用了0.5h切掉69分,想說一下,和正解思路完全不一樣。

臉哥和正解都是將整體的式子化簡求解,其實這個式子就是樹上任意兩點距離平方之和,因此我們可以考慮每個點對於答案的貢獻。

考慮樹上dp,如何從兒子的答案轉移到父親

我們令al[i]表示子樹中所有點到i的距離之和,ans[i]表示子樹中所有點到i的距離平方之和,siz[i]表示子樹大小,w[i]表示i到父親的距離。

那麼有ans[fa]+=ans[i]+2*al[i]*w[i]+w[i]*w[i]*siz[y]

al[fa]+=al[i]+siz[i]*w[i]

於是我們就可以求出來ans[1],然後我們可以通過上面這個式子進行換根,於是我們可以在o(n)的複雜度內求出解

總複雜度o(nq),常數較大,**實現很簡單。

1 #include2

#define mod 1000000007

3#define ll long long

4using

namespace

std;

5inline ll read()

12int n,f[100005],fi[100005],to[100005],ne[100005

],tot,sb,q;

13 ll siz[100005],al[100005],fang[100005],ans,ni,w[100005

];14 inline void add(int x,int

y)19

void dfs(int

x)28}29

void dfs2(int

x)39}40

intmain()

56return0;

57 }

view code

正解不會,咕了

考試反思 0818NOIP模擬測試25 清心

兩機房分開考試。拿到了令人orz的a卷。15本校 3外校 18人參加 排名第7,沒前途。大不了去第二機房。skyh209比b卷rank1分數還高。gmk140也很強了。tdcp拿來乙個詭異的101。86,85,79。然後是我垃圾的72。在後面差距也不大。本來就沒幾分 題很好。子任務評測很公正,分數也...

NOIP模擬測試22

自 閉 賽 從這次比賽之後題都好難啊qaq 開考一小時內沒動鍵盤。三道題都不會。gg problem a 數論 過於玄學 列舉質因子,往答案裡去加。用來加入的質因子不會很多,質因子大了對答案是不優的。開兩個vector來回倒騰就完了 這題改完感覺也沒啥,為啥考場上就是想不出來啊qxq 1 inclu...

NOIP模擬測試20

liu runda聚聚的饋贈 problem a 周 防自閉題?這道題讓我整個考試都很愉悅 搜就完事了 1 include 2 3intn 4 int a 20 b 20 c 20 d 20 5 long long ans 67 void dfs int day,long long oi,long ...