| 比赛 | NOIP模拟赛by mzx Day1 | 评测结果 | AAATTATAAT | 
    | 题目名称 | 为爱追寻 | 最终得分 | 60 | 
    | 用户昵称 | gls1196 | 运行时间 | 7.984 s | 
    | 代码语言 | C++ | 内存使用 | 76.61 MiB | 
    | 提交时间 | 2016-10-19 19:25:57 | 
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<ctime>
#include<cstdlib>
#include<stack>
#include<queue>
using namespace std;
typedef long long ll;
const ll maxp=20000009;
class Hash{
	public:ll x,y;
		Hash *nx;
		Hash(){
			nx=NULL;x=y=0LL;
		}
}*h[maxp+10];
void Insert(ll x,ll y){
	ll ax=abs(x),ay=abs(y);
	ll key=(ax*ax+ay*ay+maxp)%maxp+1;
	if(!h[key]){
		Hash *tmp=new Hash;
		tmp->x=x;
		tmp->y=y;
		h[key]=tmp;
	}
	else {
		Hash *tmp=h[key];
		while(tmp->nx)tmp=tmp->nx;
		tmp->nx=new Hash;
		tmp->nx->x=x;
		tmp->nx->y=y;
	}
}
bool Find(int x,int y){
	ll ax=abs(x),ay=abs(y);
	ll key=(ax*ax+ay*ay+maxp)%maxp+1;
	if(!h[key])return 0;
	else {
		Hash *tmp=h[key];
		while(tmp){
			if(tmp->x==x&&tmp->y==y)return 1;
			tmp=tmp->nx;
		}
	}
	return 0;
}
int main(){
	freopen("loverfinding.in","r",stdin);	
	freopen("loverfinding.out","w",stdout);
	ll n,sx,sy,tx,ty,dx,dy;int ans=1;
	scanf("%lld%lld%lld%lld%lld",&n,&sx,&sy,&tx,&ty);
	Insert(sx,sy);bool ok=0;
	if(sx==tx&&sy==ty){
		printf("1");return 0;
	}
	else {
		while(n--){
			scanf("%lld%lld",&dx,&dy);
			sx+=dx,sy+=dy;
			if(!Find(sx,sy))ans++;
			Insert(sx,sy);	
			if(sx==tx&&sy==ty){
				ok=1;break;
			}
		}
	}
	if(!ok)printf("SingleDogMZX");
	else printf("%d",ans);
}