動態規劃的水平真的是太差了qaq。。普及組的dp都不會了
注意到結束後的陣列一定是一些數字段,且數字前後相對順序不變。同時可以得到某乙個數字最多向前後延伸多少位。
考慮對結束後的陣列dp,令dp[i][j]表示到第i位,操作了j次的方案;由於次數限制,所以對於每乙個數字段最多操作一次。考慮轉移,假設第i位左右可以延伸到[l,r],那麼列舉延伸的右端點k,顯然dp[k][j]+=σdp[p][j-1],l-1<=p
ac**如下:
#include#include#include#define n 505
#define mod 1000000007
using namespace std;
int n,m,a[n],dp[n][n];
int main(){
scanf("%d%d",&n,&m);
int i,j,k,l,r,now;
for (i=1; i<=n; i++) scanf("%d",&a[i]);
dp[0][0]=1;
for (i=1; i<=n; i++){
l=i; while (l>1 && a[l-1]
by lych
2016.8.3
BZOJ1052 BZOJ3760 覆蓋問題
原題位址 先說自己的逗比方法 二分答案,把所有點用乙個最小的矩形 框 起來,易證矩形的其中乙個端點是最優解中正方形的乙個端點,然後列舉四個端點後遞迴處理,差不多了 然後 olz黃學長的o n 做法 ac code include include include using namespace std...
動態點分治 bzoj 3730,bzoj 1095
總結一下動態點分治的模板。對於乙個樹,把它點分的同時記錄每個點的所有父親 logn個 並記錄點距其父親的距離。具體實現就是dfs的時候fa x dep x u,dis x dep x d bzoj1095 您需要寫乙個程式支援反轉點的顏色,求距離最遠的黑色點對的距離。解析 在每個點u存乙個堆st記錄...
福慧雙修 探險 BZOJ4398 BZOJ2407
分析 雙倍經驗 資料範圍不同 我們考慮,我們必定是從1走一條邊到節點i,之後從i到j跑最短路,之後再從j到1走另一條邊的情況下,不會重複,並且是答案。那麼我們考慮預處理出pre i 表示從1走到i滿足最短路的並且經過pre i pre i 為路徑第二個節點。那麼,針對每乙個邊,x,y,z,v 滿足當...