nyoj 265 積木 左右兩邊加中間

2021-06-22 07:25:30 字數 1148 閱讀 5991

wa了三次, 每次都是想的不全面, 兩次是只考慮左邊, 一次只考慮兩邊!!!最後終於知道還得加上自己的, 考慮欠佳啊!!

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:1 描述

在乙個矩形的坑的底部,無縫地鋪了一層積木(為簡單起見,本題中,用矩形表示積木),如下圖所示(陰影部分表示地,中空的部分表示坑,所有的白色矩形都表示坑底的積木):

現在,我們要在這個坑中再放入一塊正方形積木,但我們希望這塊積木的位置最低。如下圖所示,左圖中的灰色積木的位置就比右圖中灰色積木的位置更好(本題不考慮重力因素,假定新放入的積木不會傾倒,它的邊永遠平行於坑壁)。而且,可以看出,左圖中灰色方塊的位置是所有可能的位置中最低的位置(本題中,假定坑足夠寬也足夠深,後加的那塊積木不會放不進去)。

如果事先給定所有事先鋪好的積木的資訊和後加的積木的資訊,請編寫程式尋找一下它的最低位置。

輸入

第一行是乙個整數n(n<=10)表示測試資料的組數)

每組測試資料 第一行為乙個整數m(<=20),表示坑底積木的數量

之後m行,每行兩個整數,依次表示從左至右的每塊積木的寬度和高度(以厘公尺為單位)。

每組測試資料最後一行中還有乙個整數 ,表示後加的積木的邊長(以厘公尺為單位)(<1000)

輸出每組測試資料輸出只有乙個整數,表示將後加的積木放入坑中最低位置之後,它的上沿距離坑底地面的高度,每個輸出佔一行。

樣例輸入

1

210 40

15 60

20

樣例輸出

80
**:

#includestruct strs[21];

int min( int a, int b )

for( j = i+1; j < m&&s[i].h >= s[j].h; j ++ )//右邊找比該點低的相鄰的點

for( j = i-1; i!=0&&j >= 0&&s[i].h >= s[j].h; j -- )//左邊 第乙個是沒有左邊的

if( temp >= add ) ans = min( ans, s[i].h );

} printf( "%d\n", ans+add );

} return 0;

}

c c 去除字串左右兩邊空格

tools.h ifndef tools h define tools h extern c char ltrim char s extern c char rtrim char s extern c char alltrim char s 或者char ltrim char s char rtri...

實現左右兩邊固定寬度,中間自適應的布局

廢話不多說,上 方法一 float解決方案 float解決方案 float解決方案 float解決方案 方法二 絕對定位position解決方案 position解決方案 position解決方案 position解決方案 方法三 flex解決方案 flexbox解決方案 flexbox解決方案 f...

只顯示border邊框左右(上下)兩邊怎麼寫?

先設全邊框,再取消上下邊框樣式 border 1px solid 000 border style none solid 先設全邊框,再設定上下邊框的線為沒有 border 1px solid 000 border width 0 1px 不建議使用原因如見上一條 先設全邊框,再取消上下邊框的寬度 ...