首先將最長上公升子串行轉化為不下降,做出第一問。
由於是隨機資料,感覺可以轉移到每個數的數個數不會太多,所以暴力就行了
然後有乙個性質,
如果從j轉移到i的話,那麼中間一定有乙個k(k>=j&&k
開始wa了好幾發,問題分別是(1)dp[i]維護的是所有數都變成小於等於i的值的答案,而最優解不一定是這樣。用到了乙個很常用的東西,找乙個超級終點作為轉移的末端(2)沒有考慮好a[i]是負數的情況。
#include#include
#include
#include
#include
#define ll long long
#define inf 1e9
#define eps 1e-10
#define md
#define n 35100
using namespace std;
struct yts e[2*n];
int q[n],a[n],f[n],v[n];
ll dp[n],sum1[n],sum2[n];
int n,num=0;
void put(int x,int y)
int find(int x,int w)
return l;
}void lis()
else
}//for (int i=1;i<=n;i++) printf("%d ",f[i]);
printf("%d\n",n-w);
}void dp()
}printf("%lld\n",dp[n]);
}int main()
lis();
dp();
return 0;
}
BZOJ1049 數字序列 DP
time limit 10 sec memory limit 162 mb submit 1732 solved 745 submit status discuss 現在我們有乙個長度為n的整數序列a。但是它太不好看了,於是我們希望把它變成乙個單調嚴格上公升的序列。但是不希望改變過多的數,也不希望改...
bzoj 1049 數字序列 dp
給定乙個長度為n的整數序列.在改變的數最小的和改變的幅度最小的前提下把它變成乙個單調嚴格上公升的序列.求改變的最小的數和這個幅度。貌似以前考試考過這道題 其實這道題就是兩道題拼一塊的 我們首先考慮第一問 這是乙個經典模型,我們有 當有 i j leq a i a j a i 和 a j 不用更改 i...
bzoj1049 HAOI2006 數字序列
設f i 為以i開頭的最長上公升序列的長度,第乙個元素a i 必須滿足f i m,第x個元素為a y 則第 x 1 個元素a z 需要滿足的條件是a z a y 且f z f y 1 這位的題解很詳細 const int n 35010 struct edge edge int to,edge ne...