Social Distance(貪心 構造)

2022-02-14 00:46:35 字數 673 閱讀 2014

傳送門

很有意思的一道題

因此,問題就可以歸結到如何構造上了

那麼該如何構造呢?

由於資料很大,結合經驗基本可以確定是o(n)的時間複雜度,因此就要思考如何處理才能使得操作具有o(n)的時間複雜度

先用乙個優先佇列(小根堆)存入每個值為1的點,這樣所有為1的點就按照順序排列了,還有一點非常重要的是:

如果不符合就跳到下乙個符合條件的地方

#include #include #include #include using namespace std;

const int n = 2e5 + 10;

int a[n];

void solve()

return;

} pq.push(n + 3e5);

int temp = 0;

while(pq.size() && temp < n)

temp ++;

} int ans = 0;

for(int i = 0; i < n; i ++)

} }cout << ans << endl;

}int main()

return 0;

}

偶爾貪一下。

個人認為貪心是最容易實現的 了,雖然他沒什麼套路可言,但卻是只要有了思路,實現起來還是很輕鬆的。演算法分析 舉個栗子 某個國家,決策都是由投票決定。為了提高效率,他們先將所有人分組,首先進行組內決策,然後再進行組與組之間的決策。如果贊同得票數多於 不是 組內一半即小組內贊成。如果有超過 不是 一般的...

演算法 對貪 演算法對研究

貪 演算法是 種求近似解的思想。當能滿 部分最優解時就認為符合邏輯要求。還 找零 這個案例為例,考慮使 貪 演算法解題 如當找零數為 36 時,從硬幣數的最 值 20 開始填充,填充不下後再 10 來填充,以此類推,找到最優解。場景 假如有 1,5,10,20,50,100 的 幣 36 找零數 2...

POJ1201 Intervals 線段樹 貪心

原題鏈結 題意 給定一些區間,每個區間裡必須取ci個數,這些數組成乙個集合z,求z的最少的元素數 思路 由於如果兩個區間如果有重複取的元素,那麼這個元素一定是在左邊的這個區間的最右邊的那些元素。所以我們按照區間的右邊界排序後,總是如果當前區間還需要取數,那麼就從右往左取還沒有被取的數即可。然後就可以...