小白求问,为什么示例加上多试了两组数据也是对的,通过率奇低

#include<bits/stdc++.h>
using namespace std;
void solve(vector<int> arr,int n)
{    
    vector<int>res; 
        int count=0;
        int t=0;//定位个数
        int i=1;
       int j=0;
       while(t!=n)
       {           
           i--;
           while(1)
           {
               if(arr[i++]==arr[t])
               {count++;}
               else {t=i-1;break;}
           }
         res.push_back(count);        
        count=0;
       }
          sort(res.begin(),res.end());
          int sum1=0;bool flag=true;int sum2=0;
   vector<int>rank;
     for(int i=0;i<res.size();i++)
     {
             rank.push_back(i+1);
         if(res[i]==res[i-1])
         {
             rank[i]=rank[i-1];
         }
         sum1+=rank[i]^res[i];
     }
        
      
       cout<<sum1<<endl;           
    }
int main()
{
int n;
    cin>>n;
    vector<int>arr;
    for(int i=0;i<n;i++)
    {
        int val;cin>>val;
        arr.push_back(val);
    }
    int q;
    cin>>q;
    while(q--)
    {
        int num;cin>>num;
        if(num==2)
       solve(arr,n);
        else if(num==1)
        {
            int x,y;
            cin>>x>>y;
            arr[x-1]=y;
            sort(arr.begin(),arr.end());
        }
    }  
}

}

全部评论

相关推荐

想按时下班的大菠萝在...:隔壁学校的,加油多投, 实在不好找可以下个学期开学找,把算法八股准备好,项目有空再换换
投了多少份简历才上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-21 17:59
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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