题目链接
这么简练的代码感觉是我一辈子写不出来的。。
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int T,n,p,q,t[N],x[N],ans;
int main(){
//freopen("c.in","r",stdin);
//freopen("c.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=1;i<=n;++i)scanf("%d%d",&t[i],&x[i]);
p=q=ans=0;
for(int i=1,tp;i<=n;++i){
if(p==q)q=x[i];
if(t[i+1]-t[i]>=abs(p-q)||i==n)tp=q;
else tp=p<q?p+t[i+1]-t[i]:p-t[i+1]+t[i];
if(1ll*(x[i]-p)*(x[i]-tp)<=0)ans++;
p=tp;
}
printf("%d\n",ans);
}
return 0;
}