hdu 1800 Flying to the Mars (map)(暴力)

来源:互联网 发布:淘宝如何完成实名认证 编辑:程序博客网 时间:2024/06/03 14:33

map


//输入一堆数字 看一堆数中最少有多少个上升子串(不连续的子串)//每个串去掉一串最长的 再去掉一串次长的。//到最后肯定剩下某个出现次数最多的数字? //所以本题就是找那个数字出现的最多  最多的次数是多少//因为数太大数组存不下 所以用map# include<stdio.h># include<map># include<algorithm># include <string>using namespace std;int main(){int n;__int64 a,max;map<__int64,__int64>q;while(~scanf("%d",&n)){q.clear();while(n--){scanf("%I64d",&a);q[a]++;}map<__int64,__int64>::iterator it;max=0;      //it->first 为a,it->second为 q[]++;   //iterator->first 关键字(key)         //iterator->second 存储的数据(value)for(it=q.begin();it!=q.end();it++){if(max<it->second)max=it->second;}         printf("%I64d\n",max);}return 0;}


暴力


# include <stdio.h># include <string># include <algorithm>using namespace std;int main(){    int a[3010],flag[3010];    int n,i,min,cot,count;    while(~scanf("%d",&n))    {        for(i=0;i<n;i++)            scanf("%d",&a[i]);        sort(a,a+n);        memset(flag,0,sizeof(flag));        cot=0;        count=0;        while(1)        {            cot++;                        for(i=0;i<n;i++)            {                if(!flag[i])                {                    min=a[i];                    flag[i]=1;                    count++;                    break;                }            }            for(i=0;i<n;i++)            {                if(!flag[i]&&a[i]>min)                {                     min=a[i];                     flag[i]=1;                     count++;                }            }            if(count==n)            {                printf("%d\n",cot);                break;            }        }    }    return 0;}


1 0
原创粉丝点击