3 条题解

  • 4
    @ 2022-12-29 20:25:58
    #include <bits/stdc++.h>
    using namespace std;
    #define inf 0x3f3f3f3f
    #define maxn 200005
    int cmp(int x, int y)
    {
        return x > y;
    }
    int a[maxn], b[maxn];
    int main()
    {
        int n, j = 1;
        cin >> n;
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
            b[i] = 0;
        }
        sort(a + 1, a + n + 1, cmp);
        for (int i = 1; i <= n; i++)
        {
            while (a[i] - a[j] <= 5 && j <= n)
            {
                j++;
            }
            b[i] += (j - i);
            if (b[i] >= (n - i + 1))
                break;
        }
        int max1 = b[1];
        for (int i = 1; i <= n; i++)
            if (b[i] > max1)
                max1 = b[i];
        cout << max1;
        return 0;
    }//已AC
    
    • 2
      @ 2023-2-26 14:08:12

      这道题可以用滑动窗口来做。 设左端为i, 右端为j, 因为a数组已经排好了,最大数减最小数即为a[j] - a[i],长度为j - i + 1, 差大了就缩小窗口(i++),差大了就扩大窗口(j++), 答案就是所有长度里最大的一个。

      int n, a[200005], ans;
      int main()
      {
          cin >> n;
          for (int i = 1; i <= n; i++)
          cin >> a[i];
          sort(a+1, a+n+1);
          int i = 1, j = 1;
          while (j <= n)
          {
              if (a[j] - a[i] <= 5)
              {
                  ans = max(ans, j - i + 1);
                  j++;
              }
              else
                  i++;
          }
          cout << ans;
          return 0;
      }
      
      
      
    • 1
      @ 2023-6-22 16:40:46
      bool check(int x){//check函数(难点1)
          int maxx=0,minn=123121213;
          for(int i=1;i<=n-x+1;i++){
              maxx=max(maxx,a[i]),minn=min(minn,a[i]);
          }return maxx-minn<=5;
      }
      

      二分竟然可以(一开始我是试试看)

      sort(a+1,a+n+1);//sort不能少(难点2)
      
      while(l<=r){
          mid=(l+r)/2;
          if(check(mid){
          ans=mid;l=mid+1;}
          {
              else r=mid-1;//二分答案
          }
          cout<<ans;//已AC,请放心食用
      return 0;
      }
      
      • 1

      信息

      ID
      1917
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      268
      已通过
      112
      上传者