LA 3713 太空飛行員分組

2022-04-01 07:47:41 字數 1298 閱讀 9327

題意:有a,b,c三個人物要分配個n個太空飛行員,每個太空飛行員恰好要分配乙個任務,設平均年齡為x,只有年齡大於或等於x的太空飛行員才能分配任務a。只有年齡嚴格小於x的太空飛行員才能分配任務b。而任務c沒有限制。有m對太空飛行員相互討厭,因此不能分配到同一任務。程式設計找出乙個滿足上述所有要求的任務分配方案。

分析:2-sat。

建圖:肯定是不能同時去 c 的

同一類的話:

那麼就是2a或者2b了,到底是哪個,就得看年齡了。

#include#include

#include

#include

using

namespace

std;

const

int maxn = 100000 + 5;

struct

twosat

void init(int

n)

//x = xval or y = yval

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

yval)

bool

solve()

}return

true

; }};

intn, m, total_age, age[maxn];

int is_young(intx)

twosat solver;

intmain()

solver.init(n);

for(int i = 0; i < m; i++)

if(!solver.solve()) printf("

no solution.\n");

else

for(int i = 0; i < n; i++)

if(solver.mark[i*2]) printf("

c\n"); //

x[i]=false,去任務c

else

if(is_young(i)) printf("

b\n"); //

x[i]=true的年輕太空飛行員去任務b

else printf("

a\n"); //

x[i]=true的年長太空飛行員去任務a

}

return0;

}

LA 3713 太空飛行員分組

題意 有a b c 3個任務要分配給n個太空飛行員,其中每個太空飛行員恰好要分配乙個任務。設所有n個太空飛行員的平均年齡為x,只有年齡大於或等於x的太空飛行員才能分配任務a 只有年齡嚴格小於x的太空飛行員才能分配任務b,而任務c沒有限制。有m對太空飛行員相互討厭,因此不能分配到同一任務。程式設計找出...

poj 1835 太空飛行員(模擬)

description 問題描述 太空飛行員在太空中迷失了方向,在他的起始位置現在建立乙個虛擬xyz座標系,稱為絕對座標系,太空飛行員正面的方向為x軸正方向,頭頂方向為z軸正方向,則太空飛行員的初始狀態如下圖所示 現對六個方向分別標號,x,y,z正方向分別為0,1,2,負方向分別為3,4,5 稱它們...

POJ1835 太空飛行員(思路)

太空飛行員time limit 2000ms memory limit 30000k total submissions 5997 accepted 2618 description 問題描述 太空飛行員在太空中迷失了方向,在他的起始位置現在建立乙個虛擬xyz座標系,稱為絕對座標系,太空飛行員正面的...