傳送門:洛谷-p1645
有乙個整數序列,它的每個數各不相同,我們不知道它的長度是多少(即整數個數),但我們知道在某些區間中間至少有多少個整數,用區間(li,ri,ci)來描述,表示這個整數序列中至少有ci個數來自區間[li,ri],給出若干個這樣的區間,問這個整數序列的長度最少能為多少?
第一行乙個整數$n$,表示區間個數;接下來$n$行,每行三個整數$(l_i,r_i,c_i)$,描述乙個區間。
【資料規模】
$n<=1000,\ \ \ 0<=l_i<=r_i<=1000,\ \ \ 1<=c_i<=r_i-l_i+1$
僅乙個數,表示該整數序列的最小長度。
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
#includeusing
namespace
std;
#define crl(a,x) memset(a,x,sizeof(a))
int begin[5005],n,n,dis[1005],vis[1005]=; //注意邊的數量
struct
node;
vector
edge;
void
add(int x,int y,int z)
;begin[x]=edge.size();
edge.push_back(tem);
}void
spfa
(int s)}}
}}intmain
()for(int i=1;i<=n;i++)
spfa(0);
cout
return0;}
鏈式向前星
我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...
鏈式向前星 學習理解
學習內容 鏈式向前星 真的說實話這東西不太難,但是看了一圈部落格都講得好奇怪啊,完全不像在講東西。好在看了一篇不錯的部落格 第一部分 儲存 int head ma int n,cnt 0 struct node edge ma 第二部分 新增邊 void add int u,int v,int w ...
鏈式向前星(陣列模擬鄰接表)
有的時候有的圖可能比較稀疏而且點數較多,鄰接矩陣存不下,所以就要用到鄰接表。鄰接錶用vector陣列比較方便,但是vector比較慢。所以就有了鏈式向前星。include include include using namespace std 鏈式向前星其實就是有n鍊錶,每條鍊錶存的是所有相同結點的...