POJ 1755 Triathlon 判断不等式有解+半平面的交

Cadence Design Entry HDL 使用教程 Cadence Design Entry HDL 使用教程 前言 cadence Design Entry HDL是cadence内部集成的一款板级的EDA设计工具,早期叫 concept HDL。其为cadence最早的原配板级电路图绘制工具,只不过由于后来cadence收购了orcad然后就将旗下的capture CIS收入其中,由于后者使用起来上手简单,所以后者更为大家所熟知。虽然大家对... 阅读详情

题目描述:http://poj.org/problem?id=1755

解题思路:

假设一个队员的各项速度为(v1,v2,v3),每项的距离为(x, y, z),那么她完成比赛的时间t = x/v1 + y/v2 + z/v3。

一名选手可以获得第一,当且仅当对于其他任意一名选手(v1', v2', v3'), t<t'有解。

即  x/v1+y/v2+z/v3 < x/v1'+y/v2'+z/v3' -> (1/v1-1/v1') x + (1/v2-1/v2') y + (1/v3-1/v3') z < 0 有解。

这个方程确定了一个三维半空间,因为x,y,z>0,所以左边除以z可以降到二维,就成为了一个半平面。

对于第i个选手,其余n-1个选手所确定的半平面如果有解则证明这名选手可以获得第一。

其他还有一些需要注意的地方。

1. 已知两点,求这两点确定的直线与给定方程的直线的交点。假设交点(x,y),因为(x1,y1)(x,y)(x2,y2)在同一直线上,利用叉乘可以列出一个方程。又因为(x,y)在给定直线方程上,联立可以解出(x, y)。

2. 看了discuss才知道eps要开到1e-16,不然一直WA..

3. 当两名队员的v1 v2 v3相等时,他们都不可能成为唯一的第一名,这一点需要特判。

<span style="font-family:Microsoft YaHei;font-size:14px;">/*
 * 2014.11.22
 * Problem: 1755	
 * Memory: 204K		Time: 0MS
 * Language: C++	Result: Accepted
 *
 */ 
#include "iostream"
#include "cmath"
#define EPS 1e-16 //!
#define MAXN 107
#define INF 1e10
#define zero(a) (fabs(a)<EPS)

struct Point {
	double x, y;
	Point(){}
	Point(double _x, double _y):x(_x),y(_y){}
};

struct Equation {
	double a, b, c;
	Equation(){}
	Equation(double _a, double _b, double _c):a(_a),b(_b),c(_c){}
}a[MAXN];

int n;

void init() {
	scanf("%d", &n);
	double v1, v2, v3;
	for (int i=1; i<=n; i++) {
		scanf("%lf %lf %lf", &v1, &v2, &v3);
		a[i].a = v1; a[i].b = v2; a[i].c = v3;
	}
}

double cross(Point a, Point b, Point c) {
	double x1 = b.x-a.x, y1 = b.y-a.y, x2 = c.x-a.x, y2 = c.y-a.y;
	return x1*y2 - x2*y1;
}

double area(Point p[], int pn) {
	double a = 0;
	for (int i=2; i<pn; i++) a += cross(p[1], p[i], p[i+1]);
	return a;
}

Point intersect(Point p1, Point p2, double a, double b, double c) {
	double d = p2.y-p1.y, e = p1.x-p2.x, f = p1.x*p2.y - p2.x*p1.y;
	c = -c;
	return Point((c*e-b*f)/(a*e-b*d), (c*d-a*f)/(b*d-a*e));
}

bool cut(Point c[], int &cn, double A, double B, double C) { // &cn!!
	Point t[MAXN];
	int tn = 0;
	for (int i=1; i<=cn; i++) {
		if (A*c[i].x+B*c[i].y+C<EPS) t[++tn] = c[i];
		else {
			if (A*c[i-1].x+B*c[i-1].y+C<-EPS) t[++tn] = intersect(c[i], c[i-1], A, B, C);
			if (A*c[i+1].x+B*c[i+1].y+C<-EPS) t[++tn] = intersect(c[i], c[i+1], A, B, C);
		}
	}
	if (zero(area(t, tn))) return false;
	for (int i=1; i<=tn; i++) c[i] = t[i];
	c[0] = c[cn=tn]; c[cn+1] = c[1];
	return true; 
}

