【題解】CF1175C:Electrification
原題傳送門
二分最優值,然後
O
(
n
)
O(n)
O(n)驗證
對於每個
i
i
i,就是看
[
i
,
i
+
k
]
[i,i+k]
[i,i+k]這段區間能不能達到這個最優值
就是
[
a
i
+
k
−
a
i
+
1
2
]
<
=
m
i
d
[\frac{a_{i+k}-a_i+1}{2}]<=mid
[2ai+k−ai+1]<=mid,可行的話,答案就是
[
a
i
+
k
+
a
i
+
1
2
]
[\frac{a_{i+k}+a_i+1}{2}]
[2ai+k+ai+1]
Code:
#include <bits/stdc++.h>
#define maxn 200010
using namespace std;
int a[maxn], n, k;
inline int read(){
int s = 0, w = 1;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') w = -1;
for (; isdigit(c); c = getchar()) s = (s << 1) + (s << 3) + (c ^ 48);
return s * w;
}
int main(){
int T = read();
while (T--){
n = read(), k = read();
for (int i = 1; i <= n; ++i) a[i] = read();
int l = 0, r = a[n], ans;
while (l <= r){
int mid = (l + r) >> 1, flag = 0;
for (int i = 1; i + k <= n; ++i)
if ((a[i + k] - a[i] + 1) / 2 <= mid){
flag = 1, ans = (a[i + k] + a[i]) >> 1;
break;
}
if (flag) r = mid - 1; else l = mid + 1;
}
printf("%d\n", ans);
}
return 0;
}
相關文章
- 解題
- 題解
- 每日"兩"題 題解
- XYCTF pwn部分題解 (部分題目詳解)
- 無題號 分配問題 題解
- LeetCode題解第122題LeetCode
- 火星商店問題 題解
- Minlexes題解
- 杯子題解
- Determinant 題解NaN
- 20240805題解
- 排列 題解
- 題解集合
- 20240726題解
- OVO題解
- 樹的解構 題解
- Tarjan縮點題單 刷題題解
- Leetcode題解1-50題LeetCode
- 雙模數問題 題解
- leetcode題解(陣列問題)LeetCode陣列
- csp-s真題題解
- 【題解】Solution Set - 「藍」題板刷
- 《扶蘇的問題》題解
- 費解的開關 - 題解
- 題解筆記筆記
- [atcoder 353] [題解】
- 開擺題解
- LDOI 題解合集
- Towers of Hanoi題解
- The FLARE On Challenge題解
- [leetcode 題解] 849LeetCode
- 題解-翻棋子
- 假日住宿題解
- Leetcode 全套題解LeetCode
- 彈珠 題解
- 聯考題解
- 數列 題解
- CF 1253 題解