为什么这题是普及-

P1102 A-B 数对

还是少有的验证码,太少见了
by sel_fish @ 2019-05-31 21:30:26


字符串哈希才pj-,您觉得数字哈希值多少呢 ~~您怕是对高端算法有什么误解~~
by SSerxhs @ 2019-05-31 21:30:31


~~验证码是你交题交太多了吧~~
by SSerxhs @ 2019-05-31 21:30:51


@[SSerxhs](/space/show?uid=29826) 可能我太菜了吧
by sel_fish @ 2019-05-31 21:31:16


@[sel_fish](/space/show?uid=197275) 哈希??不是二分吗??
by G_M_H @ 2019-06-01 09:07:38


@[G_M_H](/space/show?uid=130029) ???
by sel_fish @ 2019-06-01 15:50:43


@[sel_fish](/space/show?uid=197275) ```cpp #include<cmath> #include<cstdio> #include<cctype> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int c[200010]; long long total; int main() { //freopen("testdata (1).in","r",stdin); int a; int b; cin>>a>>b; for(int i=1; i<=a; i++) { cin>>c[i]; } sort(c+1,c+a+1); int ff1,ff2,flag=0xcfffffff; for(int j=a; j>=1; j--) { int l,r,mid; ff1=j; ff2=1; l=1; r=a; while(r>=l) { mid=(l+r)/2; if(c[j]-c[mid]<b) { r=mid-1; } else if(c[j]-c[mid]>b) { l=mid+1; } else { r=mid-1; ff1=min(ff1,mid); } } l=1; r=a; while(r>=l) { mid=(l+r)/2; if(c[j]-c[mid]<b) { r=mid-1; } else if(c[j]-c[mid]>b) { l=mid+1; } else { l=mid+1; ff2=max(ff2,mid); } } if(ff2>=ff1&&c[j]-c[ff1]==b) total+=ff2-ff1+1; } cout<<total; return 0; } ```
by G_M_H @ 2019-06-01 17:53:56


|