###solution
如題,打工是不可能打工的,高考是不可能高考的
看到最小距離最大直接二分答案,考慮怎麼判定。
我們先限制一下點對(乙個旗子能放的兩個位置)的關係(後面說怎麼限制)。
然後把所有位置打散,對映到數軸上,對於乙個位置i
ii放置旗子,那麼區間[i−
mid+
1,i+
mid−
1]
[i-mid+1,i+mid-1]
[i−mid
+1,i
+mid
−1]中所有能放旗子的別的位置都不能放。那麼這就是乙個經典的2-sat問題。同時點對的限制也是乙個2-sat限制關係。
但這題暴力連邊可能會t,我們發現乙個位置i會向連續的區間連邊,於是我們可以對區間建棵線段樹,連的時候直接連向對應區間即可。這樣連的邊數是o(n
log2
n)
o(nlog_2n)
o(nlog
2n)
條的。###code
#include#include#include#include#define fo(i,j,k) for(int i=j;i<=k;i++)
#define fd(i,j,k) for(int i=j;i>=k;i--)
#define rep(i,x) for(int i=ls[x];i;i=nx[i])
#define n 10010
#define m 100010
#define inf 2147483647
#define abs(x) ((x)<0?-(x):(x))
using namespace std;
int n;
struct nodea[n],b[n*2];
int tot=0;
bool cmp(node x,node y)
void lk(int v,int l,int r,int x,int y,int t)
int mid=(l+r)>>1;
if(y<=mid) lk(v<<1,l,mid,x,y,t);
else if(x>mid) lk((v<<1)+1,mid+1,r,x,y,t);
else lk(v<<1,l,mid,x,mid,t),lk((v<<1)+1,mid+1,r,mid+1,y,t);
}bool check(int mid)
fo(i,1,tot)
if(!dfn[i]) tarjan(i);
fo(i,1,tot) if(c[i]==c[i+tot] && c[i]) return false;
return true;
}int main()
sort(b+1,b+tot+1,cmp);
fo(i,1,tot)
int l=0,r=(b[tot].x-b[1].x)/(n-1)+1;
while(l+1if(check(r)) l=r;
printf("%d",l);
}
Jzoj5446 高考是不可能高考的
snuke 認為兩個旗子間的最小距離越大越好.請你求出最大值.今天這都是些集訓隊作業啊!這個題本來以為一眼能做結果死磕磕不動 二分答案肯定是要的,問題是怎麼判定解 1.dp肯定不行了 2.資料結構,也不行 3.圖的最大獨立集,比較靠譜但是。複雜度 正解 2sat 考完聽他們說才恍然大悟,我在分析的時...
愛情永遠不可能是天平
愛情永遠不可能是天平。你想在愛情裡幸福就要捨得傷心。愛情原來本就是海浬的沙,只有你用心去呵護它,用淚和心血去滋潤它,讓它沉醉於心才能成為一顆水晶 人的精神有三種境界 駱駝 獅子和嬰兒。第一境界駱駝,忍辱負重,被動地聽命於別人或命運的安排 第二境界獅子,把被動變成主動,由 你應該 到 我要 一切由我主...
bug永久遺留是不可能的
程式中的錯誤,稱為bug。但什麼是bug,大家看法不同,但是debug程式除錯不存在錯誤問題。bug飛到程式中的錯誤,是不能永久遺留的。川普的反對者高喊 川普說回去。是說川普反對移民,讓移民回家去。但是,移民不是美國的錯誤,而是美國的榮耀 正常手續,或者不得不承擔的義務。所以,移民在正常手續下是可以...