鱼C论坛

 找回密码
 立即注册
查看: 1883|回复: 1

为什么第二个测试点过不去

[复制链接]
发表于 2023-11-14 21:40:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const long long N=2e5;
  4. int a[N];
  5. void solve()
  6. {
  7.     long long  n,k;
  8.     cin>>n>>k;
  9.     // vector<long long>a(n);
  10.     vector<long long>b;
  11.     for(int i=0;i<n;i++)
  12.     {
  13.         cin>>a[i];
  14.     }
  15.     if(n==1)cout<<0<<endl;
  16.     else if(n==2)
  17.     {
  18.         if(abs(a[0]-a[1])>k)cout<<0<<endl;
  19.         else cout<<1<<endl;
  20.     }
  21.     else{
  22.     sort(a,a+n);
  23.     long long  res=0;
  24.     long long  ans=1;
  25.     for(int i=0;i<n-1;i++)
  26.     {
  27.         if(a[i+1]-a[i]<=k)
  28.         {
  29.             ans++;

  30.         }
  31.         else
  32.         {
  33.             b.push_back(ans);
  34.             ans=1;

  35.         }
  36.         b.push_back(ans);
  37.         
  38.     }
  39.     for(auto i:b)
  40.     {
  41.         res=max(res,i);
  42.     }
  43.    
  44.     cout<<n-res<<endl;
  45.     }

  46. }
  47. int main()
  48. {
  49.     long long t;
  50.     cin>>t;
  51.     while (t--)
  52.     {
  53.         solve();
  54.     }
  55.    
  56. }
复制代码

题目 :D - Balanced Round
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-14 21:40:41 | 显示全部楼层
你的代码在第二个测试点无法通过的原因是因为在计算结果时存在逻辑错误。在for循环中,当a[i+1]-a[ i]<=k时,你增加了ans的值,但是在else语句中,你将ans的值重新设为1,这样会导致在计算结果时漏掉了一些符合条件的情况。你需要重新调整计算结果的逻辑,确保所有符合条件的情况都被正确计算。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 06:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表