P3287 SCOI2014 方伯伯的玉公尺田

2022-05-29 04:48:10 字數 1042 閱讀 2922

p3287 [scoi2014]方伯伯的玉公尺田

方伯伯在自己的農田邊散步,他突然發現田裡的一排玉公尺非常的不美。這排玉公尺一共有n株,它們的高度參差不齊。方伯伯認為單調不下降序列很美,所以他決定先把一些玉公尺拔高,再把破壞美感的玉公尺拔除掉,使得剩下的玉公尺的高度構成乙個單調不下降序列。方伯伯可以選擇乙個區間,把這個區間的玉公尺全部拔高1單位高度,他可以進行最多k次這樣的操作。拔玉公尺則可以隨意選擇乙個集合的玉公尺拔掉。問能最多剩多少株玉公尺,來構成一排美麗的玉公尺。

輸入格式:

第1行包含2個整數n,k,分別表示這排玉公尺的數目以及最多可進行多少次操作。第2行包含n個整數,第i個數表示這排玉公尺,從左到右第i株玉公尺的高度ai。

輸出格式:

輸出1個整數,最多剩下的玉公尺數。

輸入樣例#1: 複製

3 1

2 1 3

輸出樣例#1: 複製

3
1 < n < 10000,1 < k <= 500,1 <= ai <=5000

題解:dp[i][p]表示處理到第i個玉公尺,增加了p的高度的最多剩餘玉公尺;

dp[i][p] = max(dp[j][k]) + 1 (a[j] + k <= a[i]+p && k <= p);

這個就可以用乙個樹狀樹組維護;

#include #include 

#include

#include

#include

#include

using

namespace

std;

const

int m = 6000 + 5

;int c[505][m], dp[m][505], a[100005

];int query(int x, int

y)void add(int x, int y, int

val)

intmain()

}printf(

"%d\n

", ans);

}

view code

P3287 SCOI2014 方伯伯的玉公尺田

首先可以證明,一定存在一種最優解,每次選擇的區間結尾都是 n 因為如果某乙個區間結尾不是 n 將其替換成 n 仍然保持單調不下降。接著都按這個策略拔高玉公尺。令 f 表示 1 sim i 這段字首進行了 j 次操作,第 boldsymbol i 株玉公尺不被拔掉,所能剩下最多的玉公尺。f max p...

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