校內模擬 帳篷(凸包DP)

2021-10-03 02:36:53 字數 2615 閱讀 2615

簡要題意:

有一些要被圍起來的點,有一些木樁,請你以這些木樁為頂點構造乙個凸多邊形,使得要求的點全部在其內部,同時在原點處有乙個最高點,請你最小化以你選擇的凸多邊形為底面的椎體的側面積。

凸包dp sb題一道。

考場上沒看到凸多邊形的限制去想凹的情況了。

**:

#include

#define ll long long

#define re register

#define db double

#define cs const

using std::cerr;

using std::cout;

template

<

typename t>

void

ckmin

(t &a,cs t &b)

struct pnt

pnt(

int _x,

int _y):x

(_x),y

(_y)

friend pnt operator

+(cs pnt &a,cs pnt &b)

friend pnt operator

-(cs pnt &a,cs pnt &b)

friend ll operator

*(cs pnt &a,cs pnt &b)

inline db len

()cs};

inline ll crs

(cs pnt &a,cs pnt &b,cs pnt &c)

cs int n=

4e2+7;

int n,m;

ll fib[80]

,h;bool ok[n]

[n];

pnt p[n]

,q[n]

;int id[n]

[800

],ct[n]

;inline ll crs

(int a,

int b,

int c)

inline db dis

(int a,

int b)

inline db calc

(cs pnt &a,cs pnt &b)

inline db calc

(int a,

int b)

int ql[n]

,tl;

int qr[n]

,tr;

void

get_lr

(int o,

int t)

else}}

db f[n]

[n];

db calc

(int o));

for(

int t:ps)

db res=

1e16

;for

(int re i=o+

1;i<=n;

++i)

if(ok[i]

[o])

for(

int re j=o+

1;j<=n;

++j)

ckmin

(res,f[j]

[i]+

calc

(i,o));

return res;

}void

work()

);h=n+m>=75?

0:fib[n+m]

;for

(int re i=

1;i<=n;

++i)

for(

int re j=

1;j<=n;

++j)

for(

int re i=

1;i<=n;

++i));

std::

sort

(id+i+

1,id+n+1,

[i](

int a,

int b));

int&t=ct[i]=2

;for

(int re j=

3;j<=n;

++j)if(

crs(i,id[t]

,id[j])||

(id[t]

>i)

) id[

++t]

=id[j]

;for

(int re j=t+

1;j++j)id[j]

=id[j-t+1]

;}db ans=

1e16

;for

(int re i=

1;i<=n;

++i)

ans=std::

min(ans,

calc

(i));if

(ans<

1e16

)printf

("%.3lf\n"

,ans)

;else

puts

("no solution");

}void

main()

inline

void

file()

signed

main()

BJ模擬 帳篷 凸包

題目描述 解題思路 當n,m很小時,直接暴力列舉起點,用三角剖分的方式,狀態記錄當前點和上乙個點dp,複雜度為o n4 o n 4 當n,m較大時,h已經遠超1e9z,直接求周長最小凸包即可,注意周長最小時自動滿足凸性,所以可以只列舉起點,狀態記錄當前點dp即可,也可以用floyed求最小環的方式d...

校內模擬 最優得分(揹包DP)

第一檔資料暴力,第二檔資料因為沒有扣分限制所以就是乙個裸的01揹包。對於第三檔資料,因為有乙個b的限制,所以它選擇的做題順序會對得分產生影響。但因為b都是相同的,所以如果選好了要做哪些題目,顯然按照時間從小到大來做是最優的,排個序以後揹包就可以了。這些部分分基本上已經指明了正解的思路。仍然考慮選好要...

校內模擬 記憶(狀壓DP)

考場想到了正解,然後被卡快取記憶體,gg 乙個顯然的轉化就是設e ie i ei 表示朋友選擇第i ii個串的時候的期望操作次數。則答案就是所有e ie i ei 的平均值。首先考慮乙個o n l2l o nl2 l o nl2l 的暴力,對於每個串,列舉所有其他串看有多少個位置相同,則我們能夠知道...