• C++
  • 洛谷 T1 和 T2 分级精选练习题目(61 题)

  • @ 2024-10-7 8:59:25

洛谷 T1 和 T2 分级精选练习 题目(61 题)

数学T1 完成情况
7226
1075
7772
1035
1150
1425
1851
1876
1887
2669
2705
6421
7257
8443
字符串T1 完成情况
--------------------------------------------- ----------
1321
1597
1765
1980
5015
5660
5832
6263
6382
数学T2
--------------------------------------------- ---
1146
7199
7909
1293
1326
1327
2118
6188
8177
前缀和+差分 T2 完成情况
--------------------------------------------- ----------
3078
6625
1147
2969
3131
6568
3397
9094
队列T2 完成情况
--------------------------------------------- ----------
1996
1540
5661
2952
二分T2 完成情况
1571
1678
1918
8814
1824
字符串T2
1055
1067
1098
1104
1308
1603
1808
1981
2708
2957
6553
1572

1 条评论

  • @ 2024-10-13 17:46:01

    P1327 数列排序

    #include<bits/stdc++.h>
    using namespace std;
    const int N = 1e6+10;
    struct px{
    	int x;
    	int y;
    };
    px a[N];
    int b[N],n,ans;
    
    bool bmp(px a1,px a2){
    	return a1.x<a2.x;
    }
    
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i].x;
    		b[i] = a[i].x;
    		a[i].y = i;
    	}
    	sort(a+1,a+n+1,bmp);
    	for(int i=1;i<=n;i++){
    		if(b[i]!=a[i].x){
    			int tmp = b[i];
    			swap(b[i],b[a[i].y]);
    			ans++;
    			int t=i+1;
    			while(a[t].x!=tmp)t++;
    			a[t].y = a[i].y;
    			a[i].y = i;
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1