贪心与最近的鞋子匹配(大小相同且方向相反),记$a_{x}$表示第x双鞋子的左位置,$b_{x}$表示右位置
若$a_{x}>b_{x}$,那么可以交换这两双鞋子并令答案+1,所以不妨设$a_{x}<b_{x}$
对于$x$和$y$,不妨设$a_{x}<a_{y}$,有结论:最终让第$x$双鞋子在第$y$双鞋子左边一定不劣
证明:对剩下的数位置关系(3种)分类讨论,比较两者的逆序对即可
根据分类讨论的讨论,用线段树来维护即可

  1. 1 #include<bits/stdc++.h>
  2. 2 using namespace std;
  3. 3 #define N 100005
  4. 4 #define L (k<<1)
  5. 5 #define R (L+1)
  6. 6 #define mid (l+r>>1)
  7. 7 struct ji{
  8. 8 int a,b;
  9. 9 }a[N];
  10. 10 vector<int>va[N],vb[N];
  11. 11 int n,x,f[N<<3];
  12. 12 long long ans;
  13. 13 bool cmp(ji x,ji y){
  14. 14 return x.a<y.a;
  15. 15 }
  16. 16 void update(int k,int l,int r,int x){
  17. 17 f[k]++;
  18. 18 if (l==r)return;
  19. 19 if (x<=mid)update(L,l,mid,x);
  20. 20 else update(R,mid+1,r,x);
  21. 21 }
  22. 22 int query(int k,int l,int r,int x,int y){
  23. 23 if((l>y)||(x>r))return 0;
  24. 24 if ((x<=l)&&(r<=y))return f[k];
  25. 25 return query(L,l,mid,x,y)+query(R,mid+1,r,x,y);
  26. 26 }
  27. 27 int main(){
  28. 28 scanf("%d",&n);
  29. 29 for(int i=1;i<=2*n;i++){
  30. 30 scanf("%d",&x);
  31. 31 if (x>0)vb[x].push_back(i);
  32. 32 else va[-x].push_back(i);
  33. 33 }
  34. 34 x=0;
  35. 35 for(int i=1;i<=n;i++)
  36. 36 for(int j=0;j<va[i].size();j++){
  37. 37 a[++x].a=va[i][j];
  38. 38 a[x].b=vb[i][j];
  39. 39 if (a[x].a>a[x].b){
  40. 40 ans++;
  41. 41 swap(a[x].a,a[x].b);
  42. 42 }
  43. 43 }
  44. 44 sort(a+1,a+n+1,cmp);
  45. 45 for(int i=n;i;i--){
  46. 46 ans+=query(1,1,2*n,1,a[i].b-1);
  47. 47 update(1,1,2*n,a[i].a);
  48. 48 update(1,1,2*n,a[i].b);
  49. 49 }
  50. 50 printf("%lld",ans);
  51. 51 }

[loj3175]排列鞋子的更多相关文章

  1. LOJ 3175. 「IOI2019」排列鞋子

    传送门 考虑如果能确定每个鞋子最终交换到的位置,那么答案容易算出 具体地,如果原位置为 $i$ 的鞋子要交换到 $pos[i]$ 那么最终答案就是 $pos$ 的逆序对数量 如果不懂可以先去写 NOI ...

  2. hdu 4451 Dressing 排列组合/水题

    Dressing Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  3. 学习sql中的排列组合,在园子里搜着看于是。。。

    学习sql中的排列组合,在园子里搜着看,看到篇文章,于是自己(新手)用了最最原始的sql去写出来: --需求----B, C, F, M and S住在一座房子的不同楼层.--B 不住顶层.C 不住底 ...

  4. [LeetCode] Arranging Coins 排列硬币

    You have a total of n coins that you want to form in a staircase shape, where every k-th row must ha ...

  5. [LeetCode] Next Permutation 下一个排列

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  6. js学习篇--数组按升序降序排列

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. SDOI 2016 排列计数

    题目大意:一个数列A,n个元素,其中m个元素不动,其他元素均不在相应位置,问有多少种排列 保证m个元素不动,组合数学直接计算,剩余元素错位排列一下即可 #include<bits/stdc++. ...

  8. 排列组合算法的javascript实现

    命题:从成员数为N的集合S中,选出M个元素,分别求其排列与组合结果集,即 A(N, M)与C(N, M) js解法: function queue(arr, size){ if(size > a ...

  9. 剑指Offer面试题:26.字符串的排列

    一.题目:字符串的排列 题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. 二 ...

随机推荐

  1. PHP审计之POP链挖掘

    PHP审计之POP链挖掘 前言 续上文中的php反序列化,继续来看,这个POP的挖掘思路.在其中一直构思基于AST去自动化挖掘POP链,迫于开发能力有限.没有进展,随后找到了一个别的师傅已经实现好的项 ...

  2. Miller-Rabin学习笔记

    首先给出两个定理: 1.费马小定理 设p是一个素数,a是一个整数,且不是p的倍数,那么 \(a^{p−1} \equiv\ 1 \pmod p\) 2.二次探测定理 若\(p\)是素数,\(x\)是一 ...

  3. find+xargs+sed批量替换

    写代码时经常遇到要把 .c  和 .h的文件中的某些内容全部替换的情况,用sourceinsight 进行全局的查找是一个方法,但是sourceinsight只能替换一个文件中的字符串,不能同时替换多 ...

  4. 【UE4 C++】DateTime、Timespan 相关函数

    基于UKismetMathLibrary DateTime 相关函数 Timespan 运算操作相关函数见尾部附录 /** Returns the date component of A */ UFU ...

  5. 阿里大神favoorr提供的书单

     Thoughtwoks中国的推荐书单 <http://www.douban.com/doulist/2012097/ >新浪微博-秦迪 <http://blog.2baxb.me/ ...

  6. [软工顶级理解组] Alpha阶段测试报告

    [软工顶级理解组] Alpha阶段测试报告 在测试过程中发现了多少Bug? 测试阶段发现并已修复的bug: 尚且存在,但是难以解决或者不影响使用的bug: 计算重修课程的时候,如果重修课程的课程号和原 ...

  7. 软工博客之关于CSDN的移动端软件测评

    关于CSDN的移动端软件测评 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件测评作业 我在这个课程的目标 不求变强,只求做好,成为一颗有用的 ...

  8. Java中的位运算符 &、|、^、~、<< 和 >>

    一.& 按位与运算符 5 & 3 = 1 5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101 3转换为二进制:0000 0000 0000 ...

  9. poj 3417 Network (LCA,路径上有值)

    题意: N个点,构成一棵树.给出这棵树的结构. M条边,(a1,b1)...(am,bm),代表给树的这些点对连上边.这样就形成了有很多环的一个新"树". 现在要求你在原树中断一条 ...

  10. HCNP Routing&Switching之BGP路由控制

    前文我们了解了BGP的路由属性和优选规则相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15489497.html:今天我们来聊一聊BGP路由控制相关话 ...