2 条题解
-
1
这么简单的题怎么能没题解呢
#include <cstdio> #include <algorithm> #include <iostream> using namespace std; int n, m, f[40001], vis[40001], x, y, z; struct data { int a, b, c; } e[100001]; int comp(data a, data b) { return a.c > b.c; } int find(int x) { return f[x] == x ? x : f[x] = find(f[x]); } int main() { cin >> n >> m; for (int i = 1; i <= m; i++) cin >> e[i].a >> e[i].b >> e[i].c; for (int i = 1; i <= n; i++) f[i] = i; sort(e + 1, e + m + 1, comp); for (int i = 1; i <= m; i++) { x = find(e[i].a); y = find(e[i].b); if (x == y) { cout << e[i].c; return 0; } else { if (vis[e[i].a]) { z = find(vis[e[i].a]); f[y] = z; } else vis[e[i].a] = e[i].b; if (vis[e[i].b]) { z = find(vis[e[i].b]); f[x] = z; } else vis[e[i].b] = e[i].a; } } cout << 0; return 0; }
-
0
#include #include
using namespace std;
int arr[100005]; double sum[100005]; int n, F;
bool fun(double aver) { for(int i = 1; i <= n; i++) { sum[i] = sum[i - 1] + arr[i] - aver;
} double minn = 1e9, ans = -1e9; for(int i = F; i <= n; i++) { minn = min(minn, sum[i - F]);
ans = max(ans, sum[i] - minn); } return ans >= 0; }int main() { scanf("%d %d", &n, &F); for(int i = 1; i <= n; i++) { scanf("%d", &arr[i]); } double l = -1e6, r = 1e6; while(r - l > 1e-5) { double mid = (l + r) / 2.0; if(fun(mid)) { l = mid; } else { r = mid; } } cout << (long long)(r * 1000) << endl; return 0; }
- 1
信息
- ID
- 168
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 43
- 已通过
- 20
- 上传者