3 条题解

  • 1
    @ 2026-8-10 20:23:15

    #include #include #include 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
      @ 2023-9-30 13:22:38

      这么简单的题怎么能没题解呢

      #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;
      }
      
      • -2
        @ 2025-3-22 14:33:48

        #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
        难度
        3
        标签
        递交数
        52
        已通过
        27
        上传者