LA 3211 飛機排程(2 SAT)

2022-06-20 21:48:18 字數 894 閱讀 4213

題意:有n架飛機需要著陸,每架飛機都可以選擇「早著陸」和「晚著陸」兩種方式之一,且必須選擇一種,第i架飛機的早著陸時間為e,晚著陸時間為l,不得在其他時間著陸。你的任務是為這些飛機安排著陸方式,使得整個著陸計畫盡量安全。換句話說,如果把所有飛機的實際著陸時間按照從早到晚的順序排列,相鄰兩個著陸時間間隔的最小值。

思路:二分查詢最大值p,每次都用2—sat判斷是否可行。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10

using

namespace

std;

1112

const

int maxn=2000+5;13

14int t[maxn][2

];15

16struct

twosat

1733

34void init(int

n)35

4041

void add_clause(int x,int xval,int y,int

yval)

4248

49bool

solve()

5060}61

return

true;62

}63}solver;

6465

bool test(int n,int

p)66

7576

intmain()

7790}91

while(l<=r)

9297 printf("

%d\n

",r);98}

99return0;

100 }

LA3211 訓練指南 飛機排程 2 sat

題意 有n嫁飛機需要著陸。每架飛機都可以選擇 早著陸 和 晚著陸 兩種方式之一,且必須選擇一種。第i架飛機的早著陸時間為ei,晚著陸時間為li,不得在其他時間著陸。你的任務是為這些飛機安排著陸方式,使得整個著陸計畫盡量安全。話句話說,如果把所有飛機的實際著陸時間按照從早到晚的順序排列,相鄰兩個著陸時...