| ||||||||||
| 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 | |||||||||
线段树才是王道In Reply To:我要疯了,我把我的程序改进了一下,都是NlogN了,怎么还是超时啊,哪位大哥帮我看看 Posted by:zerocool_08 at 2005-09-14 21:38:42 > #include "stdio.h"
> #include "stdlib.h"
> #include "memory.h"
> int sum=0,flag,b[100000];
> struct seg{
> int x1;
> int y1;
> int x2;
> int y2;
> float x;
> float point;
> };
> seg a[100001];
> int compare(const void *arg1,const void *arg2)
> {
> if((*(seg *)arg1).x==(*(seg *)arg2).x)
> {
> if((*(seg *)arg1).point==(*(seg *)arg2).point)
> return (*(seg *)arg1).x1-(*(seg *)arg2).x1;
> else
> return (int )((*(seg *)arg1).point-(*(seg *)arg2).point);
> }
> else
> return (int)((*(seg *)arg1).x-(*(seg *)arg2).x);
> }
> int fd(int x,int n)
> {
> int l=0,r=n,mid=(r+l)/2;
> if(x>b[n])
> return n+1;
> while(!(x>b[mid]&&x<=b[mid+1]))
> {
> if(x<b[mid])
> {
> l=mid,mid=(l+r)/2;
> }
> else
> {
> r=mid,mid=(l+r)/2;
> }
> }
> return mid+1;
> }
> void main(void)
> {
> int t,n,i,j,temp,k,m,p;
> scanf("%d",&t);
> for(i=1;i<=t;i++)
> {
> scanf("%d",&n);
> for(j=0;j<n;j++)
> {
> scanf("%d%d%d%d",&a[j].x1,&a[j].y1,&a[j].x2,&a[j].y2);
> if(a[j].x1==a[j].x2)
> {
> a[j].x=1000001;
> a[j].point=(float)a[j].x1;
> if(a[j].y1<=a[j].y2)
> a[j].x1=a[j].y1,a[j].x2=a[j].y2;
> else
> a[j].x1=a[j].y2,a[j].x2=a[j].y1;
> }
> else
> {
> a[j].x=(float)(a[j].y2-a[j].y1)/(a[j].x2-a[j].x1);
> a[j].point=a[j].y1-a[j].x*a[j].x1;
> if(a[j].x1>a[j].x2)
> {
> temp=a[j].x1,a[j].x1=a[j].x2,a[j].x2=temp;
> }
> }
> }
> qsort(a,n,sizeof(seg),compare);
> for(j=0,sum=0;j<n-1;)
> {
> k=j+1;
> if(a[k].x==a[j].x&&a[k].point==a[j].point&&k<n)
> {
> int m=2;
> b[0]=a[j].x1,b[1]=a[j+1].x1,k++;
> while(a[k].x==a[j].x&&a[k].point==a[j].point&&k<n)
> b[m++]=a[k].x1,k++;
> for(p=0;p<m;p++)
> sum+=fd(a[j+p].x2,m-1);
> sum-=(1+m)*m/2;
> }
> j=k;
> }
> printf("Scenario #%d:\n%d\n\n",i,sum);
> }
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator