51Nod - 1107 斜率小于0的连线数量
二维平面上N个点之间共有C(n,2)条连线。求这C(n,2)条线中斜率小于0的线的数量。
Input第1行:1个数N,N为点的数量(0 <= N <= 50000)
第2 - N + 1行:N个点的坐标,坐标为整数。(0 <= Xii , Yii <= 10^9)Output输出斜率小于0的连线的数量。(2,3) (2,4)以及(2,3) (3,3)这2种情况不统计在内。Sample Input
4 2 3 3 4 1 5 4 6
Sample Output
2
选x或y,维护另一个的树状数组即可。

1 #include<iostream www.qwangxiao.com/k/gzwxkc/>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5
6 using namespace std;
7
8 const int maxn=60005;
9 int g[maxn],n;
10
11 struct node
12 {
13 int x,y;
14 int y1;
15 }c[maxn];
16
17 void update(int x)
18 {
19 for(;x<=n;x+=x&(-x))
20 g[x]++;
21 }
22
23 int getsum(int x)
24 {
25 int sum=0;
26 for(;x>0;x-=x&(-x))
27 sum+=g[x];
28 return sum;
29 }
30
31 bool cmpx(node xx,node yy)
32 {
33 if(xx.x!=yy.x)
34 return xx.x<yy.x;
35 return xx.y<yy.y;
36 }
37
38 bool cmpy(node xx,node yy)
39 {
40 if(xx.y!=yy.y)
41 return xx.y<yy.y;
42 return xx.x<yy.x;
43 }
44
45 int main()
46 {
47 scanf("%d",&n);
48 for(int i=1;i<=n;i++)
49 scanf("%d%d",&c[i].x,&c[i].y);
50
51 sort(c+1,c+n+1,cmpy);
52 for(int i=1;i<=n;i++)
53 c[i].y1=n-i+1;
54 sort(c+1,c+n+1,cmpx);
55 memset(g,0,sizeof(g));
56 long long ans=0;
57 for(int i=1;i<=n;i++)
58 {
59 ans+=getsum(c[i].y1);
60 update(c[i].y1);
61 }
62 printf("%lld\n",ans);
63
64
65 return 0;
66 }

51Nod - 1107 斜率小于0的连线数量的更多相关文章
- 51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)
1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线 ...
- 51NOD——N 1107 斜率小于0的连线数量
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1107 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 ...
- 51nod 1107 斜率小于零连线数量 特调逆序数
逆序数的神题.... 居然是逆序数 居然用逆序数过的 提示...按照X从小到大排列,之后统计Y的逆序数... 之后,得到的答案就是传说中的解(斜率小于零) #include<bits/stdc+ ...
- KiCad 不可以画线宽小于 0.2mm 的走线?
KiCad 不可以画线宽小于 0.2mm 的走线? 有小伙伴在 QQ 群里反馈,KiCad 设置线宽规则时出现错误. 于是判断 KiCad 不可以画 BGA PCB,很显然我认为这是不可能的事情. 作 ...
- ecshop 秒杀并发时库存会被减到小于0的解决办法
ecshop 秒杀并发时库存会被减到小于0更新库存后,再进行库存检查,如果库存为负数,则执行事务的回滚. begin();//开始一个事物处理开始 $sql = "UPDATE " ...
- C#_delegate和事件 - 如果金额小于0则触发事件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JavaScript语言里判断一个整数,属于哪个范围:大于0;小于0;等于0
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- appium 切换native/ webview,findby,还有页面元素定位一直小于0的问题的解决
之前一直有个bug没有解决. 今天,终于解决了. 疑问过程: app是混合应用,项目做了H5优化之后,以前的用例执行总会失败,体现在原来的一个元素点击无反馈 排查原因:1.项目做了H5优化,2.测试的 ...
- python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码
[code] """ 大于0的元素全部转化为1 """ np_arr = np.array([[1 ,2, 3, 4]]) print(&q ...
随机推荐
- 如何学习 Webpack
webpack-howto Tip: 本文是 webpack-howto 的原文,我觉得这篇文章写得非常好,确实算是目前学习 webpack 入门的必读文章.直接收录之. 本教程的目标 这是一本教你如 ...
- 同一个解决方案或有依赖关系的两个项目引用同名但不同版本的DLL
问题描述 我们最近在使用Redis作Session的集中化,中间碰到了一个如下问题:我们有一些项目比较老,引用了NewtonJson的4.0.3.0版本的DLL,但是Redis提供的C#集成DLL引用 ...
- synchronized和Lock的异同
JAVA语言使用两种机制来实现堆某种共享资源的同步,synchronized和Lock.其中,synchronized使用Object对象本身的notify.wait.notifyAll调度机制,而l ...
- eclipse取消空格、等号、分号自动录入
默认eclipse中按空格.等号.分号等键时,会将提示框中的文字输入到编辑内容中,但是很多时候我们并不希望录入,可如下设置. 1.打开 Eclipse -> Window -> Perfe ...
- Docker容器学习梳理 - 容器登陆方法梳理(attach、exec、nsenter)
对于运行在后台的Docker容器,我们运维人员时常是有登陆进去的需求.登陆Docker容器的方式:1)使用ssh登陆容器.这种方法需要在容器中启动sshd,存在开销和攻击面增大的问题.同时也违反了Do ...
- Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)-A-Single Wildcard Pattern Matching
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> ...
- BugPhobia启程篇章:需求分析与功能定位
0x01 :引言 If you weeped for the missing sunset, you would miss all the shining stars 我看着大巴缓缓的驶过街角,我躲在 ...
- text2
我的实践2代码已经传到GITHUb:https://github.com/jiaweihao/Test.git一下为测试结果截图:
- VS2015 导航栏 查看每个cpp文件中类以及类成员函数的框框
这个可以查看每个cpp文件中类以及类成员函数的框框叫导航栏! 怎么打开导航栏可以再百度.
- 常用的查询DOM的方法
查询body的方法=========== document.body // document.getElementsTagname("body")[0]; 查询html的方法=== ...