多邊形序列70分

2021-07-22 10:51:42 字數 1037 閱讀 9744

我們猜測如果出現相鄰的兩個r(注意第乙個和最後乙個是r也算),那麼就一定不合法。同時,乙個合法的序列還要能夠組成直角多邊形。

假設序列有x個l,y個r

90x+270y=180(n-2)且x+y=n

解得x=n/2+2,y=n/2-2

所以n為奇數是gg的,n為偶數時l與r的個數是確定的。

討論三種情況:

1、第乙個是l最後乙個是r

2、第乙個是r最後乙個是l

3、第乙個和最後乙個都是l

第一、二種都可以考慮放了y個r,然後在r與r中間插入l,每個空至少插乙個l,最前面或最後面也是乙個空,答案為2c

y−1x

−1第三種就是多了乙個空,答案為cy

x−1

於是計算即可。

當然,想過要打高精度,而且還應該用fft加速高精度乘法,這裡只提供70分**

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

using

namespace

std;

typedef

long

long ll;

int pri[5000+10],f[5000+10],a[5000+10];

bool bz[5000+10];

int i,j,k,l,t,n,m,x,y,top;

ll ans;

ll c(int n,int m)

}fo(i,1,m)

}fo(i,1,n-m)

}ll t=1;

fo(i,1,5000)

while (a[i])

return t;

}void prepare()

f[i*pri[j]]=pri[j];}}

}int main()

}

求任意多邊形面積(凹多邊形和凸多邊形)

遇到問題 已知多邊形的各個左邊點,要求多邊形的面積 然後我搜尋了下看到這篇文章 這個人說的不多,但是簡單明瞭 首先已知各定點的座標分別為 x1,y1 x2,y2 x3,y3 xn,yn 則該多邊形的面積公式為 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 xk yk 1 xk 1 yk...

驗證多邊形是否為凸多邊形

驗證多邊形是否為凸多邊形 2108 shape of hdu include define debug 0 int crossmulti int x0,int y0,int x1,int y1,int x2,int y2 int main int n,i int f x,f y 第1個點 int s...

多邊形面積

點積 a b x1 x2 y1 y2 a b cos 點積的結果是乙個數值 叉積 a b x1 y2 x2 y1 a b sin 叉積的結果也是乙個向量,是垂直於向量a,b所形成的平面,如果看成三維座標的話是在 z 軸上,上面結果是它的模。三角形的面積 向量a和 向量b的叉積的絕對值表示 以 向量a...