給出n個閉整數區間[ai,bi]和n個整數c1,.,cn。
編寫乙個程式:
從標準輸入讀取間隔的數目、它們的端點和整數c1、.、cn,
計算具有區間[ai,bi]的至少ci公共元素的整數集z的最小大小,對於每乙個i=1,2,.,n,
將答案寫入標準輸出。
輸入輸入的第一行包含整數n(1<=n<=50000)-間隔數。下面n行描述間隔。輸入的(i+1)-第一行包含由單個空格分隔的三個整數ai、bi和ci,使得0<=ai<=bi<=50000和1<=ci<=bi-ai+1。
輸出量輸出包含乙個整數,等於集合z的最小大小,對於每乙個i=1,2,.,n至少具有區間[ai,bi]的ci元素。
樣本輸入
53 7 3
8 10 3
6 8 1
1 3 1
10 11 1
樣本輸出
將所有區間按照bi從小到大排序,迴圈所有區間,從每個區間的bi處向前打點,在座標軸上打點之前統計這個區間的需要的打點數,迴圈結束,打點器累加的值即為答案。
#define _crt_secure_no_warnings 1
#include#includeint p1[50000] = ;//區間起點
int p2[50000] = ;//區間終點
int pn[50000] = ;//插點數
int cout[50000] = ;//座標軸
void sort(int n) }}
int count(int p1, int p2)
return sum;
}int main()
sort(n);
for (i = 0; i < n; i++)
p--;
} }printf("%d\n", sum);
system("pause");
return 0;
}
POJ 1201 樹狀陣列
給你n個區間,每個區間為 a,b 每個區間取c個數構成乙個集合,求集合最小容量 把區間按b排序,從第乙個區間開始取,從後往前取,這樣盡可能和後面的區間重複 另外如果我們發現當前區間取得個數已經超過了c,那麼只需要讓之前區間換就行,而總數是不變的,所以不用更新答案 求當前區間已經取了多少個數用樹狀陣列...
poj 1201 差分約束
傳送門 題意 ai到bi間至少有ci個元素,問所有數中至少有多少元素。額。這樣好像說不清楚,我拿樣例說下吧。3到7之間至少有3個元素,8到10之間至少有3個元素,6到8之間至少有1個元素,1到3之間至少有1個元素,10到11之間至少有1個元素。最少情況如下 1 2 3 4 5 6 7 8 9 10 ...
差分約束(poj 1201
這裡簡要記一下差分約束。所謂差分約束,指的是由a b c這種不等式組組成的約束系統。一般的線性規劃問題可以用單純形法解決,但是這種特殊情況可以借助最短路演算法解決。記源點到v的最短路為d v 從u到v的最短路為d u,v 差分約束的最短路做法基於最短路的以下特點 對於沒有負圈的圖,任意兩點d u d...