AtCoder ABC #145 E All-you-can-eat
問題
解説
他の回答を見つつ、公式解説の解法2に沿って回答を作成。
DP難しい。。。
fn solve(t: usize, abs: Vec<(usize, usize)>) -> usize { use std::cmp::max; let mut abs = abs; abs.sort_by_key(|x| x.0); let mut dp = vec![0; t + 3001]; for &(a, b) in abs.iter() { for i in (0..t).rev() { dp[i + a] = max(dp[i] + b, dp[i + a]); } } dp.into_iter().max().unwrap() }