國慶訓練10 7

2021-09-28 01:48:03 字數 3240 閱讀 4169

second

tag:圖論,連通塊,中等

2033: [poi2008]blo

時間限制:10秒 記憶體限制:162mb

題目描述

byteotia城市有n個 towns m條雙向roads. 每條 road 連線 兩個不同的 towns ,沒有重複的road. 所有towns連通。

輸入

輸入n<=100000 m<=500000及m條邊

輸出

輸出n個數,代表如果把第i個點去掉,將有多少對點不能互通。

樣例輸入

5 5

1 22 3

1 33 4

4 5

樣例輸出

8816

148

題解

和昨天的乙個題目很像,就是要實現的任務不一樣,當然做法也就不一樣。

tarjan演算法做,處理出點所能到達的&是它子樹的連通塊size,然後其父親點size=(n-1-size子),ans+=上述相乘;最後加上其本身不能到達節點數即(n-1),最後再*2轉化為有序數即可。

#include

using

namespace std;

const

int n=

1e5+5;

const

int m=

1e6+5;

typedef

long

long ll;

typedef

struct

edge;

edge e[m]

;int n,m,x,y,cnt=

0,tim;

int dfn[n]

,low[n]

,size[n]

,f[n]

;ll ans[n]

;void

add(

int x,

int y)

void

tarjan

(int now)

}else low[now]

=low[now]

?low[now]

:dfn[t]

;//節點t如果已經訪問過,就要更新low[now]

} ans[now]+=

(ll)z*

(n-z-1)

;}intmain()

tarjan(1

);//因為題中,保證圖連通,只需要跑一次tarjan演算法即可

for(

int i=

1;i<=n;i++

)return0;

}/*5 51 2

2 31 3

3 44 5

*/

tag:計算幾何,中等

2042: [poi2008]tro

時間限制:20秒 記憶體限制:162mb

題目描述

平面上有n個點. 求出所有以這n個點為頂點的三角形的面積和 n<=3000

輸入

第一行給出數字n,n在[3,3000] 下面n行給出n個點的座標,其值在[0,10000]

輸出

保留一位小數,誤差不超過0.1

樣例輸入

5

0 01 2

0 21 0

1 1

樣例輸出

7.0

題解

計算幾何題,首先已知三角形三點求面積公式:|(yj−yi)∗(xk−xi)−(yk−yi)∗(xj−xi)|/2;

暴力做法是,列舉所有三角形,求面積即可。公式:2*ans=∑

i<

j

\sum_^n

∑j=i+1

n​(yj*∑k=

j+1n

\sum_^n

∑k=j+1

n​xk-∑k=

j+1n

\sum_^n

∑k=j+1

n​yk*xj),維護兩個字尾和即可。

還有就是精度問題,直接用double會wa,應用ll,除以2後再保留一位小數。

//正確做法

#include

#include

#include

using

namespace std;

typedef

long

long ll;

typedef

struct

point;

const

int n=

3005

;point p[n]

,t[n]

;ll sx[n]

,sy[n]

;bool

cmp1

(point a,point b)

bool

cmp2

(point a,point b)

point funj

(point a,point b)

;return p;

}int

main()

}printf

("%lld.%lld\n"

,ans/

2,ans%2*

5);return0;

}

//暴力做法,竟然沒t……?!?!%%%o(n3) 

#include

using

namespace std;

typedef

long

long ll;

const

int n=

3e3+5;

typedef

struct

point;

point p[n]

;int

main()

for(i=

0;i}printf

("%lld.%lld\n"

,ans/

2,ans%2*

5);return0;

}

國慶訓練總結

國慶節前四天因為直接就和我爸會老家了,沒帶電腦。然後一直到中秋節過完第二天才回去,前四天就在老家看的知識點和大佬們部落格做的題目與題解,然後中秋節後開始做題,總結下這幾天的訓練吧,因為在家起不太來。所以做題一般都是下午開始做然後做到晚上,這幾天到現在兩個專題一共做了差不多二十個題吧,來總結下這幾天做...

國慶DAY1訓練

j 模擬 題意 移動數字 記錄一下每個數字的位置 然後如果和0的距離為1 則交換 include using namespace std struct node p 1020000 pos intcal int x,int y int a 1020000 intmain while m for in...

2017 10 8國慶小長假訓練總結

國慶放了8天,然而,其實也就是6 8號在學校機房裡的時候認真刷了,在家裡的時間還是太散漫,在家平均兩天一道題 幾乎刷不動,家裡有小孩,也幾乎沒辦法安靜下來思考什麼或者安靜的分析題解。回來之後好多了 就是機房有點冷 是順時針方向排序。為什麼我翻譯過來是順序。結合前面的,根本沒有想會是順序逆序的順序。英...