POJ-1002-487-3279

来源:互联网 发布:苹果app制作软件 编辑:程序博客网 时间:2024/05/08 06:32

一道很坑的水题,测试数据非常诡异,如果不用stl基本一直就是TLE的状态。

然后输出要注意前导零的控制,但是我在题目里并没有发现这一点(?),一直WA查了别人的题解才发现的。

有热心的朋友请帮我指出一下哪里有题意提醒我们要注意前导零了。

Solution:

#include <algorithm>#include <iostream>#include <utility>#include <cstring>#include <cstdlib>#include <cstdio>#include <deque>#include <string>#include <vector>#include <cmath>#include <stack>#include <queue>#include <map>using namespace std;#define mm(a,i) memset(a, i, sizeof(a));#define LL    long long#define Mod 1000000007#define SC_C(s)           scanf("%s", &s)#define SC(a)             scanf("%d", &a)#define SCC(a,b)          scanf("%d %d", &a, &b)#define SCCC(a,b,c)       scanf("%d %d %d", &a, &b, &c)#define FXA(i,a,n)        for(i=a; i<n; i++)#define FDA(i,a,n)        for(i=a; i>n; i++)#define FXDA(i,a,n)       for(i=a; i<=n; i++)#define FDDA(i,a,n)       for(i=a; i>=n; i++)#define FXB(i,a,n)        for(i=a; i<n; i--)#define FDB(i,a,n)        for(i=a; i>n; i--)#define FXDB(i,a,n)       for(i=a; i<=n; i--)#define FDDB(i,a,n)       for(i=a; i>=n; i--)#define PF(n)             printf("%d\n", n);#define PFF(n,m)          printf("%d %d\n", n, m);#define PFFF(x,y,z)       printf("%d %d %d\n", x, y, z);#define PF_C(i)           printf("Case %d:\n",i);#define PF_L(x)           printf("%I64d\n",x);#define IN                freopen("E:\\in.txt","r",stdin);#define MAX(a,b)          a>b?a:b#define MIN(a,b)          a<b?a:bint maxx = -999999999;int minn =  999999999;bool flag;int i,j,k,T,ans,sum,n,cnt;string s;int a[200005];char convert[26]= {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9,0};int anss[9999999];map<int, int> cp;map<int, int>::iterator cp1;int main(){#ifndef ONLINE_JUDGE    IN#endif // ONLINE_JUDGE    cp.clear();    while(SC(n)!=EOF)    {        getchar();        int out[2000];        mm(out,0);        mm(anss,0);        FXDA(j,1,n)        {            char input[2000];            gets(input);//        puts(input);            sum=0;            FXA(i,0,strlen(input))            {                if(isdigit(input[i])) sum = sum*10 + input[i]-'0';                if(isalpha(input[i])) sum = sum*10 + convert[input[i]-'A'];            }            cp1 = cp.find(sum);            if(cp1 == cp.end())                cp[sum] = 1;            else                cp1->second++;//        anss[sum]++;//        if(anss[sum]==2)//            out[j] = sum;//        PF(out[j])        }        flag = 0;        for(cp1=cp.begin(); cp1!=cp.end(); cp1++)            if(cp1->second > 1)            {                printf("%03d-%04d %d\n", cp1->first/10000, cp1->first%10000, cp1->second);                flag = 1;            }        if(flag==0) printf("No duplicates.\n");    }    return 0;}

0 0