博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ - 3067 Japan (树状数组 思维)
阅读量:2135 次
发布时间:2019-04-30

本文共 1114 字,大约阅读时间需要 3 分钟。

题意:

       日本东海岸有N个城市(从北到南命名为1, 2, ..., N),西海岸有M个城市(从北到南命名为1, 2, ..., M),东西之间有K条高速公路,问这K条高速公路有多少个交叉点(一个交叉点有且只有两条高速公路经过)(1000 <= N, M <= 1000)。

题解:

       记每条高速公路为(x,y), 即东岸的第x个城市与西岸的第y个城市修一条路。当两条路有交点时,满足(x1-x2)*(y1-y2) < 0。所以,将每条路按x从小到达排序,若x相同,按y从小到大排序。 然后按排序后的公路用树状数组在线更新,求y的逆序数之 和 即为交点个数。

题目没给k的范围,没给T的范围......

自己试了一下这个题数组开到1e6就过了,1e5还不行,最后的结果需要开long long

#include
#include
#include
#include
#define maxn 400010#define pr printfusing namespace std;#define ll long long#define pr pair
#define maxn 1000000pr a[maxn];int c[maxn];int n,m,k;bool cmp(pr x,pr y){ if(x.first==y.first) return x.second
0) { s+=c[i]; i-=lowbit(i); } return s;}int main(){ //freopen("input.txt","r",stdin); int T; scanf("%d",&T); for(int cas=1;cas<=T;++cas) { for(int i=0;i<=maxn;++i) c[i]=0; //memset(c,0,sizeof(c)); scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=k;++i) scanf("%d%d",&a[i].first,&a[i].second); sort(a+1,a+1+k,cmp); ll ans=0; for(int i=1;i<=k;++i) { add(a[i].second,1);//有点的地方就是1,没点的地方就是0 ans+=i-sum(a[i].second); } printf("Test case %d: %lld\n",cas,ans); } return 0;}

 

转载地址:http://wzfgf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】235-Lowest Common Ancestor of a Binary Search Tree
查看>>
【LEETCODE】110-Balanced Binary Tree
查看>>
【LEETCODE】101-Symmetric Tree
查看>>
【LEETCODE】257-Binary Tree Paths
查看>>
【LEETCODE】102-Binary Tree Level Order Traversal
查看>>
【LEETCODE】107-Binary Tree Level Order Traversal II
查看>>
数据结构-stack-学习笔记
查看>>
【LEETCODE】145-Binary Tree Postorder Traversal
查看>>
【LEETCODE】144-Binary Tree Preorder Traversal
查看>>
【LEETCODE】94-Binary Tree Inorder Traversal
查看>>
【LEETCODE】96-Unique Binary Search Trees
查看>>
【LEETCODE】95-Unique Binary Search Trees II
查看>>
【LEETCODE】108-Convert Sorted Array to Binary Search Tree
查看>>
【LEETCODE】173-Binary Search Tree Iterator
查看>>
【LEETCODE】199-Binary Tree Right Side View
查看>>
【Programming for Everybody】学习笔记
查看>>
【LEETCODE】114-Flatten Binary Tree to Linked List
查看>>
【LEETCODE】109-Convert Sorted List to Binary Search Tree
查看>>
【LEETCODE】106-Construct Binary Tree from Inorder and Postorder Traversal
查看>>
【LEETCODE】236-Lowest Common Ancestor of a Binary Tree
查看>>