标签:play 技术分享 display mil alt stream eve onclick std
这东西我还是有点会玩的啊。。
邻值查找这东西不就是维护个前驱后继嘛。。
#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> using namespace std; struct node { int x,id; }a[110000]; bool cmp(node n1,node n2){return n1.x<n2.x;} int p[110000]; int bef[110000],aft[110000]; int as[110000],pr[110000]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i].x), a[i].id=i; sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++)p[a[i].id]=i,bef[i]=i-1,aft[i]=i+1; for(int i=n;i>=2;i--) { int t=p[i];as[i]=2147483647; if(bef[t]!=0) { int d=abs(a[t].x-a[bef[t]].x); if(d<as[i]) as[i]=d, pr[i]=a[bef[t]].id; } if(aft[t]!=n+1) { int d=abs(a[t].x-a[aft[t]].x); if(d<as[i]) as[i]=d, pr[i]=a[aft[t]].id; } aft[bef[t]]=aft[t]; bef[aft[t]]=bef[t]; } for(int i=2;i<=n;i++)printf("%d %d\n",as[i],pr[i]); return 0; }
好的结果今天看一看下一题就是running median心态崩了,昨天才和苏大佬和林肯口胡了这题的链表做法。。。不做了。。。简直莫名其妙。。。
邻接表。。。还有人不会,吗。。。
标签:play 技术分享 display mil alt stream eve onclick std
原文地址:https://www.cnblogs.com/AKCqhzdy/p/9252121.html