2018NJUPT 第一场排位赛J(水题,模拟)

今天校内第一场排位赛,刚开始我就写这个很水的签到题,自己开始的想法是错的,然后就一直WA,整个心态就崩了。。。。。发现自己还是比较紧张吧,下次排位赛时希望自己放松点,题目本身都很简答。

这里写图片描述
我开始的想法是26个字符转换为0-25存在hash里面,然后遍历到为hash值为0的地方访问前面最大的值作为这部分的更新次数。等到我回来以后才发现自己想错了。
比如:
abcd分别有4221次,我的方法会认为更新4次结束,实际上是5次。
最大的问题还是心里,当时一心想着这么水我都过不了。下次改正吧。

#include<iostream>
#define inf 0x3f3f3f
#define maxn 3010
using namespace std;
int ans=0,n,A[maxn],j,tmp;
char str;
int main(){

    cin>>n;
    for(int i=0;i<n;i++) {
        cin>>str;
        tmp=str-'a';
        A[tmp]++;
    }

    for(int i=0;i<n;i++){
        while(A[i]){
            A[i]--;
            j=i+1;
            while(A[j]!=0){
                A[j]--;
                j++;
            }
            ans++;  //更新次数加一 
        }
    }
    cout<<ans<<endl; 
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37360631/article/details/81487113