POJ 1794 Castle Walls(逆序数)#by zh
来源:互联网 发布:阿里云个人网站 编辑:程序博客网 时间:2024/04/29 23:12
这道题的题意还是比较简单的,有两队农民要把钩子扔到对面的城墙上然后爬上去攻城,每个人都有一个编号,城墙也有对应的编号,现在保证一个队伍中的人扔上去的绳子不可能交叉,问你有几对人的绳子相互交叉。做题前看这题是一个求逆序数的题还没一点思路,后来在网上看到了别人的思路才明白了一些。首先要把每个人的位置和对于城墙的编号读入,然后按照城墙编号升序排序,如果城墙编号相同,则按农民编号降序排列,这样通过构造农民编号的逆序的方法,求逆序数的个数来得到问题的答案。逆序数的求法有不少,我用树状数组求的,感觉这种方法还是比归并排序简单一点,顺便复习一下这个好久没用的数据结构……
#include <iostream>#include <cstdio>#include <string.h>#include <algorithm>#define lowbit(x) (x&(-x))using namespace std;int n,m;struct Node{ int x,y;}pos[60005];int a[60005];void modify(int pos,int c){ while(pos<=n+m) { a[pos]+=c; pos+=lowbit(pos); }}long long query(int pos){ long long ans=0; while(pos>0) { ans+=a[pos]; pos-=lowbit(pos); } return ans;}bool cmp(Node a,Node b){ if(a.y==b.y) return a.x>b.x; return a.y<b.y;}int main(){ int t; scanf("%d",&t); for(int cas=1;cas<=t;cas++) { memset(a,0,sizeof(a)); if(cas!=1) printf("\n"); printf("Scenario #%d:\n",cas); int x,y; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%d%d",&pos[i].x,&pos[i].y); for(int i=0;i<m;i++) scanf("%d%d",&pos[i+n].x,&pos[i+n].y); sort(pos,pos+n+m,cmp); long long ans=0; for(int i=0;i<n+m;i++) { modify(pos[i].x,1); ans+=pos[i].x-query(pos[i].x); } printf("%lld\n",ans); }}
- POJ 1794 Castle Walls(逆序数)#by zh
- POJ 1161 Walls(floyd最短路)#by zh
- POJ 1275 Cashier Employment(差分约束)#by zh
- POJ 1990 MooFest(树状数组)#by zh
- POJ 1364 King(差分约束)#by zh
- POJ 2236 Wireless Network(并查集)#by zh
- POJ 2135 Farm Tour(费用流)#by zh
- POJ 1502 MPI Maelstrom(floyd)#by zh
- poj 3067(树状数组逆序数)
- POJ 2299 Ultra-QuickSort(逆序数)
- poj 3067 Japan(逆序数)
- poj 2299 逆序数
- 【逆序数】POJ 2188
- POJ 1236 Network of Schools(强连通分量)#by zh
- POJ 1984 Navigation Nightmare(并查集坐标偏移)#by zh
- POJ 1988 Cube Stacking(带权并查集)#by zh
- POJ 3468 A Simple Problem with Integers(线段树)#by zh
- POJ 1161 Walls(二分图匹配)
- 原地矩阵转置算法实现
- void MessageBox::slotQuestion()
- 复制一个链表
- JAVA 冒泡排序法代码
- Java中数组与集合的转换
- POJ 1794 Castle Walls(逆序数)#by zh
- 一步步教你用VMware玩OpenWRT
- 解决 Python.h:没有那个文件或目录 错误的方法( Python.h:No such file or directory )
- 商业项目中代码质量是否重要?
- 企业应用开发模式简介
- 关于ValueSatck
- 深入理解JavaScript作用域和作用域链
- highcharts日期型X轴示例
- mtk android tp 运行方式更改