51nod 1107 斜率小于零连线数量 特调逆序数
逆序数的神题。。。。
居然是逆序数
居然用逆序数过的
提示。。。按照X从小到大排列,之后统计Y的逆序数。。。
之后,得到的答案就是传说中的解(斜率小于零)
#include<bits/stdc++.h>
using namespace std; const long long MAXN = ;
pair<long long,long long> arr[MAXN]; bool com(pair<long long,long long>p1,
pair<long long,long long>p2)
{
if(p1.first==p2.first)return p1.second<p2.second;
return p1.first<p2.first;
}
long long tree[MAXN];
long long arr1[MAXN];
void insert(int pos,int key=)
{
while(pos<MAXN)
{
tree[pos]+=key;
pos+=pos&(-pos);
}
}
long long getSum(int pos)
{
long long ret=;
while(pos>)
{
ret+=tree[pos];
pos-=pos&(-pos); }return ret;
}
map<long long ,long long> m1; int main()
{
cin.sync_with_stdio(false);
long long n;cin>>n;
for(int i=;i<n;++i)
{
cin>>arr[i].first>>arr[i].second;
arr1[i]=arr[i].second;
// cout<<m1[arr[i].second]<<endl;
}
sort(arr1,arr1+n);
for(int i=;i<n;++i)if(!m1.count(arr1[i]))m1[arr1[i]]=m1.size()+;
sort(arr,arr+n,com); //long long ret=0; long long ret=(n-)*(n)/;
for(int i=;i<n;++i)
{
// cout<<arr[i].first<<ends<<arr[i].second<<ends;
ret-=getSum(m1[arr[i].second]);//cout<<ret<<endl;
insert(m1[arr[i].second]);
}
cout<<ret<<endl;
return ;
}
我们大家都很绝望,但是有的人比我们更加绝望。
51nod 1107 斜率小于零连线数量 特调逆序数的更多相关文章
- 51Nod - 1107 斜率小于0的连线数量
二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...
- 51NOD——N 1107 斜率小于0的连线数量
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1107 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 ...
- 51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)
1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线 ...
- 51nod 1376 最长递增子序列的数量(线段树)
51nod 1376 最长递增子序列的数量 数组A包含N个整数(可能包含相同的值).设S为A的子序列且S中的元素是递增的,则S为A的递增子序列.如果S的长度是所有递增子序列中最长的,则称S为A的最长递 ...
- 51nod 1376 最长上升子序列的数量 | DP | vector怒刷存在感!
51nod 1376 最长上升子序列的数量 题解 我们设lis[i]为以位置i结尾的最长上升子序列长度,dp[i]为以位置i结尾的最长上升子序列数量. 显然,dp[i]要从前面的一些位置(设为位置j) ...
- 字节跳动笔试题:1. 小于N的质数数量;2. 逆时针二维数组;3. 判断a+b>c
1. 小于N的质数数量 import java.util.Scanner; /** * 计算小于N的质数数量 * @author Turing * */ public class Main4 { pu ...
- 51nod 1019 逆序数(逆序数+离散化)
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 如2 4 3 1中,2 1,4 3,4 1,3 1是 ...
- 51Nod P1100 斜率最大
传送门: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1100 由于2 <= N <= 10000, 所以 ...
- 51Nod 1376 最长递增子序列的数量 (DP+BIT)
题意:略. 析:dp[i] 表示以第 i 个数结尾的LIS的长度和数量,状态方程很好转移,先说长度 dp[i] = max { dp[j] + 1 | a[i] > a[j] && ...
随机推荐
- Centos 6.5 修改默认分辨率
需要两步: 第一步: 编辑/etc/grub.conf文件,删除“nomodeset” 单词 ,翻到该页最后一行,就可以看到该词: 第二步: 删除文件/etc/X11/xorg.conf , Inte ...
- Pod管理的iOS项目修改工程名
声明:本文大部分内容来自于以下网址,其余的部分是自己尝试的总结和补充. http://www.jianshu.com/p/5f088acecf64 完整修改iOS工程名1 http://www.cnb ...
- 电脑没有声音,显示“未插入耳机或扬声器”,检测不到Realtek高清晰音频管理器
2018-7-16,电脑彻夜未关,早上发现已经死机了.关机重启之后,就发现没有声音了,提示“未插入耳机或扬声器”,并且检测不到Realtek高清晰音频管理器,只能检查到显卡音频输出.首先,音箱在其他电 ...
- java8Stream map和flatmap的区别
map和flatmap的区别 map只是一维 1对1 的映射 而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 , 所以名称上就把map加了个flat 叫flat ...
- 如何进行大规模在线数据迁移(来自Stripe公司的经验)
首发于笔者的微信公众号:技术心流FollowFlows 原文地址:Stripe Engineering Blog 各工程团队常面临一项共同挑战:重新设计数据模型以支持清晰准确的抽象和更复杂的功能. ...
- Reduce侧连接
1.reduce side join 在reduce端进行表的连接,该方法的特点就是操作简单,缺点是map端shffule后传递给reduce端的数据量过大,极大的降低了性能 连接方法: (1)map ...
- webpack前端构建工具学习总结(二)之loader的使用
Webpack 本身只能处理 JavaScript 模块,如果要处理其他类型的文件,就需要使用 loader 进行转换. Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为 ...
- linux 命令——8 cp (转)
cp 命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在, 就会询问是否覆盖,不管你是否使用-i参数.但是如 ...
- Android(java)学习笔记92:Android线程形态之 AsyncTask (异步任务)
1. AsyncTask和Handler的优缺点比较: 1)AsyncTask实现的原理和适用的优缺点 AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTa ...
- kubernetes-服务发现service(九)
service •防止Pod失联 •定义一组Pod的访问策略 •支持ClusterIP,NodePort以及LoadBalancer三种类型 •Service的底层实现主要有ipta ...