NOI1998 圍巾裁剪

2022-05-05 01:39:07 字數 1462 閱讀 7207

裁縫有一塊非常珍貴的絲綢圍巾。可惜的是,圍巾的某些部分已經被蛀蟲給咬壞了。裁縫當然不願意就這麼把圍巾給丟了,於是,他想把圍巾給裁成兩塊小圍巾送給他的兩個女兒。自然,兩塊小圍巾的面積之和越大越好。 

這塊圍巾是乙個正三角形,三條邊被均勻地分成了n段,即這個正三角形被均勻地分成了n2個單元,每個單元是乙個面積為1的正三角形。圖一所 示為乙個n=5的圍巾,圖中帶陰影的單元表示被蛀蟲咬壞的部分。從上往下看,圍巾被分成了n行,第一行有1個單元,第二行有3個單元,其中有2個是形如d 的,有1個是形如ñ 的(這兩種三角形我們認為是形狀相同的)。第三行有5個,其中有3個是形如d 的,有2個是形如ñ 的…… 。用座標(x,y)給每個單元定位,第一行的單元的座標為(1,1);第二行從左到右的三個單元的座標依次為(2,1)、(2,2)、(2,3);

圍巾的剪裁條件如下: 

裁成的兩塊小圍巾形狀與原來的大圍巾完全相同,都是正三角形。 

每一塊小圍巾裡都不存在被蛀蟲咬壞的部分。 

裁剪時必須沿著單元的邊界裁剪。 

要求兩塊小圍巾的面積的總和最大。 

圖中,最優的裁剪方法已經用粗線畫了出來,面積和為4+9=13。 

現在需要你編乙個程式來幫助裁縫解決這個問題。

第一行為乙個整數n(1<=n<=100),表示這塊圍巾總共被分成了n2個單元。第二行為乙個整數m(0<= m<=n2-2),表示這塊圍巾共有m個單元被蛀蟲咬壞了。 

接下的m行,每一行有兩個正整數x和y,為這m個被蛀蟲咬壞的單元的座標。 

輸入檔案中同一行相鄰兩項之間用乙個或多個空格隔開。

僅含乙個整數,為你所找到的裁出兩塊小圍巾面積總和的最大值。z

dp方程很好想到,

a[i][2*j-1]=min(a[i+1][2*j-1],a[i+1][2*j+1])+1,

a[i][2*j]=min(a[i-1][2*j],a[i-1][2*(j-1)])+1;

#include#include#include#include#include#includeusing namespace std;

int n,x,y,m,ans;

int a[10001][20001];

int b[10001][20001];

void make()

for(int i=2;i<=n;++i)

for(int j=1;j<=i-1;++j)if(a[i][2*j]!=-1)

}void ask()

for(int j=i+1;j<=n;++j)

if(max1!=0&&max2!=0)ans=max(ans,max1*max1+max2*max2); }}

void splay()

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

for(int j=1;j<=2*i-1;++j)a[i][j]=b[i][j];

}int main()

printf("%d",ans);

return 0;

}

grub1 99 編譯安裝

2 編譯 解壓 grub 1.99.tar.gz 然後進入grub 1.99,配置 configure prefix opt grub2 編譯 make 安裝 make install 3 安裝 進入 opt grub2 sbin,執行下面命令 grub install root directory...

NYOJ199無線網覆蓋

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 我們的樂樂同學對於網路可算得上是情有獨鍾,他有乙個計畫,那就是用無線網覆蓋鄭州大學。現在學校給了他乙個機會,因此他要購買很多的無線路由。現在他正在部署某條大道的網路,而學校只允許把他的無線路由器放在路的正中間。我們預設這條大道是...

新iPhone何以只售199美元

據pcmagzine 報道,蘋果公司在wwdc上發布其3g版iphone的訊息在大多數人的預料之中,但是其低廉的售價卻的確出乎很多人的意料。據悉此次發布的3g版iphone中,8gb版本的售價僅為199美元,而16gb版本的售價也只有299美元。為什麼一部有如此高記憶體,配備有3g gps技術,擁有...