计蒜客NOIP2017提高组模拟赛(三)day2-直线的交点
简单几何+逆序对
发现当两条直线甲乙与平板的交点在上面甲在较左的位置,那么下面甲在较右的位置就可以相交
然后把上面的位置排下序,下面离散化+树状数组即可
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<queue>
#include<vector>
#define INF 0x7f7f7f7f
#define pii pair<int,int>
#define pdd pair<double,double>
#define ll long long
#define MAXN
using namespace std;
int n;
int K,A,B;
namespace solve1
{
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if('-'==ch)f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int dat[];
int n,N;
int sum(int k){
int ret=;
while(k<=N){
ret+=dat[k];
k+=(k&-k);
}
return ret;
}
void add(int k){
while(k>=){
dat[k]+=;
k-=(k&-k);
}
}
pdd Node(int k1,int a1,int k2,int a2){
double x=1.0*(a2-a1)/(k1-k2);
double y=1.0*(k1*a2-k2*a1)/(k1-k2);
return make_pair(x,y);
}
int K,A,B;
int k[],a[];
pdd b[];
pair<double,int> c[];
int d[];
void solve(){
K=::K,A=::A,B=::B;
n=::n;
for(int i=;i<=n;i++){
k[i]=read();a[i]=read();
}
for(int i=;i<=n;i++){
b[i]=make_pair(Node(k[i],a[i],K,A).first,Node(k[i],a[i],K,B).first);
}
sort(b+,b+n+);
for(int i=;i<=n;i++){
c[i]=make_pair(b[i].second,i);
}
sort(c+,c+n+);
N=;
for(int i=;i<=n;i++){
if(==i||c[i].first!=c[i-].first){
N++;
}
d[c[i].second]=N;
}
ll ans=;
for(int i=;i<=n;i++){
ans+=sum(d[i]);
add(d[i]);
}
printf("%lld\n",ans);
} }
int read(){
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if('-'==ch)f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} int main()
{
// freopen("data.in","r",stdin);
K=read();A=read();B=read();
n=read();
solve1::solve();
return ;
}
计蒜客NOIP2017提高组模拟赛(三)day2-直线的交点的更多相关文章
- 计蒜客NOIP2017提高组模拟赛(三)day1
火山喷发 火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 n 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 MM 轮 ...
- 计蒜客NOIP2017提高组模拟赛(四)day1
T1:小X的质数 小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1 以外,没有其他因数的 ...
- 计蒜客NOIP2017提高组模拟赛(五)day1-展览
传送门 发现这题选或不选对状态的优劣程度不会产生影响,如果已经确定了两个数a和b,那么最优的首项和公比也都是唯一确定的, 与对于后面的数x,加进去也好不加进去也好,首项和公比依旧是原来的 于是我们用尺 ...
- 计蒜客NOIP2017提高组模拟赛(五)day1-机智的 AmyZhi
传送门 很水的题目啦QAQ #include<cstdio> #include<cstdlib> #include<algorithm> #include<c ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-蚂蚁搬家
传送门 这题可以用线段树来维护 #include<cstdio> #include<cstdlib> #include<algorithm> #include< ...
- 计蒜客NOIP2017提高组模拟赛(五)day2-成绩统计
传送门 用hash,因为map的复杂度可能在这题中因为多一个log卡掉,但是hash不会 可能因为这个生成的随机数有循环的情况,不是完全均匀的 而且这题hash表的长度也可以开的很大 #include ...
- 计蒜客NOIP2017提高组模拟赛(三)day2-数三角形
传送门 这题有点坑啊 设A为两边颜色不同的角,B为两边颜色相同的角 那么考虑三种三角形:异色,同色,其他 对于任何一个异色三角形,一定会有三个颜色不同的角, 对于任何一个同色三角形,一定会有零个颜色不 ...
- 计蒜客NOIP2017提高组模拟赛(三)day2-小区划分
传送门 dp,注意边界 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cst ...
- 计蒜客 NOIP 提高组模拟竞赛第一试 补记
计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...
随机推荐
- Python 实现双端队列 Deque
操作 Deque() 创建一个空的双端队列 add_front(item) 从队头加入一个item元素 add_rear(item) 从队尾加入一个item元素 remove_front() 从队头删 ...
- 要学好JAVA要注意些什么?
从自学开始到参加系统的学习JAVA已经差不多有1个月了的时间了,在这段时间以前我也和很多人一样在网上盲目的搜罗一些视频来自己啃,随着时间的积累,对JAVA的认识也有了一定的提升,之前可能因为在IT咨询 ...
- OO前三次作业总结
一.第一次作业 1.程序设计分析  图1 第一次作业类图  { #region 演示一:动态生成类. //生成一个类t. Type t = ClassHe ...
- lua保存table到文件并从文件解析成table
require("json") result = { ["ip"]="192.168.0.177", ["date"]= ...
- Collaborative Filtering(协同过滤)算法详解
基本思想 基于用户的协同过滤算法是通过用户的历史行为数据发现用户对商品或内容的喜欢(如商品购买,收藏,内容评论或分享),并对这些喜好进行度量和打分.根据不同用户对相同商品或内容的态度和偏好程度计算用户 ...
- $.ajax 中的contentType
$.ajax 中的contentType 在 cnodejs.org 论坛中有一个问题,让我也很奇怪,说是 $.ajax 设置数据类型 applicaiton/json之后,服务器端(express) ...
- js 过多 导致页面加载过慢
自己的代码检查了很久,才检查 出来 通常我们的网站里面会加载一些js代码,统计啊,google广告啊,百度同盟啊,阿里妈妈广告代码啊, 一堆,最后弄得页面加载速度很慢,很慢. 解决办法:换一个js包含 ...
- kubernetes进阶(05)kubernetes的命令
在Kubernetes中,Node.Pod.Replication Controller.Service等概念都可以看作一种资源对象,通过Kubernetes提供的Kubectl工具或者API调用进行 ...
- ssh整合之六管理我们的配置文件
1.我们的ssh搭建已经搭建好了,之前是纯xml方式,而且我们的配置文件,是一个框架一个配置文件.这样的话,配置文件中的内容就会很多,这样以后修改起来也会很麻烦,因 此,我们尝试着把这些 ...