JZOJ5446 高考是不可能高考的

2021-08-10 07:14:46 字數 1522 閱讀 1520

###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

2​n)

條的。###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飛到程式中的錯誤,是不能永久遺留的。川普的反對者高喊 川普說回去。是說川普反對移民,讓移民回家去。但是,移民不是美國的錯誤,而是美國的榮耀 正常手續,或者不得不承擔的義務。所以,移民在正常手續下是可以...