日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ1201 区间

發布時間:2023/12/2 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1201 区间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目大意:

給定n個整數區間[ai,bi]和n個整數ci,求一個最小集合Z,滿足|Z∩[ai,bi]|>=ci(Z里邊在閉區間[ai,bi]的個數不小于ci)。

多組數據:

n(1<=n<=50000)區間的個數

n行:

ai bi ci(0<=ai<=bi<=50000,1<=ci<=bi-ai+1)

_____________________________________________________

這是一道查分約束題目。

Si為0-i中包含在Z中的個數,固有:

Si-Si-1<=1

Si-Si-1>=0

Sbi-Sai-1>=ci

依照上面不等式,變形并建邊。

求的Smax-S0>=x,變形為S0-Smax<=-x,所以求max到0的最短路,就是答案的相反數。

_____________________________________________________

?

1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cmath> 5 #include<cstring> 6 #include<queue> 7 using namespace std; 8 int n,maxd; 9 struct edge 10 { 11 int u,v,w,next; 12 }e[150010]; 13 int head[50010],js=0; 14 int dis[50010]; 15 bool inq[50010]; 16 int inqt[50010]; 17 queue<int>q; 18 void init() 19 { 20 js=0; 21 maxd=0; 22 memset(head,0,sizeof(head)); 23 } 24 void addage(int u,int v,int w) 25 { 26 e[++js].u=u;e[js].v=v;e[js].w=w; 27 e[js].next=head[u];head[u]=js; 28 } 29 bool spfa() 30 { 31 memset(inq,0,sizeof(inq)); 32 memset(dis,0x7f,sizeof(dis)); 33 memset(inqt,0,sizeof(inqt)); 34 q.push(maxd+1); 35 inq[maxd+1]=1; 36 inqt[maxd+1]=1; 37 dis[maxd+1]=0; 38 while(!q.empty()) 39 { 40 int u=q.front(); 41 q.pop(); 42 inq[u]=0; 43 for(int i=head[u];i;i=e[i].next) 44 { 45 int v=e[i].v; 46 if(dis[v]>dis[u]+e[i].w) 47 { 48 dis[v]=dis[u]+e[i].w; 49 if(!inq[v]) 50 { 51 inq[v]=1; 52 inqt[v]++; 53 q.push(v); 54 if(inqt[v]>50000)return 0; 55 } 56 } 57 } 58 } 59 return 1; 60 } 61 int main() 62 { 63 while(scanf("%d",&n)==1) 64 { 65 init(); 66 for(int a,b,c,i=1;i<=n;i++) 67 { 68 scanf("%d%d%d",&a,&b,&c); 69 if(b>maxd)maxd=b; 70 addage(b+1,a,-c); 71 } 72 73 for(int i=1;i<=maxd+1;i++) 74 { 75 addage(i-1,i,1); 76 addage(i,i-1,0); 77 } 78 if(spfa())printf("%d\n",-dis[0]); 79 } 80 return 0; 81 } View Code

?

轉載于:https://www.cnblogs.com/gryzy/p/6212196.html

總結

以上是生活随笔為你收集整理的POJ1201 区间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。