| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
先把号码转换为7位整数,然后用sort()排序,nlog(n)+O(n)的计数,怎么都不会超时In Reply To:要不一起去找Nash?嘿嘿。看看我的吧,我的倒是没错,可是一直TLE。咱俩互相看看哈。 Posted by:Nowitzki at 2007-02-27 01:03:11 > //------------1002 487-3279
> #include<stdio.h>
> #include<string.h>
> void QuickSort(int used[][2],int p,int r)
> {
> int x,i,j,temp,q;
> if (p<r) {
> x=used[r][0];
> i=p-1;
> for (j=p;j<=r-1;j++)
> if (used[j][0]<=x) {
> i++;
> temp=used[i][0];
> used[i][0]=used[j][0];
> used[j][0]=temp;
> temp=used[i][1];
> used[i][1]=used[j][1];
> used[j][1]=temp;
> }
> temp=used[i+1][0];
> used[i+1][0]=used[r][0];
> used[r][0]=temp;
> temp=used[i+1][1];
> used[i+1][1]=used[r][1];
> used[r][1]=temp;
> q=i+1;
> QuickSort(used,p,q-1);
> QuickSort(used,q+1,r);
> }
> }
>
> int main(void)
> {
> int n;
> int used[100001][2];
> int total,i,j,k,number,l,count,newNum,multiply,numZero,start,duplicates;
> char read[100],out[100];
> scanf("%d",&n);
> total=0;
> for (i=1;i<=n;i++) {
> used[i][0]=0;
> used[i][1]=0;
> }
> for (i=1;i<=n;i++)
> {
> scanf("%s",read);
> l=strlen(read);
> number=0;
> k=1000000;
> multiply=0;
> count=7; // count digits.
> numZero=0;
> for (j=0;j<=l-1;j++)
> {
> if (read[j]=='0' && start==0) numZero++;
> else start=1;
> if (read[j]=='-') continue;
> if ('0'<=read[j] && read[j]<='9') multiply=read[j]-'0';
> else {
> if ('A'<=read[j] && read[j]<='O') multiply=2+(read[j]-'A')/3;
> else {
> if (read[j]=='P' || read[j]=='R' || read[j]=='S') multiply=7;
> else {
> if (read[j]=='T' || read[j]=='U' || read[j]=='V') multiply=8;
> else {
> if (read[j]=='W' || read[j]=='X' || read[j]=='Y') multiply=9;
> }
> }
> }
> }
> number+=multiply*k;
> k/=10;
> }
> newNum=1;
> for (j=1;j<=total;j++)
> if (used[j][0]==number) {
> used[j][1]++;
> newNum=0;
> break;
> }
> if (newNum==1) {
> total++;
> used[total][0]=number;
> used[total][1]++;
> }
> }
> QuickSort(used,1,total);
> duplicates=0;
> for (i=1;i<=total;i++)
> if (used[i][1]>1) {
> itoa(used[i][0],out,10);
> l=strlen(out);
> for (j=l-1;j>=0;j--)
> out[j+7-l]=out[j];
> for (j=0;j<=6-l;j++)
> out[j]='0';
> for (j=0;j<=2;j++) printf("%c",out[j]);
> printf("-");
> for (j=3;j<=6;j++) printf("%c",out[j]);
> printf(" %d\n",used[i][1]);
> duplicates=1;
> }
> if (duplicates==0) printf("No duplicates.\n");
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator