请问为什么这样过不了🤔 是按照您的题解自己写了一遍 怎么都找不到错 
#include <iostream> 
#include <vector> 
#include <cmath> 
#include <algorithm> 

using ll = long long; 
using namespace std; 

void solve(){ 
    ll n,k; 
    cin>>n>>k; 
     
    if(n<3*k){ 
        cout<<-1<<endl; 
        return; 
    } 
    vector<ll> a(3); 
    cin>>a[0]>>a[1]>>a[2]; 

    sort(a.begin(),a.end()); 
     
    vector<ll> d(3); 
    d[0]=a[1]-a[0]; 
    d[1]=a[2]-a[1]; 
    d[2]=n-(a[2]-a[0]); 

    sort(d.begin(),d.end()); 
    ll sum=0; 
    if(k>d[0]) sum+=k-d[0]; 
    if(k>d[1]) sum+=k-d[1]; 
    cout<<sum<<endl; 
}
int main() { 
    ios::sync_with_stdio(false); 
    cin.tie(nullptr); 
    int t; 
    cin>>t; 
    while(t--){ 
        solve(); 
    } 
    return 0; 
}
题目链接小红的项链题目描述在一个由 &nbsp;个珠子组成的环形项链上,有&nbsp;3&nbsp;个红色珠子,其余为白色。任意相邻两个珠子的距离为&nbsp;1。小红希望通过最少的相邻珠子交换次数,使得任意两个红色珠子之间的最小距离不小于 。任务是计算所需的最小交换次数。如果目标无法达成,则输出&nbsp;-1。解题思路这个问题的核心在于,通过移动珠子来重新分配它们之间的“空位”,使得所有空位长度都大于等于 ,并且总的移动成本最低。1.&nbsp;可行性判断首先,为了使&nbsp;3&nbsp;个红珠子之间的距离都至少为&nbsp;,项链的总长度 &nbsp;必须至少为&nbsp;。如果 ,则无论如何都无法满足条件,应输出&nbsp;-1。2.&nbsp;最小交换次数的核心逻辑移动一个珠子一格,会使其一侧的间距增加&nbsp;1,另一侧的间距减少&nbsp;1。这本质上是在相邻的两个“空位段”之间转移了&nbsp;1&nbsp;个单位的长度,成本为&nbsp;1。因此,总的交换次数就等于为了满足条件,所有“空位段”之间需要转移的总长度。我们可以通过以下步骤找到最优解:计算初始间距:首先,将三个珠子的位置 &nbsp;排序。然后计算它们之间的三个弧长(即间距):排序间距:将这三个间距进行排序,得到 。计算成本:我们的目标是让所有间距都 。对于最小的间距 ,如果它小于 ,则需要增加 &nbsp;的长度。对于次小的间距 ,如果它小于 ,则需要增加 &nbsp;的长度。最大的间距 &nbsp;是否有足够的“盈余”长度来填补这两个“亏空”呢?总“亏空”为 。&nbsp;的“盈余”为&nbsp;。我们可以证明,盈余总是大于等于亏空:。因此,最大的间距 &nbsp;永远可以作为“供给源”,满足另外两个间距的需求。总的移动成本就等于两个较小间距的总“亏空”。最终算法:检查 ,否则输出&nbsp;-1。计算三个间距 。对三个间距排序,得到 。答案为 。代码cppjavapython#include&nbsp;&lt;iostream&gt;#include&nbsp;&lt;vector&gt;#include&nbsp;&lt;algorithm&gt;#include&nbsp;&lt;numeric&gt;using&nbsp;namespace&nbsp;std;void&nbsp;solve()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;n,&nbsp;k;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;n&nbsp;&gt;&gt;&nbsp;k;&nbsp;&nbsp;&nbsp;&nbsp;vector&lt;long&nbsp;long&gt;&nbsp;p(3);&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;p[0]&nbsp;&gt;&gt;&nbsp;p[1]&nbsp;&gt;&gt;&nbsp;p[2];&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;&lt;&nbsp;3&nbsp;*&nbsp;k)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;-1&nbsp;&lt;&lt;&nbsp;endl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;sort(p.begin(),&nbsp;p.end());&nbsp;&nbsp;&nbsp;&nbsp;vector&lt;long&nbsp;long&gt;&nbsp;d(3);&nbsp;&nbsp;&nbsp;&nbsp;d[0]&nbsp;=&nbsp;p[1]&nbsp;-&nbsp;p[0];&nbsp;&nbsp;&nbsp;&nbsp;d[1]&nbsp;=&nbsp;p[2]&nbsp;-&nbsp;p[1];&nbsp;&nbsp;&nbsp;&nbsp;d[2]&nbsp;=&nbsp;n&nbsp;-&nbsp;(p[2]&nbsp;-&nbsp;p[0]);&nbsp;&nbsp;&nbsp;&nbsp;sort(d.begin(),&nbsp;d.end());&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;cost&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(d[0]&nbsp;&lt;&nbsp;k)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;+=&nbsp;k&nbsp;-&nbsp;d[0];&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(d[1]&nbsp;&lt;&nbsp;k)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;+=&nbsp;k&nbsp;-&nbsp;d[1];&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;cost&nbsp;&lt;&lt;&nbsp;endl;}int&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;ios_base::sync_with_stdio(false);&nbsp;&nbsp;&nbsp;&nbsp;cin.tie(NULL);&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;t;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;t;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(t--)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve();&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}import&nbsp;java.util.Scanner;import&nbsp;java.util.Arrays;import&nbsp;java.lang.Math;public&nbsp;class&nbsp;Main&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;sc&nbsp;=&nbsp;new&nbsp;Scanner(System.in);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;t&nbsp;=&nbsp;sc.nextInt();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(t--&nbsp;&gt;&nbsp;0)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve(sc);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;solve(Scanner&nbsp;sc)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;n&nbsp;=&nbsp;sc.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;k&nbsp;=&nbsp;sc.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long[]&nbsp;p&nbsp;=&nbsp;new&nbsp;long[3];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[0]&nbsp;=&nbsp;sc.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[1]&nbsp;=&nbsp;sc.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[2]&nbsp;=&nbsp;sc.nextLong();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(n&nbsp;&lt;&nbsp;3&nbsp;*&nbsp;k)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(-1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(p);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long[]&nbsp;d&nbsp;=&nbsp;new&nbsp;long[3];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[0]&nbsp;=&nbsp;p[1]&nbsp;-&nbsp;p[0];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[1]&nbsp;=&nbsp;p[2]&nbsp;-&nbsp;p[1];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[2]&nbsp;=&nbsp;n&nbsp;-&nbsp;(p[2]&nbsp;-&nbsp;p[0]);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Arrays.sort(d);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;cost&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(d[0]&nbsp;&lt;&nbsp;k)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;+=&nbsp;k&nbsp;-&nbsp;d[0];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(d[1]&nbsp;&lt;&nbsp;k)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;+=&nbsp;k&nbsp;-&nbsp;d[1];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(cost);&nbsp;&nbsp;&nbsp;&nbsp;}}import&nbsp;sysdef&nbsp;solve():&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;=&nbsp;sys.stdin.readline().split()&nbsp;&nbsp;&nbsp;&nbsp;n,&nbsp;k&nbsp;=&nbsp;int(line[0]),&nbsp;int(line[1])&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;sorted([int(line[2]),&nbsp;int(line[3]),&nbsp;int(line[4])])&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;n&nbsp;&lt;&nbsp;3&nbsp;*&nbsp;k:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(-1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;[0,&nbsp;0,&nbsp;0]&nbsp;&nbsp;&nbsp;&nbsp;d[0]&nbsp;=&nbsp;p[1]&nbsp;-&nbsp;p[0]&nbsp;&nbsp;&nbsp;&nbsp;d[1]&nbsp;=&nbsp;p[2]&nbsp;-&nbsp;p[1]&nbsp;&nbsp;&nbsp;&nbsp;d[2]&nbsp;=&nbsp;n&nbsp;-&nbsp;(p[2]&nbsp;-&nbsp;p[0])&nbsp;&nbsp;&nbsp;&nbsp;d.sort()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;=&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;d[0]&nbsp;&lt;&nbsp;k:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;+=&nbsp;k&nbsp;-&nbsp;d[0]&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;d[1]&nbsp;&lt;&nbsp;k:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;+=&nbsp;k&nbsp;-&nbsp;d[1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(cost)def&nbsp;main():&nbsp;&nbsp;&nbsp;&nbsp;try:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_str&nbsp;=&nbsp;sys.stdin.readline()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;t_str:&nbsp;return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;=&nbsp;int(t_str)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;_&nbsp;in&nbsp;range(t):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;solve()&nbsp;&nbsp;&nbsp;&nbsp;except&nbsp;(IOError,&nbsp;ValueError):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;passif&nbsp;__name__&nbsp;==&nbsp;&quot;__main__&quot;:&nbsp;&nbsp;&nbsp;&nbsp;main()算法及复杂度算法:数学、贪心时间复杂度:对于每次查询,算法只涉及对&nbsp;3&nbsp;个元素进行排序和一些基本算术运算。因此,每次查询的时间复杂度为&nbsp;。空间复杂度:对于每次查询,我们只需要存储少数几个变量。因此,空间复杂度为 。
点赞 5
评论 1
全部评论
没输入完就返回了
点赞 回复 分享
发布于 11-06 19:45 广东

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务