小白求问,为什么示例加上多试了两组数据也是对的,通过率奇低
#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()); } } }
}