Subtask.1(8%)
保證 \(\forall x_i×x_{i+1} \leq 0 \land 2 \leq N \leq 1000\)
- 正負數交錯,正數旁邊絕對是 0 或負數
- 那你把全部正數加起來就過了啊
void solve (){
int N; cin >> N;
vector <ll> vec(N);
for (auto &to:vec) cin >> to;
ll sum = 0;
for (auto to:vec) if (to > 0) sum += to;
cout << sum << '\n';
}
Subtask.2(7%)
保證 \(1 \leq N \leq 10\)
- 純粹的暴力枚舉,其實這比 AC 解難寫一點
int N;
vector <ll> vec;
ll f (int index, ll tmp, bool last){
if (index == 0){
return max(f(index+1, 0, 0), f(index+1, vec[index], 1));
}
if (index == N-1){ // to the end
return (last) ? (tmp) : max(tmp, tmp+vec[index]);
}
return (last) ? (f(index+1, tmp, 0)) :
max(f(index+1, tmp+vec[index], 1), f(index+1, tmp, 0));
}
void solve (){
cin >> N;
vec.resize(N);
for (auto &to:vec) cin >> to;
cout << f(0, 0, 0) << '\n';
}
Subtask.3、4(26%;59%)
- 我們定義 DP[i]:考慮到 vec[i] 時,最大能取的總和
- 如果我們不取 vec[i],表示我們能取 vec[i-1] 與 vec[i+1]
我都已經明示你是 DP,而且不用考慮 vec[i+1] 了
Subtask.3、4(26%;59%)
- 轉移式:DP[i] = max( DP[i-2] + vec[i], DP[i-1] )
你在做後面的項目時,他自然會考慮到 vec[i]
所以其實你轉移式只需要在意左邊
不需要重複考慮右邊的東西
- 然後呢?然後就沒有了,認真
- 最高分:2000 / 2000
- 建電最高排名:1
- 北資最高排名:7
- 標準差:285.784
- 平均分數:479.305 / 2000
- 錄取線:
我怎麼可能告訴你
2023 Academic
- 最高分:1200 / 1200
- 建電最高排名:1
- 北資最高排名:6
- 標準差:157.448
- 平均分數:286.800 / 1200
- 錄取線:
我們幹部是擲筊的
2022 Academic
2023 Acedamic
比賽時長:168 小時
題目數:5 + 10 + 5 = 20
Problems per day:2.857
Tatal submissions:1489
Submissions per day:212.714
第一名翻盤次數:15
2022 Acedamic
比賽時長:72 小時
題目數:2 + 5 + 5 = 12
Problems per day:4
Tatal submissions:729
Submissions per day:243
第一名翻盤次數:0
建電(資)排行榜
- 謝侑宸 / 807
- 蔡嘉晉 / 小蔡
賴柏宇 / 海之音- 楊孟軒 / 水獺
莊正昌 / MR
北資排行榜
- 王小鏡 / 小鏡
- 吳湘媛 / elephie
賴香伊 / OuOb林妤娟 / 娟- 吳沁恩 / 小卡
Minimal
By iCisC_ doppelgänger of Repkironca
Minimal
- 122