bzoj 4603 平凡的骰子

2022-06-01 03:51:10 字數 1643 閱讀 2551

題目大意:

思路:首先我們需要求出整個凸多面體的重心

可以通過把多面體剖分為四面體 求出每個四面體的重心

四面體的重心為四個點的座標和/4

對每個四面體的重心 加上它們體積的權 加權平均數即為整個的重心

(求每個四面體的體積可以用三個向量的混合積

因為給出了求凸面三角形的公式

因此乙個凸面上凸n邊形的公式為它的內角和-(n-2)*pi 

這樣這個面的答案為面積/整個圓的表面積即4pi

(求二面角可以用叉積 求出兩個法向量然後運用課內知識求出二面角

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10

#define inf 2139062143

11#define ll long long

12#define maxn 200

13using

namespace

std;

14 inline int

read()

1518

while(isdigit(ch))

19return x*f;20}

21const

double pi=acos(-1

);22

intn,m,alpha[maxn][maxn],num[maxn];

23struct vectorp[maxn];

24 vector operator + (const vector &a,const vector &b) ;}

25 vector operator - (const vector &a,const vector &b) ;}

26 vector operator * (const vector &a,const

double &b) ;}

27 vector operator / (const vector &a,const

double &b) ;}

28 vector operator ^ (const vector &a,const vector &b) ;}

29double

operator & (const vector &a,const vector &b)

30 inline double len(vector a)

31 inline double getv(vector a,vector b,vector c)

32 inline double

geta(vector a,vector b,vector c)

3336

intmain()

3746

for(int i=1;i<=m;i++)

47for(int j=2;j)

4853 ctr=ctr/(vs*4

);54

for(int i=1;i<=n;i++) p[i]=p[i]-ctr;

55for(int i=1;i<=m;i++)

5661 }

view code

JZOJ4603 顏料大亂鬥

這裡就不罵辣雞出題人了 這題查詢和修改區間 l r 竟然 l 可以大於 r!而且白色是顏料1!注意上面那些細節,開30顆線段樹就可以ac了。include include include include define fo i,j,k for int i j i k i define fd i,j,...

JZOJ 4603 顏料大亂鬥

畫師傅又要開始畫畫了,這次他花了三天三夜將一堵牆塗成了白色。但是畫師傅有個頑劣的 小花,小花討厭畫師傅對ta始亂終棄,所以趁 畫師傅不在用不同的顏料將牆塗來塗去。然而畫師傅為了保護他的大作,設定了乙個監控機制a。a每隔一段時間會 查珣某一段牆上的顏料的種類數,並將其記錄下來。現在畫師傅回來了,看到五...

BZOJ1052 BZOJ3760 覆蓋問題

原題位址 先說自己的逗比方法 二分答案,把所有點用乙個最小的矩形 框 起來,易證矩形的其中乙個端點是最優解中正方形的乙個端點,然後列舉四個端點後遞迴處理,差不多了 然後 olz黃學長的o n 做法 ac code include include include using namespace std...