鋪設道路 貪心 或 差分 或 分冶

2021-10-22 04:44:22 字數 777 閱讀 7266

這題可以用貪心也可以用分冶(在洛谷看到好多方法),但是我還是選擇了乙個大佬的差分,其實差分分冶我都想到了,可是好像不大會用**實現,而且這題用差分做,和之前我做過的一道差分題的思路一模一樣.還是太菜了。。。

搬自:

我們統計乙個差分陣列,cf[i]=d[i]-d[i-1].

特別的,cf[0]=0.

我們只需要像rmq那樣區間修改即可,修改i–j區間(都減1),只需把cf[i]-1,cf[j+1]+1就可以了,為了得到最優解,cf[i]要為正數,cf[j+1]要為負數,最後一正一負 配對為min(sum(正數),abs(sum(負數)))即可,還有剩下的正(負)數,即為abs(sum(正數)-abs(sum(負數))),so最後的答案為min(sum(正數),abs(sum(負數)))+abs(sum(正數)-abs(sum(負數)))=max(sum(正數),abs(sum(負數));

#include

using

namespace std;

const

int n=

100010

;int a[n]

,d[n]

;int

main()

for(

int i=

1;i<=n;i++

) cout<<

max(sum1,sum2)

}

異或差分序列 P3943 星空 區間異或差分

color 逃不掉的那一天還是來了,小 f 看著夜空發呆。天上空蕩蕩的,沒有一顆星星 大概是因為天上吹不散的烏雲吧。心裡吹不散的烏雲,就讓它在那裡吧,反正也沒有機會去改變什麼了。小 c 拿來了一長串星型小燈泡,假裝是星星,遞給小 f,想讓小 f 開心一點。不過,有 著強迫症的小 f 發現,這串一共 ...

異或差分序列 P3943 星空 區間異或差分

color 逃不掉的那一天還是來了,小 f 看著夜空發呆。天上空蕩蕩的,沒有一顆星星 大概是因為天上吹不散的烏雲吧。心裡吹不散的烏雲,就讓它在那裡吧,反正也沒有機會去改變什麼了。小 c 拿來了一長串星型小燈泡,假裝是星星,遞給小 f,想讓小 f 開心一點。不過,有 著強迫症的小 f 發現,這串一共 ...

種樹 差分約束 貪心

先看貪心版本。每次種的樹在重疊區間越多,種的樹越少。只有結束位置才會重合,就對區間結束的位置從小到大排序。然後遍歷每個區間統計第i個區間種了k個樹,若k大於 t 則continue,否則從區間末尾往前種樹。貪心種樹 include using namespace std struct n print...