Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

这样对不对呢?

Posted by talenth1 at 2011-07-14 18:42:51 on Problem 1328
排序以后,开一个数组,初始时候数组里面只有(-oo,+oo),然后从排序以后的区间列表中依次选取区间,和新数组中最后一个元素求交集,如果不能相交就把这个区间插入到新数组的最后。。取选完了以后,新数组中的元素个数就是答案。。。。
/*
ID:   talenth1
PROG: p1328
LANG: C++
*/
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<vector>
using namespace std;
const int maxn=1001;
const double eata=1e-7,oo=1e100;
struct space{
  double left,right;
};
space area[maxn];
int n;
double d;
int datain()
{
  double x,y,dx;
  bool signal=false;
  for(int i=1;i<=n;i++){
	cin>>x>>y;
	if(y>d)signal=true;
	dx=sqrt(d*d-y*y);
	area[i].left=x-dx;
	area[i].right=x+dx;
  }
  if(signal){
	cout<<"-1"<<endl;
	return -1;
  }
  return 0;
}
int mycmp(const void *e1,const void *e2)
{
  double xl1,xr1,xl2,xr2;
  xl1=((space*)e1)->left;
  xr1=((space*)e1)->right;
  xl2=((space*)e2)->left;
  xr2=((space*)e2)->right;
  if(abs(xl1-xl2)>=eata){
	if(xl1<xl2)return -1;
	else return 1;
  }
  else{
	if(xr1<xr2)return -1;
	else return 1;
  }
}
void work()
{
  qsort(&area[1],n,sizeof(area[1]),mycmp);
  vector<space> used; 
  space tmp={-oo,+oo};
  used.push_back(tmp);
  for(int i=1;i<=n;i++){
	if(area[i].left-eata<used[used.size()-1].right){
	  used[used.size()-1].left=max(used[used.size()-1].left,
								   area[i].left);
	  used[used.size()-1].right=min(used[used.size()-1].right,
									area[i].right);
	}
	else used.push_back(area[i]);
  }
  cout<<used.size()<<endl;
}
int main()
{
    freopen("p1328.in","r",stdin);
    freopen("p1328.out","w",stdout);
	int ti=0,signal;	
	while(1){       
	  cin>>n>>d;
	  if(n==0)break;
	  cout<<"Case "<<++ti<<": ";
	  signal=datain();
	  if(signal)continue;
	  work();
	}
    return 0;
}


Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator