1 条题解

  • 1
    @ 2025-10-19 22:35:12
    void solve()
    {
    	int n, k;
    	cin >> n >> k;
    	int ai[n+1];
    	for(int i = 1;i <= n; i++)	cin >> ai[i];
    	sort(ai+1,ai+1+n);//使用冒泡排序即可
    	int ans = 0, sum = 0;//sum为符合条件的子段长度
    	for(int i = 2;i <= n; i++){
    		if(ai[i]-ai[i-1]<=k){
    			 sum++;
    		}
    		else{
    			ans = max(ans,sum);//找出最长串
    			sum = 0;//不符合条件sum重置
    		}
    	}
    	ans = max(ans,sum);//ans为最长子段
    	cout << n-ans-1 << "\n";
    }
    signed main()
    {
    	ios::sync_with_stdio(false);
    	cin.tie(0),cout.tie(0);
    	int _ = 1;
    	cin >> _;
    	while(_--){
    		solve();
    	}
    	return 0;
    }
    
    • @ 2025-10-19 22:35:30

      先排序,然后找最长的连续子段

    • @ 2025-10-19 23:00:21

      收到!

  • 1

信息

ID
1146
时间
1000ms
内存
256MiB
难度
6
标签
递交数
27
已通过
10
上传者