51NOD——N 1107 斜率小于0的连线数量

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1107

基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

 收藏

 关注

二维平面上N个点之间共有C(n,2)条连线。求这C(n,2)条线中斜率小于0的线的数量。

二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y)。例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2。

Input

第1行:1个数N,N为点的数量(0 <= N <= 50000)
第2 - N + 1行:N个点的坐标,坐标为整数。(0 <= X[i], Y[i] <= 10^9)

Output

输出斜率小于0的连线的数量。(2,3) (2,4)以及(2,3) (3,3)这2种情况不统计在内。

Input示例

4
2 3
3 4
1 5
4 6

Output示例

2

先以x升序,y升序排序,然后给y离散化,求y的逆序对和POJ star 差不多
 1 #include <algorithm>
 2 #include <cstdio>
 3
 4 using namespace std;
 5
 6 const int N(50000+5);
 7 int n,maxn=1e9;
 8 struct Node
 9 {
10     int x,y,mark;
11 }node[N],use[N];
12 bool cmp1(Node a,Node b)
13 {
14     if(a.x==b.x) return a.y<b.y;
15     return a.x<b.x;
16 }
17 bool cmp2(Node a,Node b)
18 {
19     if(a.y==b.y) return a.mark<b.mark;
20     return a.y<b.y;
21 }
22
23 #define LL long long
24 #define lowbit(x) (x&((~x)+1))
25 LL ans,t[N];
26 void up(int x)
27 {
28     for(;x<=N+1;x+=lowbit(x)) t[x]++;
29 }
30 LL query(int x)
31 {
32     LL ret=0;
33     for(;x;x-=lowbit(x)) ret+=t[x];
34     return ret;
35 }
36
37 int main()
38 {
39     scanf("%d",&n);
40     for(int i=1;i<=n;i++)
41     {
42         scanf("%d%d",&node[i].x,&node[i].y);
43         node[i].x++; node[i].y++;;
44     }
45     sort(node+1,node+n+1,cmp1);
46     for(int i=1;i<=n;i++) use[i].y=node[i].y,use[i].mark=i;
47     sort(use+1,use+n+1,cmp2);
48     for(int i=n;i>0;up(use[i--].mark))
49         ans+=query(use[i].mark);
50     printf("%lld\n",ans);
51     return 0;
52 }
时间: 2024-08-09 19:54:07

51NOD——N 1107 斜率小于0的连线数量的相关文章

51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)

1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2. Input 第1行:1个数N,N为点的数量(0 <= N <= 50000) 第2

51Nod - 1107 斜率小于0的连线数量

二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2. Input第1行:1个数N,N为点的数量(0 <= N <= 50000) 第2 - N + 1行:N个点的坐标,坐标为整数.(0 <= Xii , Yii <= 10^9)Output

51nod 1107 1107 斜率小于0的连线数量

基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2. Input 第1行:1个数N,N为点的数量(0 <= N <= 50000) 第2 - N + 1行:N个点的坐标

如何编程在Revit里创建长度小于0.8mm的线

Revit不知为何出有一个奇怪的规矩,那就是无法绘制长度小于 0.8mm的长度的线. (0.8mm等于 32分之一英寸). 导致很多小的短线无法绘制. 在轻钢薄壁构件里,其厚度有的只有0.5, 有的是0.7, 均无法绘制. 这给Revit的工作带来一些局限性. 这里有一个用编程的办法来绕弯路创建小于0.8mm, 其用法确实有点难以想到. 首先我们创建一个长度放大100倍的长线. 然后给这个线添加尺寸约束,并绑定到一个参数上. 最后指定参数的值为实际长度. 最后删除标准和临时参数. 这样就可以绘制

第二次实验判断成绩等级。 给定一百分制成绩,要求输出成绩的等级。90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出“输入数据错误”。 分别用if和用switch语句实现判断成绩等级。 给定一百分制成绩,要求输出成绩的等级。90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出“输入数据错误”

一:实验内容:1:判断成绩等级. 给定一百分制成绩,要求输出成绩的等级.90以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,输入大于100或小于0时输出“输入数据错误”. 分别用if和用switch语句实现 #include <stdio.h> int main() { int grade; scanf("%d",&grade); if(grade>100||grade<0) { printf("数据错误")

ecshop 秒杀并发时库存会被减到小于0的解决办法

ecshop 秒杀并发时库存会被减到小于0更新库存后,再进行库存检查,如果库存为负数,则执行事务的回滚. begin();//开始一个事物处理开始 $sql = "UPDATE ".$GLOBALS['a']->table('seconds_kill')." SET kill_stock = kill_stock - 1 WHERE sk_id='".$sk_id."' LIMIT 1" ; $GLOBALS['db']->query

一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?

package com.db2; /** * 一个球从100米高度自由落下,每次落地后反弹回原高度的一半: * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米? * * @author denny * */ public class Demo1 { static int count = 0; // 次数 static double sum = 0; // 总高度 public static void main(String[] args) { /* doubl

python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码

[code] """ 大于0的元素全部转化为1 """ np_arr = np.array([[1 ,2, 3, 4]]) print("转化前:") print(np_arr) print("转化后:") print(np.int64(np_arr>0)) [result] 转化前: [[1 2 3 4]] 转化后: [[1 1 1 1]] [code] """ 小于0

appium 切换native/ webview,findby,还有页面元素定位一直小于0的问题的解决

之前一直有个bug没有解决. 今天,终于解决了. 疑问过程: app是混合应用,项目做了H5优化之后,以前的用例执行总会失败,体现在原来的一个元素点击无反馈 排查原因:1.项目做了H5优化,2.测试的代码也做了优化 2.项目的代码更改之后,用原有的findby查找元素,元素的定位一直是小于0,不会变 3.findby是在初始化的时候填入的元素控件信息,后续如果不刷新可能根本就不会更改定位. 解决办法:将元素的定位改变后,getPageSource一下,重新获取控件信息. while (login