WeiHandsome 2024-08-25 16:13 采纳率: 85%
浏览 7

算法练习题求答疑666666666


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/b0de1cf65d6e48c0b4e1971f7faf3bd2.png "#left")

为什么我的输出是4啊?
答案是6
求大家指点


```c++
#include <bits/stdc++.h>
#define int long long
#define all(s) s.begin(),s.end()
using namespace std;

signed main()
{
  int n;cin>>n;
  vector<int>v1,v2;
  int sum=0;
  for(int i=1;i<=n;i++)
  {
    int x;cin>>x;x=abs(x);
    if(i&1){sum+=x;v1.push_back(x);}
    else {sum-=x;v2.push_back(x);}
  }

  sort( all(v1) );
  sort( all(v2) ,greater<int>() );

//  for(auto i:v1)cout<<i<<" ";cout<<endl;
//  for(auto i:v2)cout<<i<<" ";cout<<endl;
//  cout<<sum<<endl;
  
  int i,j=0;
  while( i < v1.size() && j < v2.size() )
  {
    if(v2[j]-v1[i]>0){sum+=2*(v2[j]-v1[i]); i++;j++;}
    else break;
  } 
  cout<<sum<<endl;
  // 请在此输入您的代码
  return 0;
}

```

  • 写回答

2条回答 默认 最新

  • 吃不了席 2024-08-25 16:14
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的代码逻辑有问题,你在计算sum时没有考虑到v1和v2中元素的数量可能不同的情况。当v1中的元素数量多于v2时,你的代码会忽略掉v1中的一些元素,导致sum的值偏小。

    你可以尝试以下修改后的代码:

    #include <bits/stdc++.h>
    #define int long long
    #define all(s) s.begin(),s.end()
    using namespace std;
    
    signed main()
    {
      int n;cin>>n;
      vector<int>v1,v2;
      int sum=0;
      for(int i=1;i<=n;i++)
      {
        int x;cin>>x;x=abs(x);
        if(i&1){sum+=x;v1.push_back(x);}
        else {sum-=x;v2.push_back(x);}
      }
    
      sort( all(v1) );
      sort( all(v2) ,greater<int>() );
    
      int i=0,j=0;
      while( i < v1.size() && j < v2.size() )
      {
        if(v2[j]>v1[i]){sum+=2*(v2[j]-v1[i]); i++;j++;}
        else if(v2[j]<v1[i]){break;}
        else {j++;}
      }
      while(i < v1.size()){sum += 2 * v1[i]; i++;}
      cout<<sum<<endl;
      return 0;
    }
    

    这段代码在处理完v1和v2的公共部分后,还会处理v1中剩余的元素,确保所有的元素都被考虑到。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月25日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?