題意:有n架飛機需要著陸,每架飛機都可以選擇「早著陸」和「晚著陸」兩種方式之一,且必須選擇一種,第i架飛機的早著陸時間為e,晚著陸時間為l,不得在其他時間著陸。你的任務是為這些飛機安排著陸方式,使得整個著陸計畫盡量安全。換句話說,如果把所有飛機的實際著陸時間按照從早到晚的順序排列,相鄰兩個著陸時間間隔的最小值。
思路:二分查詢最大值p,每次都用2—sat判斷是否可行。
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10using
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,不得在其他時間著陸。你的任務是為這些飛機安排著陸方式,使得整個著陸計畫盡量安全。話句話說,如果把所有飛機的實際著陸時間按照從早到晚的順序排列,相鄰兩個著陸時...