問題描述題解:分組進行判斷a,a+k,a+2k.....。對於每一組判斷其貢獻值dp[a]=max(dp[a-2k]+sum[a],dp[a-k]);sum[a]代表著數字a出現的次數。輸入格式
第一行包含兩個個整數n和k。
第二行包含n個整數a1, a2, ... an。
對於30%的資料,1 <= n <= 10
對於100%的資料,1 <= n <= 100000, 0 <= ai <= 100000, 0 <= k <= 100000
輸出格式
乙個整數,代表答案。
樣例輸入
10 0
1 4 2 8 5 7 1 4 2 8
樣例輸出
#includeusing namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const int maxn = 100000 + 2;
const int minn = 100;
const double eps = 1e-6;
int n, k;
int vis[maxn], vis1[maxn], dp[maxn];
int main()
if (k == 0)
int ans = 0;
set::iterator it=se.begin();
for (int i; it!=se.end();++it)
int flag = 0;
while (vis[i] > 0)
//消除第一次i-2*k的存在
else
i += k;
} ans += dp[i - k];
} cout << ans << endl;
return 0;
}
歷屆試題 對局匹配
這幾天心態有點崩,不會的忒多了,翻翻學長們的部落格,同時期的他們學的演算法比我多,題量也是!而且我很多學的演算法和資料結構都只是做過模板題。md下學期逃課吧,我愛acm!萬幸今天下午查機組考得還算可以hhhh,算是一件值得高興的事呢。如果對於給定的k為0,那麼我們讓每乙個積分為x的組的人數都只剩乙個...
歷屆試題 對局匹配
提交此題 評測記錄 資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入格式 第一行包含兩個個整數n和k。第二行包含n個整數a1,a2,an。對於30 的資料,1 n 10 對於100 的資料,1 n 100000,0 ai 100000,0 k 100000 輸出格式 乙個整數...
試題 歷屆試題 對局匹配
小明發現 的自動對局系統在匹配對手時,只會將積分差恰好是k的兩名使用者匹配在一起。如果兩人分差小於或大於k,系統都不會將他們匹配。現在小明知道這個 總共有n名使用者,以及他們的積分分別是a1,a2,an。include include using namespace std const int ma...