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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

POJ 1201 amp; HDU1384 amp; ZOJ 1508 Intervals(差分约束+spfa 求最长路径)

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 1201 amp; HDU1384 amp; ZOJ 1508 Intervals(差分约束+spfa 求最长路径) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:

POJ:http://poj.org/problem?id=1201

HDU:http://acm.hdu.edu.cn/showproblem.php?

pid=1384

ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=508

Description

You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn.?
Write a program that:?
reads the number of intervals, their end points and integers c1, ..., cn from the standard input,?
computes the minimal size of a set Z of integers which has at least ci common elements with interval [ai, bi], for each i=1,2,...,n,?
writes the answer to the standard output.?

Input

The first line of the input contains an integer n (1 <= n <= 50000) -- the number of intervals. The following n lines describe the intervals. The (i+1)-th line of the input contains three integers ai, bi and ci separated by single spaces and such that 0 <= ai <= bi <= 50000 and 1 <= ci <= bi - ai+1.

Output

The output contains exactly one integer equal to the minimal size of set Z sharing at least ci elements with interval [ai, bi], for each i=1,2,...,n.

Sample Input

5 3 7 3 8 10 3 6 8 1 1 3 1 10 11 1

Sample Output

6

Source

Southwestern Europe 2002


題意:(轉)

[ai, bi]區間內和點集Z至少有ci個共同元素。那也就是說假設我用Si表示區間[0,i]區間內至少有多少個元素的話,那么Sbi -?Sai >= ci,這樣我們就構造出來了一系列邊。權值為ci,可是這遠遠不夠。由于有非常多點依舊沒有相連接起來(也就是從起點可能根本就還沒有到終點的路線),此時。我們再看看Si的定義。也不難寫出0<=Si - Si-1<=1的限制條件。盡管看上去是沒有什么意義的條件,可是假設你也把它構造出一系列的邊的話,這樣從起點到終點的最短路也就順理成章的出現了。

我們將上面的限制條件寫為允許的形式:

Sbi -?Sai >=?ci

Si - Si-1 >= 0

Si-1 - Si >= -1

這樣一來就構造出了三種權值的邊。而最短路自然也就沒問題了。

但要注意的是,因為查分約束系統里經常會有負權邊,所以為了避免負權回路,往往用Bellman-Ford或是SPFA求解(存在負權回路則最短路不存在)。

PS:

由于求的是[ai,bi]區間,所以我們加入邊的時候須要(u-1, v, w)!

把距離dis初始化為負無窮,?if(dis[v] < dis[u] + w)就可以!


POJ 和ZOJ用隊列和棧都能過,可是HDU用棧會超時,僅僅能用隊列!

代碼例如以下:(棧)

#include <cstdio> #include <cstring> #include <stack> #include <iostream> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f #define N 50017 #define M 50017 int n, m, k; int Edgehead[N], dis[N]; struct Edge {int v,w,next; } Edge[3*M]; bool vis[N]; //int cont[N]; int minn, maxx; int MIN(int a, int b) {if(a < b)return a;return b; } int MAX(int a, int b) {if(a > b)return a;return b; } void Addedge(int u, int v, int w) {Edge[k].next = Edgehead[u];Edge[k].w = w;Edge[k].v = v;Edgehead[u] = k++; } int SPFA( int start)//stack {int sta[N];int top = 0;//memset(cont,0,sizeof(cont);for(int i = 1 ; i <= n ; i++ )dis[i] = -INF;dis[start] = 0;//++cont[start];memset(vis,false,sizeof(vis));sta[++top] = start;vis[start] = true;while(top){int u = sta[top--];vis[u] = false;for(int i = Edgehead[u]; i != -1; i = Edge[i].next)//注意{int v = Edge[i].v;int w = Edge[i].w;if(dis[v] < dis[u] + w){dis[v] = dis[u]+w;if( !vis[v] )//防止出現環{sta[++top] = v;vis[v] = true;}// if(++cont[v] > n)//有負環// return -1;}}}return dis[maxx]; } int main() {int u, v, w;while(~scanf("%d",&n))//n為目的地{k = 1;memset(Edgehead,-1,sizeof(Edgehead));minn = INF;maxx = -1;for(int i = 1 ; i <= n ; i++ ){scanf("%d%d%d",&u,&v,&w);Addedge(u-1,v,w);maxx = MAX(v,maxx);minn = MIN(u-1,minn);}for(int i = minn; i <= maxx; i++)//新邊,保證圖的連通性還必須加入每相鄰兩個整數點i,i+1的邊{Addedge(i,i+1,0);Addedge(i+1,i,-1);}int ans = SPFA(minn);//從點minn開始尋找最短路printf("%d\n",ans);}return 0; }

HDU隊列:

