首页 > 代码库 > CodeForces 651B

CodeForces 651B

CodeForces 651B

 

相邻后面的数比前面的数大,就加一,求最终的结果,比赛时做时就直接去模拟了,慢了许多,不过数不是很多就不要紧了。

下面是我的代码:

  

 1 #include <bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 int a[1010],vis[1010];
 5 int main(){
 6     int n, num;
 7     cin >> n;
 8     for(int i = 0; i < n; i ++){
 9         cin >> a[i];
10     }
11     sort(a,a+n);
12     int ans = 0;
13     int cnt = 0;
14     while(true){
15         if(cnt == n)break;
16         int flag = 0,a1,a2;
17         for(int i = 0; i < n; i ++){
18             if(!vis[i] && !flag){
19                 a1 = a[i];
20                 flag = vis[i] = 1;
21                 cnt++;
22             }else if(!vis[i] && a1 < a[i] && flag){
23                 ans++;
24                 vis[i] = true;
25                 cnt++;
26                 a1 = a[i];
27             }
28         }
29     }
30     cout << ans << endl;
31     return 0;
32 }

 

 

其实这个只要求出出现次数最多的数,再让n去减下记行了。

1 #include <iostream>
2 using namespace std;
3 int t,i,a[1001],n,k;
4 main(){
5     cin>>n;
6     while(i++<n)
7     cin>>t,k=(++a[t]>k?a[t]:k);
8     cout<<n-k;
9 }

 

CodeForces 651B