POJ1201(貪心演算法)

2021-09-20 15:34:14 字數 964 閱讀 1666

給出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...