#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#define INF 0x3f3f3f3f
#define MAXN 1000005
using namespace std;
int dp[MAXN];
int x[5005],y[5005];
int main(){
int t,n;
int i,j;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&x[i],&y[i]);
int ret=INF;
memset(dp,0x3f,sizeof(dp));
dp[x[1]]=0;
for(i=2;i<=n;i++){
int a=2*x[i]-max(0,(int)ceil(x[i]-sqrt(2.*y[i]*y[1]-1.*y[1]*y[1])));
int b=x[i];
for(j=b+1;j<=a;j++){
int p=2*x[i]-j;
if(j<x[n])
dp[j]=min(dp[j],dp[p]+1);
else
ret=min(ret,dp[p]+1);
}
}
int ans=(ret==INF)?-1:ret;
printf("%d\n",ans);
}
return 0;
}
poj1925 Spiderman
最新推荐文章于 2017-09-05 17:41:39 发布