有n個房子,嚴格按從矮到高依次跳,跳的兩個房子之間的距離要<=d,
差分約束。求最長路,按y-x<=d 建邊。
需要注意的是,按高度排序後建邊,需要考慮1和n的順序問題。
#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #define eps 1e-6 #define ll long long const int maxn=1010; const int maxm=1000000; using namespace std; struct edge { int h,id; }p[maxn]; struct node { int v,w,next; }e[maxm]; int h,head[maxn],d[maxn],inq[maxn],outq[maxn],n,pre[maxn]; bool cmp(edge a,edge b) { return a.h q; q.push(s); inq[s]=1; d[s]=0; while(!q.empty()) { x=q.front(); q.pop(); inq[x]=0; outq[x]++; if(outq[x]>n) return -1; for(i=head[x];i!=-1;i=e[i].next) { v=e[i].v; w=e[i].w; if(d[v]>w+d[x]) { d[v]=w+d[x]; if(!inq[v]) { inq[v]=1; q.push(v); } } } } return 1; } int main() { int icy,i,D,T=1,s,t; scanf("%d",&icy); while(icy--) { init(); scanf("%d%d",&n,&D); for(i=1;i<=n;i++) { scanf("%d",&p[i].h); p[i].id=i; } sort(p+1,p+n+1,cmp); for(i=2;i<=n;i++) { pre[p[i].id]=i; if(p[i-1].id
[C++設計模式]template 模板方法模式 模板法
高性能 TCP/UDP/HTTP 通信框架 HP-Socke
sgu251:Polymania(構造) 題目大意:
Qt 窗體間傳值(代碼備份),qt窗體 剛開始看的時候看的
合並兩個排序的鏈表,合並兩個排序題目:輸入兩個遞增排序的鏈表
Contest2089,contest Problem E: