8月7日NOiP訓練

2021-10-08 22:09:58 字數 2113 閱讀 7328

今天教練叫做了3道atcoderarc90上的題啊,1,2題倒是蠻水的,第3題,呵呵…

t1傳送門

一道最基礎的dp,不過貌似這資料暴力也輕鬆過?

#include

using

namespace std;

int n,f[3]

[110

],a[3]

[110];

intread()

while

(isdigit

(ch)

)return f*x;

}int

main()

cout<

[n];

return0;

}

t2

傳送門

我們教練為了防止騙分還專門**測的…,不過這種有這明顯歸屬關係的一看就並查集,還要維護權值便打個帶權並查集就是了。

#include

using

namespace std;

const

int n=

1e5+10;

int n,m,x,y,z,fa[n]

,sum[n]

;int

read()

while

(isdigit

(ch)

)return f*x;

}int

get(

int x)

void

merge

(int a,

int b,

int c)

intmain()

}else

merge

(x,y,z);}

cout<<

"yes"

;return0;

}

t3

傳送門

稍加分析,我們發現:因為兩個人都是走最短路的,並且邊權為正,所以至多相遇一次。 所以就列舉可能相遇的點/邊,用總情況減掉這些情況即可。 需要兩次迪傑斯特拉求最短路。

點相遇和邊相遇的情況見**;

#include

using

namespace std;

#define int long long

const

int mod=

1e9+7;

int n,m,op,ed,x,y,z,vis[

100010

],g[

100010][

2],dis[

100010][

2],id,first[

100010

],next[

400010

],to[

400010

],w[

400010

],index_,ans,u[

200010

],v[

200010

],w[

200010];

void

add(

int a,

int b,

int c)

intread()

while

(isdigit

(ch)

)return f*x;

}void

dij(

int st)

if(dis[v]

[id]

>dis[u]

[id]

+w[i])}

}}signed

main()

}for

(int i=

1;i<=m;i++

)//邊

cout<

return0;

}//陣列開大爆空間見祖宗啊!!!

8月7日訓練筆記

忙碌的一天,今天一天的重點放在了看課本上面,複習了求最短路徑的方法的一些知識點,然後看了乙個題目,現在最大的問題就是課本上的知識點看懂了,但是一到實際題目中去卻不知如何下手了,這充分反映出來對知識點的掌握不夠透徹,還有乙個就是題目做的太少了,見得題型也太少了,所以看見題目就有點 了,所以還需要多做題...

5月4日NOIP訓練

此次共五道題,前兩道水題不再多講 雖說後面3道也就普及左右難度233 先是較簡單的t4,本題題意是,給定一棵最多 10000 個結點的樹,以及最多 100000 個詢問。對於每個詢問中要查詢的兩個結點,輸出它們之間路徑上的中點 特別地,如果這個中點在某條邊上,則輸出這條邊的兩個端點。注意這裡說的路徑...

2023年8月7日訓練日記

今天訓練的主要目的是掌握最小生成樹的兩種演算法和拓撲排序,掌握基本思想 原理和框架,並運用解決本次練習中最後剩下的三道題 卡車歷史 最小生成樹 博格迷宮 bfs 最小生成樹 字母排序 拓撲排序 很多題目都是比較基礎的。我反覆研讀了課件並嘗試自己寫出基本框架的 並在此基礎上修改以a掉兩道水題。但是最後...