poj 3678
(1)題意:
給出n個點,每個點都有乙個重量值有兩個限制條件,
一是n個點每個點的重量都不一樣
二是m個限制中有a求的重量小於b球的重量。
而且盡可能讓求的質量小一點,每個從1~n每次盡量讓這個求的質量小一些。
如果結果存在,輸出n個點的質量,否則輸出-1.
(2)思路:
一開始以為是差分約束,後來發現限制條件解出來的解不能保證所有的點的值都不同。
將限制作為邊,y的值一定大於x的值,所以在先給較大的y賦值,然後在處理x
建立一條從y到x的邊。
然後拓撲排序,因為要求從1~n的質量的質量盡可能較小,可以先確立最大的質量為n,然後處理其他點,
就是拓撲排序+優先佇列就好了。
(3)**:
參考文章
#include#include#include#include#includeusing namespace std;
const int maxn = 220;
priority_queue q;
int du[maxn],vis[maxn],mp[maxn][maxn],m,n,dis[maxn],fg;
void topo()
int val = n;
while(!q.empty())
} dis[x] = val--;
} if(val!=0) fg = 1;
}int main(void)
fg = 0;
for(int i=0;i1) printf(" ");
printf("%d",dis[i]);
}printf("\n");
} }return 0;
}
POJ 3678 深刻理解2SAT
感覺 這題看了一晚上了,看了所有的解題報告才明天怎麼回事 昨天自學沒理解好2sat啊,所以連邊不知道怎麼連,而且看了別人的解題報告了也看不明白為什麼要那樣連,暈 思路 因為給出結點 a b,值 c,還有判斷方式op,這種一看當然就知道是用2sat做了。為什麼說是深刻理解2sat呢,因為 2sat中說...
拓撲排序 利用優先佇列
include include include include using namespace std const int maxn 505 vector graph maxn inttopnum maxn nodenum maxn intnumvertex,numedge 有向無環圖一定存在拓撲序...
優先佇列 stl 拓撲排序
time limit 1 sec memory limit 128 mb submit 169 solved 73 submit status web board 馬上要上體育課了,上體育課之前總歸是要排個隊的,ly作為班長,怎麼排隊的問題只能由她來解決,但是馬上要上課了,ly又不清楚所有人的身高,...