首页 > 其他分享 >CF593B Anton and Lines 题解

CF593B Anton and Lines 题解

时间:2024-12-20 16:30:56浏览次数:3  
标签:直线 le int 题解 交点 Lines Anton x2 x1

Tag:数学

题目描述

【题面大意】
给定 \(n\) 条形如 \(y=k_ix+b_i\) 的直线,你需要判断是否存在两条直线 \(a,b\),使 \(a,b\) 的交点 \((x_0,y_0)\) 满足 \(x_1<x_0<x_2\)。

【数据规模与约定】

\(1\le n\le 10^5\),\(-10^6\le x_1,x_2,k_i,b_i\le 10^6\)。

数据保证对于每两条直线 \(i,j(i\ne j)\),都有 \(k_i\ne k_j\) 或 \(b_i\ne b_j\)。

思路

这道题我们直接求两条直线有没有交点是行不通的,我们不妨把目光聚焦在 \(x1\) 和 \(x2\) 上。

令直线 1 与 \(y=x1\) 和 \(y=x2\) 的交点的横坐标为 \(x2\) 和 \(x3\),直线 2 与 \(y=x1\) 和 \(y=x2\) 的交点的横坐标为 \(x4\) 和 \(x5\)。

若 \(x2>x4\) 且 \(x3>x5\) 两直线平行,
若 \(x2<x4\) 且 \(x3<x5\) 两直线也平行。

换句话说只要 \(x2\) 和 \(x3\) 的大小关系和 \(x4\) 和 \(x5\) 的大小关系不同,则两直线必有横坐标在 \((x1,x2)\) 的交点。

所以我们把每一条直线与 \(y=x1\) 和 \(y=x2\) 的交点的横坐标算出来,随便按照一个排序,判断另一个是不是逆序的就好了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
struct st{
	double x1,x2;
}a[100005];
int x1,x2;
bool cmp(st a,st b)
{
	if(a.x1==b.x1) return a.x2<b.x2;
	return a.x1<b.x1;
}
signed main()
{
//	freopen("1.in","r",stdin);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	cin>>x1>>x2;
	for(int i=1;i<=n;i++)
	{
		double k,b;
		cin>>k>>b;
		a[i].x1=k*x1+b;
		a[i].x2=k*x2+b;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<n;i++)
	{
		if(a[i].x2>a[i+1].x2)
		{
			cout<<"YES\n";
			return 0;
		}
	}
	cout<<"NO\n";
	return 0;
}

标签:直线,le,int,题解,交点,Lines,Anton,x2,x1
From: https://www.cnblogs.com/yaaaaaan/p/18619539

相关文章

  • [JOISC2019] 聚会 题解
    随机化好题,但是不会证。考虑把树看成一条链,链的每个点上缀了一棵树。那么先随机出两个点\(x,y\)(实际上随机一个点,另一个点固定似乎更好?),然后对于当前这棵树上的任意点\(z\),都让他进行一次询问,答案为\(o=Q(x,y,z)\)。那么当\(o=z\)时,显然\(z\)在链上,否则\(z\)在\(o\)......
  • scrapy中pipelines文件封装用sqlalchemy写入mysql数据库
    #前提必须安装 pymysql  sqlalchemy  scrapy#scrapy的piplines文件中fromsqlalchemyimportcreate_engine,text,insertimportpymysqlfromscrapy.utils.projectimportget_project_settingsclassMySQLPipeline:defopen_spider(self,spider):settings=......
  • 博弈论+ybt题解
    NIM游戏及其证明题目描述即为T1,不多赘述有向图游戏及SG函数而对于由\(n\)个有向图游戏组成的组合游戏,设它们的起点分别为\(S_1,S_2,\ldots,S_n\),则有定理:当且仅当\(\text{SG}(s_1)\oplus\text{SG}(s_2)\oplus\ldots\oplus\text{SG}(s_n)\neq0\)时,这个游戏是先手......
  • (自用)[USACO2023-JAN-Bronze] T1 LEADERS 题解
    题目描述农夫约翰有\(N(2≤N≤10^5)\)头奶牛,每一头奶牛的品种是更赛牛G或荷斯坦牛H中的一种。每一头奶牛都有一个名单,第\(i\)头奶牛的名单上记录了从第\(i\)头奶牛(即自己)到第\(E_i(i≤E_i≤N)\)头奶牛的连续所有奶牛。每一种奶牛都有且仅有一位“领导者”,对于某一头牛......
  • [CF494D] Birthday 题解
    首先\(S(u)\)显然是\(u\)的子树。假如\(u\)是定点,问题转化为区间求平方和,十分简单。于是我们用线段树维护区间平方和,支持区间加,然后离线问题,在\(u\)的位置处理即可。线段树从\(fa\)转移到\(u\)是极度简单的。时间复杂度\(O(n\logn)\)。#include<bits/stdc++.h>......
  • Luogu P10838 『FLA - I』庭中有奇树 题解 [ 绿 ] [ 二分 ] [ 双指针 ] [ 树 ]
    庭中有奇树:很多算法揉在一起的好题。转化题意因为要封锁\(m\)条路径,根据贪心思想,他一定会封锁最短的\(m\)条路径。所以我们能走的最短传送路径就是最短的第\(m+1\)条路径。这应该是本题最关键的一步转化了,几个月前降智了根本没想到这个。做法求第\(m+1\)短的路径,这个......
  • 组合数学+ybt题解
    加法原理乘法原理排列数从\(n\)个数中任取\(m\)个元素的排列的方案数,表示为\(A^m_n=\frac{n!}{(n-m)!}\)\(0!=1\)全排列\(A^n_n\)组合数从\(n\)个元素中取出\(m\)个元素的组合的个数,表示为\(\dbinom{n}{m}=\frac{A^m_n}{m!}=\frac{n!}{m!(n-m)!}\)如何理解呢?......
  • P3316 [SDOI2014] 里面还是外面 题解
    实现有些傻瓜,喜提时空双最劣解。首先要判断一个点是否在多边形内,一个比较好的方法是从这个点向上引一条射线,若和奇数条边相交就在多边形内,否则在多边形外。二维信息,考虑用树套树维护。把多边形的每一条边都扔到它\(x\)坐标范围的线段树节点里,即线段树节点\((l,r)\)里面维护......
  • 洛谷 P11337 「COI 2019」IZLET 题解
    如果每条边连接的两个点颜色都不相同,那么可以使用如下策略确定每个点的颜色:令\(c_{i,j}\)为\(i\)到\(j\)的路径上的颜色数。对于每个点\(u\),以其为根进行一次dfs,往下找直到找到一个和它颜色相同的或者一个叶子就回溯,如果遇到颜色相同的就将它们在并查集上合并。考虑如何......
  • [Yandex Cup 2024 Qual F] Zeroth Rome 题解
    前言Englishversionofthiseditorialisprovidedafterthesamplecode.题意简述本题为交互题,你需要猜\(t\)个\([0,2024]\)间的非负整数\(x_1,x_2,\ldots,x_t\),可以询问最多\(15\)次,每次询问形如“给定一个大小为\(N(1\leN\le2025)\)的集合\(S\)满足\(S\)......