题目给的输入是大坑,算法倒是很简单……

输入的是绳子的编号wire ID,而不是上(或下)挂钩对应下(或上)挂钩的编号。 所以要转换编号,转换成挂钩的顺序,然后再求逆序数。

知道了这个以后直接乱搞就可以0msAC

(这题可以用冒泡排序过的……) (n<=1000)

// by SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n,tree[6666],ans=0;
struct Node
{
int x,y;
}point[1005],node[1005];
bool cmp(Node a,Node b)
{
return a.x<b.x;
}
int query(int l,int r,int pos,int W)
{
if(l>=W)return tree[pos];
int mid=(l+r)>>1;
if(mid<W)return query(mid+1,r,pos<<1|1,W);
else return query(l,mid,pos<<1,W)+query(mid+1,r,pos<<1|1,W);
}
void insert(int l,int r,int pos,int W)
{
if(l==r){tree[pos]++;return;}
int mid=(l+r)>>1;
if(mid>=W)insert(l,mid,pos<<1,W);
else insert(mid+1,r,pos<<1|1,W);
tree[pos]=tree[pos<<1]+tree[pos<<1|1];
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&point[i].x,&point[i].y);
}
for(int i=1;i<=n;i++)
{
node[point[i].x].x=i;
node[point[i].y].y=i;
}
sort(node+1,node+1+n,cmp);
for(int i=1;i<=n;i++)
{
ans+=query(1,n,1,node[i].y);
insert(1,n,1,node[i].y);
}
printf("%d\n",ans);
}

最新文章

  1. [No000078]Python3 字符串操作
  2. easyui datagride 两种查询方式
  3. Android学习笔记——ListView
  4. [Effective JavaScript 笔记]第33条:使构造函数与new操作符无关
  5. HTML5 测验记录
  6. Unicode转为UTF8
  7. oracle timestamp的转换
  8. UVA 10375 Choose and divide
  9. POJ2728 最小比率生成树/0-1分数规划/二分/迭代(迭代不会)
  10. CentOS 7上的性能监控工具
  11. SQL优化 MySQL版 -分析explain SQL执行计划与Extra
  12. javascript 常用方法 解析URL,补充前导字符
  13. SQLAlchemy 嵌套事务的解决方案
  14. 实现html页面自动刷新的几种方式
  15. 每日linux命令学习-xargs命令
  16. Mysql存储过程(六)——存储过程中使用临时表
  17. html-prepend
  18. Python- requests详解
  19. 如何修改antd中表格的表头样式和奇偶行颜色交替
  20. C中的空宏定义,即只有一个参数

热门文章

  1. Docker私服仓库Harbor安装
  2. HDU4920 矩阵乘法
  3. 转:如何在Ubuntu 14.04中安装最新版Eclipse
  4. Team Services 自动化部署项目
  5. windows上上传代码到Github
  6. Repeater控件使用小结持续更新
  7. android studio开发去掉titlebar
  8. 指定的WSDL可能与所选的工具包不兼容
  9. Unity脚本中可以引用的类型
  10. 值得尝试的十款 GNOME Shell 扩展