• usaco3.14Contact(STL)


    又从cuishen 那学了新东西。。map是可以输出的。。还有这个字符串的输入方式挺高端的 学习了。。之后就是暴力枚举就行了

     1 /*
     2     ID: shangca2
     3     LANG: C++
     4     TASK: contact
     5 */
     6 #include <iostream>
     7 #include<cstdio>
     8 #include<cstring>
     9 #include<algorithm>
    10 #include<stdlib.h>
    11 #include<cmath>
    12 #include<map>
    13 #include<queue>
    14 using namespace std;
    15 map<string,int>f;
    16 map<string,int>::iterator it;
    17 char str[200010],s[20];
    18 string p[1010];
    19 bool cmp(string a,string b)
    20 {
    21     if(a.length()==b.length())
    22     return a<b;
    23     return a.length()<b.length();
    24 }
    25 int main()
    26 {
    27     freopen("contact.in","r",stdin);
    28     freopen("contact.out","w",stdout);
    29     int i,j,k,n,a,b,g=0;
    30     cin>>a>>b>>n;
    31     char c;
    32     i=0;
    33     while(scanf("%s",str+i) == 1)
    34     {
    35         i += strlen(str+i);
    36     }
    37     g = strlen(str);
    38     for(i = 0 ; i < g ; i++)
    39     {
    40         int o=0;
    41         for(j = i ; j < i+b && j<g; j++)
    42         {
    43             s[o++] = str[j];
    44             if(o>=a)
    45             {
    46                 s[o] = '\0';
    47                 f[s]++;
    48             }
    49         }
    50     }
    51     for(i = 1; i <= n ; i++)
    52     {
    53         int o = 0;
    54         for(it = f.begin() ; it != f.end() ; it++)
    55         {
    56             if(o<(*it).second)
    57             o = (*it).second;
    58         }
    59         if(o==0)
    60         break;
    61         int num=0;
    62         cout<<o<<endl;
    63         for(it = f.begin() ; it != f.end() ; it++)
    64         {
    65             if(o==(*it).second)
    66             {
    67                 p[++num] = (*it).first;
    68                 (*it).second = 0;
    69             }
    70         }
    71         sort(p+1,p+num+1,cmp);
    72         for(j = 1 ; j <= num ; j++)
    73         {
    74             if(j%6!=1)
    75             cout<<" ";
    76             cout<<p[j];
    77             if(j%6==0)
    78             puts("");
    79         }
    80         if(num%6!=0)
    81         puts("");
    82     }
    83     return 0;
    84 }
    View Code
  • 相关阅读:
    mysql安装脚本
    vim常用命令
    CentOS 6.5使用国内网易163的源
    053(七十五)
    053(七十四)
    053(七十三)
    053(七十二)
    053(七十一)
    053(七十)
    053(六十九)
  • 原文地址:https://www.cnblogs.com/shangyu/p/3102554.html
Copyright © 2020-2023  润新知