問題 a: cleaning up 打掃衛生
時間限制: 1 sec 記憶體限制: 128 mb
題目描述
[usaco2009 mar]cleaning up 打掃衛生
description
有n頭奶牛,每頭那牛都有乙個標號pi,1 <= pi <= m <= n <= 40000。現在farmer john要把這些奶牛分成若干段,定義每段的不河蟹度為:若這段裡有k個不同的數,那不河蟹度為k*k。那總的不河蟹度就是所有段的不河蟹度的總和。
input
第一行:兩個整數n,m
第2..n+1行:n個整數代表每個奶牛的編號
output
乙個整數,代表最小不河蟹度
sample input
13 4
1 2
1 3
2 2
3 4
3 4
3 1
4 sample output
11我承認我沒打正解。。正解n^1.5,我打了個假n^2.
對於f[i],應該是把j~i一段合併起來,f[i]=min(f[j-1]+s*s);
s為區間j~i中出現的個數。
剪枝:倒著找,s*s>i則直接跳出。
就這樣水過了。。。
#pragma gcc optimize("o3")
#include
#include
#include
#include
#include
#define n 40005
#define ll long long
using
namespace
std;
int read()
while(x>='0'&&x<='9')
return sum*f;
}int n,m,tot,a[n],f[n];bool vis[n];
int main()
f[0]=0;
for(int i=1;i<=tot;i++)
//cout<}
cout
<}
P2943 Usaco2009 Mar 打掃衛生
神題一道 變數異常複雜,請在結合程式及注釋的情況下 根據題意不難看出,在選擇的一段區間內,最多有 n sqrt n 種不同的食物。據此設計dp陣列f i 表示i時的最小代價。設計輔助陣列pos j 表示最多選j種食物時區間左端點位置。思考 遍歷到i時,使區間食物種數不變應滿足什麼條件?得出 若上乙個...
打掃打掃的
關於ctreeview中ctreectrl空間的使用 2007 08 24 13 08 27 1.首先建立乙個 基於單文件 的mfc應用程式,在cmainframe類中過載oncreateclient 函式,其內部的 為 bool cmainframe oncreateclient lpcreate...
衛語句學習
1.使用衛語句取代巢狀表示式 函式中的條件邏輯使人難以看清正常的執行途徑。使用衛語句表現所有特殊情況。動機 條件表示式通常有2種表現形式。第一 所有分支都屬於正常行為。第二 條件表示式提供的答案中只有一種是正常行為,其他都是不常見的情況。這2類條件表示式有不同的用途。如果2條分支都是正常行為,就應該...