题解 P1296
Hamster_Air · · 题解
作为一名NOIP只有185的蒟蒻只能写写这种入门难度的题解
但为了让审核通过我还是加了一点新意
这是一道简单模拟题,但需要加一点小优化
详见代码:
#include<bits/stdc++.h> //万能头文件
#define f1(i,j,n) for(i=j;i<=n;i++)
#define f2(x,i,j,n) for(i=j;i<=n&&p[i]<=p[x]+d;i++) //资深define用户,define大法好!注意循环内直接判断比if快!我试了,直接if会RE两个点QwQ
using namespace std;
int p[1000005];
int main()
{
ios::sync_with_stdio(false); //cin,cout的输入输出优化
int n,d,i,j,ans=0;
cin>>n>>d;
f1(i,1,n)
cin>>p[i]; //读入
sort(p+1,p+1+n); //按升序排序,这里插一句题外话,因为最近学到了各种各样奇奇怪怪的排序,经我同学研究发现,可以在一趟排序中大数据用归并,小数据用冒泡,比快排快,dalao们可以试试!
f1(i,1,n)
f2(i,j,i+1,n) //这就是define的好处,看,多么方便
ans++; //因为循环判断代替了if判断语句,所以ans直接每次加一下即可
cout<<ans<<endl; //最后输出
return 0; //华丽丽地结束
}