大型网站开发什么书籍好,自己搭建的网站可以收费吗,罗庄建设局网站,网站开发厂商https://www.lydsy.com/JudgeOnline/problem.php?id3295 这个妹妹我曾见过的~~~ 之前应该在校内oj写了#xff0c;似乎还写过题解#xff1f;发现没写博客就重新水一遍代码水一篇博客好了。 把找逆序对的过程想成一个一个往里塞数字然后找每个数字可以组成的逆序对#xff…https://www.lydsy.com/JudgeOnline/problem.php?id3295 这个妹妹我曾见过的~~~ 之前应该在校内oj写了似乎还写过题解发现没写博客就重新水一遍代码水一篇博客好了。 把找逆序对的过程想成一个一个往里塞数字然后找每个数字可以组成的逆序对把最后要去掉的几个也想成往里塞所以加一个时间维度用cdq求三维偏序。 1 #includeiostream2 #includecstdio3 #includealgorithm4 #includecstring5 #includecmath6 #includequeue7 using namespace std;8 #define LL long long9 #define pa pairint,int
10 const int maxn100010;
11 const LL minf(LL)5e17;
12 int n,m;
13 struct nod{
14 int t,id,v;LL ans;
15 }a[maxn];
16 int b[maxn]{},vis[maxn]{};
17 LL t[maxn]{}; int sta[maxn]{},tai0;
18 priority_queue pa , vector pa , greater pa q[2];
19
20 inline void addt(int x,int v){ while(xn){ t[x]v; x(x-x); } }
21 inline LL gett(int x){ LL tsn0; while(x){ tsnt[x]; x-(x-x); } return tsn; }
22 bool mcmp1(nod aa,nod bb){
23 if(aa.id!bb.id)return aa.idbb.id;
24 return aa.tbb.t;
25 }
26 bool mcmp2(nod aa,nod bb){
27 if(aa.t!bb.t)return aa.tbb.t;
28 return aa.idbb.id;
29 }
30 void doit(int l,int r){
31 if(lr)return;
32 int mid(lr)/2;
33 doit(l,mid); doit(mid1,r);
34 //x被查找y查找
35 for(int il;imid;i)q[0].push(make_pair(a[i].t,i));
36 for(int imid1;ir;i)q[1].push(make_pair(a[i].t,i));
37 tai0;
38 while(!q[1].empty()){
39 pa yq[1].top(); q[1].pop();
40 if(q[0].empty()){a[y.second].ansgett(n)-gett(a[y.second].v);continue;} pa xq[0].top();
41 while(x.firsty.first){
42 addt(a[x.second].v,1); sta[tai]a[x.second].v;
43 q[0].pop(); if(q[0].empty())break; xq[0].top();
44 }a[y.second].ansgett(n)-gett(a[y.second].v);
45 }
46 while(!q[0].empty())q[0].pop();
47 for(int i1;itai;i)addt(sta[i],-1);
48
49 for(int il;imid;i)q[0].push(make_pair(a[i].t,i));
50 for(int imid1;ir;i)q[1].push(make_pair(a[i].t,i));
51 tai0;
52 while(!q[0].empty()){
53 pa yq[0].top(); q[0].pop();
54 if(q[1].empty()){a[y.second].ansgett(a[y.second].v-1);continue;} pa xq[1].top();
55 while(x.firsty.first){
56 addt(a[x.second].v,1); sta[tai]a[x.second].v;
57 q[1].pop(); if(q[1].empty())break; xq[1].top();
58 }a[y.second].ansgett(a[y.second].v-1);
59 }
60 while(!q[1].empty())q[1].pop();
61 for(int i1;itai;i)addt(sta[i],-1);
62 }
63 int main(){
64 scanf(%d%d,n,m);
65 for(int i1;in;i){scanf(%d,a[i].v);a[i].idi;a[i].ti;vis[a[i].v]i;}
66 for(int i1;im;i){scanf(%d,b[i]);a[vis[b[i]]].tnm1-i;}
67 sort(a1,a1n,mcmp1); doit(1,n);
68 sort(a1,a1n,mcmp2);
69 for(int i2;in;i)a[i].ansa[i-1].ans;
70 for(int i1;im;i)printf(%lld\n,a[n-i1].ans);
71 return 0;
72 } View Code 转载于:https://www.cnblogs.com/137shoebills/p/9060496.html