bool planeIntersect(Equation e[], int n) {
	Point c[MAXN];
	int cn;
	c[1] = Point(EPS, EPS); c[2] = Point(EPS, INF); c[3] = Point(INF, INF); c[4] = Point(INF, EPS);
	cn = 4; c[0] = c[cn]; c[cn+1] = c[1];
	for (int i=1; i<=n; i++) {
		if (zero(e[i].a)&&zero(e[i].b)&&zero(e[i].c)) return false;
		if (!cut(c, cn, e[i].a, e[i].b, e[i].c)) return false;
	}
	return true;
}

int main() {
	init();
	Equation ln[MAXN];
	int lnn;
	for (int i=1; i<=n; i++) {
		lnn = 0;
		for (int j=1; j<=n; j++) 
			if (i!=j) ln[++lnn] = Equation((a[j].a-a[i].a)/(a[i].a*a[j].a),
			                               (a[j].b-a[i].b)/(a[i].b*a[j].b), 
			                               (a[j].c-a[i].c)/(a[i].c*a[j].c));
		if (planeIntersect(ln, lnn)) {
			printf("Yes\n");
		} else {
			printf("No\n");
		}
	}

	return 0;
}
	</span>


基于Transformer模型实现交通流量时序预测(PyTorch版) Transformer模型,作为一种基于自注意力机制的深度学习模型,最初在自然语言处理领域取得了突破性进展,其出色的长距离依赖关系捕捉能力使其在处理时序数据时也表现出色。将Transformer模型应用于交通流量时序预测,可以充分利用其优势,实现对交通流量更加精准、高效的预测。 阅读详情

相关推荐

在树莓派5(8G版)上运行Ollama + LLM

直接上结论,Ollama在树莓派上能安装,且本身运行起来毫无压力,但具体到大语言模型,Deepseek似乎不总是最佳选择。

ki1381的专栏 1649

poj1755 半平面交解不等式组

题目链接:http://poj.org/problem?id=1755 题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi;  对每个人判断,通过改变3项比赛的路程,是否能让该人获胜(严格获胜)。 思路:题目实际上是给出了n个式子方程,Ti  = Ai * x + Bi * y + Ci * z , 0           要判断第i个人能否获胜,即判断不等式组   Tj

5874

【vLLM-性能洞察】基于Ascend Profiler的端到端推理瓶颈定位与优化实践

本文详细介绍了如何利用Ascend Profiler对vLLM-Ascend大模型推理服务进行端到端的性能瓶颈定位与优化。通过实战案例,阐述了从数据采集、可视化分析到诊断低效算子、内存管理、计算通信重叠及框架调度等常见瓶颈的全过程,为基于昇腾NPU的AI推理性能调优提供了系统性的方法论和实用工具指南。

cc789的博客 519

poj 1755 Triathlon(半平面交解不等式)

n个人参加铁人三项的比赛,给出他们每一项的速度u,v,w,裁判可以决定每一项的距离,问是否存在一种安排,使得这个人能够赢。 对于每个人,如果存在安排的方法就输出Yes,没有就输出No。 这里可以假设三段路程分别为x,y,z,则有:t = x/u+y/v+z/w,这里可以把其中一段路程看成是1,假设把z看作1,则t=x/u+y/v+1/w,如果第一个人要赢,则t1-ti0,x/ui+y/vi+1

893

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 715

工业数据采集实战:用open62541库读写PLC的OPC UA节点(避坑指南)

本文详细介绍了如何使用open62541库实现工业PLC的OPC UA节点数据采集,涵盖环境搭建、节点读写优化及生产环境故障排查。通过订阅模式和多节点读写技术,显著提升数据采集效率与稳定性,适用于智能制造和工业物联网场景。

weixin_30598225的博客 399

poj 1755 (半平面交解不等式)

转自http://blog.youkuaiyun.com/non_cease/article/details/7820361 题目链接:http://poj.org/problem?id=1755 题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi;  对每个人判断,通过改变3项比赛的路程,是否能让该人获胜(严格获胜)。 思路:题目实际上是给出了n个式子方程,Ti  =

