| ||||||||||
| 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 | |||||||||
按照解题报告写的,偶菜,请教大牛为什么TLE?#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
int b[81][81],bn[81][81],a[81][2];
int n;
int cmp(const void *a,const void *b)
{
int a0=*(int*)a,a1=*((int*)a+1),b0=*(int*)b,b1=*((int*)b+1);
if(a0>b0||a0==b0&&a1>b1)return 1;
return -1;
}
int count_matrix(int l)
{
int i,j,k,p,sum=0;
for(i=0;i<l-1;i++)
{
memset(bn,0,sizeof(bn));
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
for(p=0;p<n;p++)
bn[j][k]+=b[j][p]*b[p][k];
}
}
memcpy(b,bn,sizeof(b));
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
sum+=b[i][j];
return sum;
}
int main()
{
int i,j,l,t,max;
while(scanf("%d",&n)!=EOF)
{
memset(b,0,sizeof(b));
for(i=0;i<n;i++)
{
scanf("%d %d",&a[i][0],&a[i][1]);
if(a[i][0]>a[i][1]){t=a[i][0];a[i][0]=a[i][1];a[i][1]=t;}
}
qsort(a,n,sizeof(a[0]),cmp);
t=-10001;l=0;
for(i=0;i<n;i++)
{
if(a[i][0]>=t)
{
l++;t=a[i][1];
}
}
max=n-l;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i][1]<=a[j][0])b[i][j]=1;
if(max==0)printf("0 1\n");
else printf("%d %d\n",max,count_matrix(max));
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator