今天教練叫做了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掉兩道水題。但是最後...