可能是因為太累了吧,早上6點睡的,spfa居然乙個vis陣列敲錯了!!!wa了好久。。。。**還是要多敲。。。細心+冷靜
這題是差分約束題,一般的差分約束是先轉換為圖,然後用spfa求其中的最短路~
**長的一b,沒怎麼看,我自己試著搞了搞,同樣的把這些不等式轉換為圖,然後求的不是最短路而是最長路~~~而且我的圖里的權值除了回來的那條路是 -1 其餘的都是正的,這樣的話更好理解~~
#include#include#include#include#include#include#include#include#includeusing namespace std;
const int maxn=51111;
struct zz
}zx,tz;
vectorg[maxn];
vectorv;
queueq;
bool vis[maxn];
int n,rend,now,temp,tcost;
int s[maxn];
void init()
void initg()
return ;
}void build()
}}
vis[now]=false;
}return s[rend];
}int main()
zx.from++;
zx.to++; //把範圍控制在1到+oo
if(zx.to > rend)
v.push_back(zx);
}
initg();
build();
cout<
HDU 1384 差分約束
要求選取乙個最小的集合,集合中的數滿足n個條件,每個條件 在區間 ai,bi 內至少有ci個數備選在了集合裡。差分約束,設sum i 表示在i 1中選取到集合中的數的個數,那麼題目的要求就可以描述為如下的關係 sum a sum b 1 c sum i sum i 1 0 sum i 1 sum i...
hdu 1384 Intervals (差分約束)
problem 1384 好歹用了一天,也算是看懂了差分約束的原理,做出第一條查分約束了。題意是告訴你一些區間中最少有多少元素,最少需要多少個元素才能滿足所有要求。構圖的方法是,a b 1 c。還有就是所有的相鄰的點都要連上 i 1 i 0,i i 1 1。因為我對點離散了,所以就變成 rx i r...
設計 SPFA 差分約束
有n nn頭牛,現在要設計乙個順序讓他們站成一排給他們餵食。奶牛們按照編號順序依次站立,允許有多隻牛站在同一位置。有一些牛希望之間的距離在某個範圍內,也有一些牛希望兩之間的距離大於等於某個距離。如果存在某種方案滿足上述要求,請你輸出1 11號牛和n nn號牛之間最大距離。i np ut input ...