K键盘里的青春K 853

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1264

Poj 1755 Triathlon (半平面交求可行域)

题目链接:http://poj.org/problem?id=1755 题意:有n个人参加三个赛段的比赛,三段总长一定,对于第i个人其在每一个赛段的速度分别为Vi,Ui,Wi,你作为一个裁判可以随意调整三个赛段的距离(都大于0),问是否能调整使得指定的选手获胜(不能并列)。 思路:设三个赛段的长度分别为a,b,c,则对第i人;用时分别为a/Vi,b/Ui,c/Wi,总时间Ti,获得冠军等价于对

whyorwhnt的专栏 1035

小程序设计中的区块链应用:数字藏品实现

本文旨在为开发者提供在小程序中实现区块链数字藏品功能的完整技术方案。区块链与数字藏品的基础概念智能合约的设计与实现小程序与区块链的交互方式数字藏品的完整实现流程文章将从基础概念入手,逐步深入到技术实现层面,最后通过完整项目案例展示数字藏品在小程序中的实现方式。每个技术点都会配合代码示例和架构图进行说明。区块链:一种分布式数据库技术,通过加密算法保证数据不可篡改数字藏品:基于区块链技术的数字资产,具有唯一性和可验证性NFT。

小程序开发 1350

C# 动态壁纸实战:7步带你从零开始制作动态壁纸

动态壁纸是指在计算机桌面上播放视频、动画或交互式内容的一种技术。与传统的静态壁纸相比,动态壁纸更加生动有趣,可以大大提升桌面的观赏性和互动性。通过本文的详细讲解和代码示例,相信你已经学会了如何使用C#实现动态壁纸。动态壁纸不仅能够提升桌面的美观度,还能展示你的编程技能。希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!🌟✨如果你有任何问题或建议,欢迎在评论区留言交流!希望这篇教程对你有所帮助,期待你在C#编程中取得更大的成就!😊✨😊✨。

java专栏 1673

【LA2218】【POJ1755】 Triathlon(半平面交)

Description 铁人三项有333段:游泳、自行车和赛跑,给出每个选手每个项目的速度vi,uiwivi,uiwiv_i,u_iw_i,每个项目的长度不确定,求每个人是否有可能获得冠军。 Solution 非常巧妙的一道题。 设总长度为111,游泳长度为xxx,自行车长度为yyy,那么iii强于jjj的条件是: xvi+yui+1−x−ywi&lt;xvj+yuj+1−x−ywjxv...

დ♂Hany01's Blog Space♂ღ 372

手把手教程 | 使用 apktool 修改已发布 APK 的版本号与版本名称

摘要:本文介绍如何使用apktool工具直接修改APK版本信息,适用于版本回滚、多版本测试等场景。详细步骤包括反编译APK、修改版本号、重打包、对齐优化和重新签名,并分享了反编译相关实用知识。该方法无需源代码参与,但需注意修改后的APK必须重新签名才能安装。最后强调应在合法范围内使用反编译技术。

学无止境 825

POJ 1755 Triathlon I

题目链接:http://poj.org/problem?id=1755 题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi;  对每个人判断,通过改变3项比赛的路程,是否能让该人获胜(严格获胜)。 思路:题目实际上是给出了n个式子方程,Ti  = Ai * x + Bi * y + Ci * z , 0           要判断第i个人能否获胜,即判断不等式组

狮子淡泊名利 332

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

POJ 1755 Triathlon (计算几何+半平面交解决线性规划)

Triathlon is an athletic contest consisting of three consecutive sections that should be completed as fast as possible as a whole. The first section is swimming, the second section is riding bicycle a

baidu_35522092的博客 652

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

POJ 1755 Triathlon(半平面交)

题目链接:http://poj.org/problem?id=1755 题意:一段距离总长度为L,将L分成三部分a,b和c(a、b、c均大于0)。有N(1 &lt;= N &lt;= 100) 个人,第i个人在这三段中的速度分别是Vi,Ui和Wi(1 &lt;= Vi, Ui, Wi &lt;= 10000) 。问是否存在一种分法,使得第i个人可以成为冠军(并列冠军不算,也就是只有i一个人是冠军...

