t1 糖果 bzoj 2330
題目大意:
幼兒園裡有n
個小朋友,
給這些小朋友們分配糖果,要求每個小朋友都要分到糖果 每個小朋友會提出一些要求
k行 每行輸入三個數x a b
如果x=1
, 表示第
a個小朋友分到的糖果必須和第
b個小朋友分到的糖果一樣多
如果x=2
, 表示第a
個小朋友分到的糖果必須少於第
b個小朋友分到的糖果
如果x=3
, 表示第a
個小朋友分到的糖果必須不少於第
b個小朋友分到的糖果
如果x=4
, 表示第a
個小朋友分到的糖果必須多於第
b個小朋友分到的糖果
如果x=5
, 表示第a
個小朋友分到的糖果必須不多於第
b個小朋友分到的糖果
思路:一道裸題
對於x=1的情況 在a b之間連無向邊權值為0
x=2和x=4 在從a->b||b->a連有向邊權值為1
x=3和x=5 在從b->a||a->b連有向邊權值為0
如果有正環輸出-1 開始的時候將所有點都放到佇列裡
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9view code#define inf 2147483647
10#define ll long long
11#define maxn 100100
12#define eps 1e-9
13using
namespace
std;
14 inline int
read()
1518
while(isdigit(ch))
19return x*f;20}
21int n,m,q[maxn<<4],l=1
,r,f,st,inq[maxn],num[maxn];
22ll ans;
23int to[maxn<<1],nxt[maxn<<1],fst[maxn],dis[maxn],val[maxn<<1
],cnt;
24void add(int u,int v,int w)
25int
spfa()
2638}39
return1;
40}41int
main()
4248
if(c==2) if(a!=b) add(a,b,1);else
49if(c==3) add(b,a,0
);50
if(c==4) if(a!=b) add(b,a,1);else
51if(c==5) add(a,b,0
);52}53
for(int i=1;i<=n;i++) dis[i]=1,inq[i]=1,num[i]=1,q[++r]=i;
54if(!spfa())
55for(int i=1;i<=n;i++) ans+=dis[i];
56 printf("
%lld
",ans);57}
58
t2 layout bzoj 1731
題目大意:
數軸上放一些點 按順序放n個點
有一些條件為 點a與點b的距離不大於或不小於乙個距離c
思路:還是裸題
因為按順序放
所以不小於的情況就從a->b連權值為c的邊 不大於的情況從b->a連權值為-c的邊
判負環
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9view code#define inf 2139062143
10#define ll long long
11#define maxn 100100
12#define eps 1e-9
13using
namespace
std;
14 inline int
read()
1518
while(isdigit(ch))
19return x*f;20}
21int n,m1,m2,q[maxn<<4],l=1
,r,f,st,inq[maxn],num[maxn];
22ll ans;
23int to[maxn<<1],nxt[maxn<<1],fst[maxn],dis[maxn],val[maxn<<1
],cnt;
24void add(int u,int v,int w)
25ll spfa()
2638}39
if(dis[n]==inf) return -2;40
return
dis[n];41}
42int
main()
4346
while(m2--)
47 memset(dis,127,sizeof
(dis));
48 printf("
%lld
",spfa());
49 }
差分約束系統
差分約束 若 s a s b k 建一條b到a 的長度為k的邊 若s a s b k 建一條b到a 的長度為 k的邊 是求最小值的最長路 是求最大值的最短路 注意到最短路演算法的鬆弛操作 if d j d i w i j d j d i w i j 這其中的三角形不等式 d j d i w i j ...
差分約束系統
差分約束系統 對於差分不等式,a b c 建一條 b 到 a 的權值為 c 的邊,求的是最短路,得到的是最大值 對於不等式 a b c 建一條 b 到 a 的權值為 c 的邊,求的是最長路,得到的是最小值 存在負環的話是無解 求不出最短路 dist 沒有得到更新 的話是任意解 第三 一種建圖方法 設...
差分約束系統
差分約束系統 x1 x2 0 x1 x5 1 x2 x5 1 x3 x1 5 x4 x1 4 x4 x3 1 x5 x3 3 x5 x4 3 不等式組 1 全都是兩個未知數的差小於等於某個常數 大於等於也可以,因為左右乘以 1就可以化成小於等於 這樣的不等式組就稱作差分約束系統。這個不等式組要麼無解...