#include <cstdio> #include <cstring> #include <stack> #include <iostream> #include <algorithm> #include <queue> using namespace std; #define INF 0x3f3f3f3f #define N 50017 #define M 50017 int n, m, k; int Edgehead[N], dis[N]; struct Edge {int v,w,next; } Edge[3*M]; bool vis[N]; //int cont[N]; int minn, maxx; int MIN(int a, int b) {if(a < b)return a;return b; } int MAX(int a, int b) {if(a > b)return a;return b; } void Addedge(int u, int v, int w) {Edge[k].next = Edgehead[u];Edge[k].w = w;Edge[k].v = v;Edgehead[u] = k++; } int SPFA( int start)//stack {queue<int>q;//int sta[N];//memset(cont,0,sizeof(cont);int top = 0;for(int i = minn ; i <= maxx ; i++ )dis[i] = -INF;dis[start] = 0;//++cont[start];memset(vis,false,sizeof(vis));//sta[++top] = start;q.push(start);vis[start] = true;while(!q.empty()){//int u = sta[top--];int u = q.front();q.pop();vis[u] = false;for(int i = Edgehead[u]; i != -1; i = Edge[i].next)//注意{int v = Edge[i].v;int w = Edge[i].w;if(dis[v] < dis[u] + w){dis[v] = dis[u]+w;if( !vis[v] )//防止出現環{//sta[++top] = v;q.push(v);vis[v] = true;}// if(++cont[v] > n)//有負環// return -1;}}}return dis[maxx]; } int main() {int u, v, w;while(~scanf("%d",&n))//n為目的地{k = 1;memset(Edgehead,-1,sizeof(Edgehead));minn = INF;maxx = -1;for(int i = 1 ; i <= n ; i++ ){scanf("%d%d%d",&u,&v,&w);Addedge(u-1,v,w);maxx = MAX(v,maxx);minn = MIN(u-1,minn);}for(int i = minn; i <= maxx; i++)//新邊,保證圖的連通性還必須加入每相鄰兩個整數點i,i+1的邊{Addedge(i,i+1,0);Addedge(i+1,i,-1);}int ans = SPFA(minn);//從點minn開始尋找最短路printf("%d\n",ans);}return 0; }

總結

以上是生活随笔為你收集整理的POJ 1201 amp; HDU1384 amp; ZOJ 1508 Intervals(差分约束+spfa 求最长路径)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色狠狠一区二区三区 | 人妻巨大乳一二三区 | 操你妹影院| 91中文字幕 | 草莓视频18免费观看 | 777奇米四色 | 青青草原国产 | 欧美一区二区三区电影 | 91成人精品| 国产精品88 | 国产女人叫床高潮大片免费 | 13日本xxxxxⅹxxx20 | 卡通动漫亚洲综合 | 久久久精品在线观看 | 欧美午夜免费 | 人成在线 | 久久这里只有精品久久 | 兔费看少妇性l交大片免费 日韩高清不卡 | 亚洲狠狠丁香婷婷综合久久久 | 91精品久久久久久久 | 永久免费看mv网站入口78 | 欧美成人精品欧美一级乱 | 日韩二区 | h片大全 | 亚洲免费影院 | 国产一区二区三区小说 | 日韩精品久久久久久久 | 国产香蕉97碰碰碰视频在线观看 | 亚洲一区二区视频 | 99ri国产| 欧美在线一区视频 | 超碰在线网站 | 国产一区二区三区四区五区在线 | 日日草夜夜操 | 亚洲中午字幕 | 乱中年女人伦 | 日韩欧美中文字幕一区 | 伊人精品综合 | 欧美精品久久久久久久免费 | 91插插影库 | 婷婷激情影院 | 日本边添边摸边做边爱 | 91视频在线 | 久草视频免费在线 | 国内9l自拍 | 国产aⅴ一区二区三区 | 亚洲视频456 | 在线麻豆| 日本人妻伦在线中文字幕 | 成人中文字幕在线 | 黄色亚洲视频 | 久久久久久无码精品大片 | 伊人爱爱网 | 一区二区乱码 | 91大神精品在线 | 夜间福利在线观看 | 亚洲二区在线播放视频 | 禁漫天堂在线 | 成人av免费 | 99精品视频播放 | xx99小雪| 欧美一级二级片 | 欧美一区二区在线视频 | 久久噜噜色综合一区二区 | 四虎精品永久在线 | 波多野结衣亚洲一区二区 | 久草网视频在线观看 | 国产日韩大片 | 亚洲色图50p| 992av| 97在线观看| 波多野结衣免费观看视频 | 精品一区二区成人免费视频 | 999久久久 | 久草国产在线观看 | 日日嗨av一区二区三区四区 | 四虎影视成人永久免费观看亚洲欧美 | 欧美亚洲一级片 | 国产色拍 | 成人免费在线小视频 | 国产一级aa大片毛片 | 欧美视频xxx | 国产精品高潮呻吟AV无码 | 中文字幕一区在线观看 | 欧美一级性生活视频 | 香蕉视频 | 致命弯道8在线观看免费高清完整 | 男女视频免费 | 亚洲国产欧美另类 | 亚洲制服一区二区 | 亚洲综合99 | 日韩一区欧美二区 | 久久av免费 | 国产一级片网址 | 日本免费www | 成为性瘾网黄的yy对象后 | 自拍天堂 | 天天操天天操天天操天天 | 亚洲五月天综合 |