123
2026-10-05 13:26:06
发布于:浙江
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 2e5 + 7;
ll n, k, ans, a[N];
int main() {
freopen("Handing.in", "r", stdin);
freopen("Handing.out","w",stdout);
cin >> n >> k;
for (int i = 1, x; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
reverse(a + 1, a + n + 1);
for (int i = 1; i <= n; i += k) {
ans += a[i];
}
cout << ans * 2;
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
#define ll long long
int R, C, E[N][N];
ll dp[N][N];
int main() {
freopen("Energy.in", "r", stdin);
freopen("Energy.out", "w", stdout);
cin >> R >> C;
for (int i = 1; i <= R; i++) {
for (int j = 1; j <= C; j++) {
cin >> E[i][j];
}
}
dp[R][C] = max(1LL, 1LL - E[R][C]);
for (int j = C - 1; j >= 1; j--) {
dp[R][j] = max(1LL, dp[R][j+1] - E[R][j]);
}
for (int i = R - 1; i >= 1; i--) {
dp[i][C] = max(1LL, dp[i+1][C] - E[i][C]);
}
for (int i = R - 1; i >= 1; i--) {
for (int j = C - 1; j >= 1; j--) {
ll next = min(dp[i+1][j], dp[i][j+1]);
dp[i][j] = max(1LL, next - E[i][j]);
}
}
cout << dp[1][1];
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 2e5 + 10;
ll a[MAXN], pre[MAXN];
int N;
ll M;
bool check(int k) {
for(int l = 1; l + k - 1 <= N; l++) {
int r = l + k - 1;
int mid = l + k / 2;
ll left = a[mid] * (mid - l + 1) - (pre[mid] - pre[l - 1]);
ll right = (pre[r] - pre[mid]) - a[mid] * (r - mid);
ll cost = left + right;
if(cost <= M) return true;
}
return false;
}
int main() {
freopen("Degree.in", "r", stdin);
freopen("Degree.out", "w", stdout);
cin >> N >> M;
for(int i = 1; i <= N; i++) cin >> a[i];
sort(a + 1, a + 1 + N);
pre[0] = 0;
for(int i = 1; i <= N; i++) pre[i] = pre[i - 1] + a[i];
int l = 1, r = N, ans = 1;
while(l <= r) {
int mid = (l + r) / 2;
if(check(mid)) {
ans = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
cout << ans << endl;
return 0;
}
这里空空如也




















有帮助,赞一个