weixin_33697898的博客 135

poj1755 Triathlon 半平面交

题目链接:http://poj.org/problem?id=1755 题目意思:给出N个运动员的游泳,骑车,跑步的三个速度u,v,w,问对于每一个运动员可不可以在比赛中获得第一名。 解题思路:刚开始一看到这题根本不懂要干什么,最后才知道要求半平面交。 令总路程为S,三个运动的路程的比例为X :Y : 1-X-Y;要在比赛中获胜的条件是在相同路程下的时间用得最短。对于运动员i与另外的运动员j

三思 1104

[好题][半平面交][线性规划]Triathlon POJ1755

Triathlon is an athletic contest consisting of three consecutive sections that should be completed as fast as possible as a whole. The first section is swimming, the second section is riding bicycle and the third one is running. The speed of each contestan

Cloth的博客 251

POJ 1755 Triathlon 半平面交

看的这里:http://blog.youkuaiyun.com/non_cease/article/details/7820361 题意:铁人三项比赛,给出n个人进行每一项的速度vi, ui, wi;  对每个人判断,通过改变3项比赛的路程,是否能让该人获胜(严格获胜)。 思路:题目实际上是给出了n个式子方程,Ti  = Ai * x + Bi * y + Ci * z , 0      

水 1496

poj 1755 Triathlon 半平面交判断不等式是否有解

http://poj.org/problem?id=1755 有一个全能运动必有要求运动员完成游泳、骑自行车、跑步,三个项目。冠军为最快完成所有项目的运动员。已知每个运动员的三项速度分别为Vi, Ui, Wi 。裁判能够任意的设置三个项目的路程。问对某个运动员能否设定一个让他必羸的路程设置。 当构造一个a,b,c的距离,使得t = a/u + b/v + c/w 时间最小,就可以了 那...

weixin_30483013的博客 90

Poj 1755Triathlon 未Ac,先mark

地址:http://poj.org/problem?id=1755 题目: Triathlon Time Limit:1000MS Memory Limit:10000K Total Submissions:6931 Accepted:1797 Description Triathlon is an ath...

weixin_30307267的博客 129

BZOJ 3800 Saber VS Lancer/POJ 1755 Triathlon 半平面交

题目大意:有n个人进行铁人三项比赛,对于这三种运动,每个人都有一个固定的速度,但是每种运动的长度是多少并不知道。现在问裁判可不可以通过调整这三项运动的长度来使某一个人赢得比赛。 思路:考虑现在我们想让一个人赢的时候,这个人的三个速度分别为v1,v2,v3,想让所有人都输给他,设某一个人的三个速度是v1',v2',v3'。设三项的比赛的长度为l1,l2,l3。那么不难得到如下方程:l1 /

(╯°口°)╯(┴—┴ 1210

POJ - 1755 Triathlon【半平面交】

Triathlon is an athletic contest consisting of three consecutive sections that should be completed as fast as possible as a whole. The first section is swimming, the second section is riding bicycle a...

slass-mot-odet 443

poj 1755 Triathlon(半平面解线性规划)

这个题刚开始写的时候出了一个xi

577

poj 1755 Triathlon 半平面交求不等式的 是否为空集-------构造有向直线

题目来源: http://poj.org/problem?id=1755 分析: 设比赛总长度为 1, 其中游泳长度为x, 自行车长度为y, 赛跑长度为 1 - x - y, 则选手 i 打败 选手j (不能并列) 的条件是 x / v[i] + y / u[i] + (1 - x - y) / w[i] < x / v[j] + y / u[j] + (1 - x - y) /...

weixin_34283445的博客 145

POJ 1755 Triathlon (半平面交)

Triathlon Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4733   Accepted: 1166 Description Triathlon is an athletic contest consisting of three consec...

weixin_34258078的博客 96
上一篇: POJ 3525 Most Distant Point from the Sea 二分+内推+半平面交
下一篇: POJ 3348 Cows 求凸包面积
f_cpp
博客等级 码龄12年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值