社区讨论
极小区间high-low区别问题
P10450[USACO03MAR] Best Cow Fences G参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjpkeego
- 此快照首次捕获于
- 2025/12/28 18:06 2 个月前
- 此快照最后确认于
- 2025/12/28 22:20 2 个月前
high代码
CPP#include <bits/stdc++.h>
using namespace std;
bool feasible(double x, const vector<int>& a, int L) {
int n = (int)a.size();
vector<double> pref(n + 1, 0.0);
for (int i = 1; i <= n; ++i)
pref[i] = pref[i-1] + (a[i-1] - x);
vector<double> minPref(n + 1, 0.0);
minPref[0] = pref[0];
for (int i = 1; i <= n; ++i)
minPref[i] = min(pref[i], minPref[i-1]);
for (int r = L; r <= n; ++r) {
if (pref[r] - minPref[r - L] >= 0.0) return true;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, L;
if (!(cin >> n >> L)) return 0;
vector<int> a(n);
for (int i = 0; i < n; ++i) cin >> a[i];
double low = 0.0, high = 2000.0;
while(true) { // enough enough enough enough precision
double mid = (low + high) / 2.0000;
if (feasible(mid, a, L))
low = mid;
else
high = mid;
if (abs(low-high) <= 0.000001) break;
}
long long answer = (long long)(high*1000);
cout << answer << '\n';
return 0;
}
这是AC的
low 代码
CPP#include <bits/stdc++.h>
using namespace std;
bool feasible(double x, const vector<int>& a, int L) {
int n = (int)a.size();
vector<double> pref(n + 1, 0.0);
for (int i = 1; i <= n; ++i)
pref[i] = pref[i-1] + (a[i-1] - x);
vector<double> minPref(n + 1, 0.0);
minPref[0] = pref[0];
for (int i = 1; i <= n; ++i)
minPref[i] = min(pref[i], minPref[i-1]);
for (int r = L; r <= n; ++r) {
if (pref[r] - minPref[r - L] >= 0.0) return true;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, L;
if (!(cin >> n >> L)) return 0;
vector<int> a(n);
for (int i = 0; i < n; ++i) cin >> a[i];
double low = 0.0, high = 2000.0;
while(true) { // enough enough enough enough precision
double mid = (low + high) / 2.0000;
if (feasible(mid, a, L))
low = mid;
else
high = mid;
if (abs(low-high) <= 0.000001) break;
}
long long answer = (long long)(low*1000);
cout << answer << '\n';
return 0;
}
UA, 35pts.
问:在0.000001区间大小下,这玩意是怎么做到high-low不一样的???
回复
共 0 条回复,欢迎继续交流。
正在加载回复...