日韩性视频-久久久蜜桃-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色偷偷| 日韩国产精品久久 | 亚洲午夜久久久久 | 欧美性受xxxx | 日本在线观看www | 视频福利在线观看 | 欧美性大战久久久 | 天堂av影院 | 夜夜艹天天干 | 亚洲欧美国产视频 | 亚洲精品18在线观看 | www国产在线观看 | 欧美激情一级 | 色综合91 | 丝袜一区二区三区四区 | 色爱AV综合网国产精品 | 午夜免费福利 | 亚洲高清在线播放 | 久久久免费网站 | 在线观看免费观看 | 超碰2023| 看全黄大色黄大片美女人 | 欧美男人又粗又长又大 | 青青操91 | 亚洲精品一区二区三区不卡 | 永久免费未网 | 伊人激情在线 | 青青草手机视频在线观看 | 国产 日韩 欧美在线 | 懂色av一区二区三区在线播放 | 国产午夜精品久久久久 | 王者后宫yin肉h文催眠 | 一级做a爱片 | 中文字幕一区二区人妻 | 久草久草 | 草莓视频一区二区三区 | 中文字幕18页 | 国产wwwwww| 午夜视频导航 | 在线免费 | 美女久久久久久久 | 夜夜骚av | 亚洲AV成人无码久久 | 天天操天天操天天射 | 国产粉嫩av | 婷婷深爱| av永久免费观看 | 精品人妻一区二区三区含羞草 | 久久人人澡 | 日韩毛片免费观看 | 欧美日韩国产专区 | 国产精品呻吟久久 | 日韩视频在线观看免费 | 日本一区二区三区四区五区 | 色妞网 | 麻豆国产精品视频 | 男人日女人逼 | 天天干天天干天天干天天 | 久久特黄视频 | 欧美成人精品二区三区99精品 | 国产中文字幕一区 | 国产激情av | 奇米第四色影视 | 丁香色婷婷 | 欧美国产日韩视频 | 国产a级片视频 | 91chinese在线 | 久久精品视频久久 | 丝袜老师让我了一夜网站 | 久久99精品久久久水蜜桃 | 综合欧美亚洲 | 97精品视频在线观看 | 亚洲AV无码国产日韩久久 | 女同性αv亚洲女同志 | 欧美亚洲一区 | 少妇一级淫片免费视频 | 爱爱视频在线看 | 亚洲精品成人片在线观看精品字幕 | 3o一40一50一6o女人毛片 | 亚洲自拍p| 午夜视频污 | 精品国产欧美一区二区 | 久久久久人妻精品色欧美 | 人人妻人人澡人人爽精品欧美一区 | 亚洲欧美综合视频 | 操比网站 | 日韩在线观看视频免费 | av在线h| 一二级毛片 | 一级在线免费视频 | 成人免费视屏 | 黄色片网站在线观看 | 欧美激情3p | 成人福利片 | 日本一区二区三区四区在线观看 | 国产精品久久国产精品99 | 青草视频免费在线观看 | 黑人借宿巨大中文字幕 | 国内久久 |