給出乙個長度為n的正整數序列,要求把它劃分成若干個連續的區間,使得每個區間的數字之和都不超過給定的lim.最後的代價等於每個區間的最大值之和.求最小代價.n<=300000
定義f[i]表示前i個數劃分成若干個區間的最小代價,一眼是個1d1d動態規劃,猜測有決策單調性,打表發現並沒有.然後也看不出什麼很妙的性質.
感覺分治也許能做,推一推發現確實可以.定義solve(l,r)處理f[l...mid]到f[mid+1...r]的轉移,按照最大值在左邊/右邊分兩種情況處理,都可以線性解決.遞迴時要先solve(l,mid),然後處理[l,mid]到[mid+1,r]的轉移,再solve(mid+1,r).細節見**,不是很難寫.
#include#includeusing namespace std;
const int maxn=300006;
typedef long long ll;
int n;ll lim;
ll f[maxn];
ll pre[maxn],a[maxn];
ll min[maxn],max[maxn],mark[maxn];
void gmin(ll &a,ll b)
void solve(int l,int r)
for(int i=mid+1;i<=r;++i)mark[i]=(1ll<<60);
int r=r;pt=mid;
for(int i=mid;i>l;--i)
} for(int i=r;i>=mid+1;--i)
solve(mid+1,r);
}int main()
for(int i=1;i<=n;++i)
solve(1,n);
printf("%lld\n",f[n]);
return 0;
}
瀏覽器中選取元素的方法總結
定義在document物件中 document.getelementbyid定義在document物件中 document.getelementbyname定義在document物件中 element類也有定義 document.getelementsbytagname element.getele...
jQuery 選擇器選取指定元素的後代的所有元素。
parent descendant 選擇器選取指定元素的後代的所有元素。元素的後代可以是元素的第一代 第二代 第三代等等。選取 元素的後代的所有 元素 div span parent descendant parent 必需。規定要選取的父元素。descendant 必需。規定要選取的 指定父元素的...
變壓器輸出整流的蓄能電容選取方法
現在便攜裝置基本都是開關電源作,變壓器所構成的線性電源由於簡單的原理和方便的維修性等,仍然佔據這電源部分的大半江山。以下是乙個簡易的通過變壓器和穩壓管輸出220v 5v的電路輸出 儲能使用的電容一般採用電解電容,可以通過計算得到該容值 這裡輸入是半波,根據電容充放電公式 u t q t c,嚴格的數...