首先可以證明,一定存在一種最優解,每次選擇的區間結尾都是 \(n\)。因為如果某乙個區間結尾不是 \(n\),將其替換成 \(n\) 仍然保持單調不下降。接著都按這個策略拔高玉公尺。
令 \(f_\) 表示 \(1\sim i\) 這段字首進行了 \(j\) 次操作,第 \(\boldsymbol i\) 株玉公尺不被拔掉,所能剩下最多的玉公尺。
\[f_=\max\|p
列舉 \(i\),剩下兩個限制用二維樹狀陣列維護即可。
有乙個小細節,操作次數可能為 \(0\),扔進樹狀陣列時需要加 \(1\)。
時間複雜度 \(o(nk\log k\log a)\)。
code:
#includeusing namespace std;
#define max(x,y)((x)>(y)?x:y)
#define for(i,x,y)for(i=x;i<=(y);i++)
#define down(i,x,y)for(i=x;i>=(y);i--)
#define lowbit(x)((x)&-(x))
int c[505][5505],a[10005],k,mx;
int sum(int x,int tmp)
return res;
}void add(int x,int tmp,int z)
}int main()
printf("%d",ans);
return 0;
}
P3287 SCOI2014 方伯伯的玉公尺田
p3287 scoi2014 方伯伯的玉公尺田 方伯伯在自己的農田邊散步,他突然發現田裡的一排玉公尺非常的不美。這排玉公尺一共有n株,它們的高度參差不齊。方伯伯認為單調不下降序列很美,所以他決定先把一些玉公尺拔高,再把破壞美感的玉公尺拔除掉,使得剩下的玉公尺的高度構成乙個單調不下降序列。方伯伯可以選...
P3285 SCOI2014 方伯伯的OJ
因為 n leq 10 8 m leq 10 5 所以可以用乙個域很大的權值線段樹動態開點維護。開始 l 1 r n l,r 的點值看作 1 把乙個位置的數提前相當於 l 1 的位置加 1 原來的位置 1 變為 0 放後也類似。用兩個 map 維護數的位置和編號的相互對映。include defin...
SCOI2014 方伯伯的OJ
資料範圍 n 108 m 105 n 108 m 105 一眼平衡樹。5分鐘出思路,調了3小時。我們不好直接維護排名的平衡樹,也不好直接維護編號的平衡樹。那就建2 2 顆平衡樹,一棵以編號中序遍歷,一棵以排名中序遍歷,每個節點開pa ir role presentation style positi...