思路:先o(n)預處理出ri[i][j],le[i][j],分別表示第i個位置向右邊移動出j個空格需要的步數,表示第i個位置向左邊移動出j個空格需要的步數。
然後列舉間隙處,二分判段最大間隔。
#include#include#include
#include
#define maxn 710
#define inf 100000000
using
namespace
std;
intri[maxn][maxn],le[maxn][maxn],n,m;
char
str[maxn];
bool ok(int pos,int
x)
for(i=0;i<=n;i++)
//cout}int
main()
}ze=0
; scanf(
"%d%d%s
",&n,&m,str);
if(str[0]=='
0') le[1][1]=0,ze=1
;
for(i=1;i)
}if(str[n-1]=='
0') ri[n][1]=ri[n+1][1]=0
;
for(i=n-1;i>=1;i--)
}int f=0
;
int ans=0
,l,r,mid;
for(i=1;i<=n;i++)
ans=max(ans,l);
if(ok(i,r))
ans=max(ans,r);}}
printf(
"case %d: %d\n
",++ca,ans);
}return0;
}
瘋牛(二分列舉)
描述 農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間裡,他們就要發生爭鬥。為了不讓牛互相傷害。john決定自己給牛分配...
hdu 5265 二分 列舉
解題思路 首先對每個數進行去模,這樣得到的數就會是 0,p 1 的範圍,接下來就是如何組合的問題了。這裡要考慮到模的性質了,假設取的兩個數分別為i,j,其中i j,如果當前數i p 1 2,那麼就會出現兩種情況 1 j p 1 2,這樣算出來的結果必定是i j p,i和j肯定都要盡可能大 2 j p...
HDU 6012 列舉 二分
問題描述 這幾天lotus對培養盆栽很感興趣,於是她想搭建乙個溫室來滿足她的研究慾望。lotus將所有的n n株盆栽都放在新建的溫室裡,所以所有盆栽都處於完全相同的環境中。每一株盆栽都有乙個最佳生長溫度區間 l,r l r 在這個範圍的溫度下生長會生長得最好,但是不一定會提供最佳的研究價值 lotu...