团体程序设计天梯赛代码。体现代码技巧,比赛技巧。  https://github.com/congmingyige/cccc_code

 #include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std; #define ll long long
const int maxn=1e4+;
const int inf=1e9;
const double eps=1e-; struct node
{
int x,y;
}d1[maxn],d2[maxn],a[maxn]; ll cross(node c,node a,node b)
{
///两者相乘,也许大于int范围
return 1ll*(c.y-a.y)*(c.x-b.x) - 1ll*(c.x-a.x)*(c.y-b.y);
} bool cmp1(node a,node b)
{
ll v=cross(d1[],a,b);
if (v==)
return d1[].x-a.x<d1[].x-b.x;
return v<;
} bool cmp2(node a,node b)
{
ll v=cross(d2[],a,b);
if (v==)
return d2[].x-a.x<d2[].x-b.x;
return v>;
} /**
两者在v==0处无法统一
**/ int main()
{
int n,x,ymax,ymin,i,j,ind=,m;
double k,b;
d1[].x=inf;
scanf("%d",&n);
for (i=;i<=n;i++)
{
scanf("%d%d%d",&x,&ymax,&ymin);
d1[i]={x,ymax},d2[i]={x,ymin};
if (d1[i].x<d1[ind].x)
ind=i;
} if (n==)
{
printf("%d %d %d %d",-,ymax,,ymax);
return ;
} swap(d1[],d1[ind]);
sort(d1+,d1+n+,cmp1); ///注意是+2(对d1[2]~d1[n]排序)
m=;
for (i=;i<=n;i++)
{
while (m>= && cross(a[m],a[m-],d1[i])<=)
m--;
a[++m]=d1[i];
} for (i=;i<=m;i++)
{
if (a[i].x<a[i-].x)
break;
k=1.0*(a[i].y-a[i-].y)/(a[i].x-a[i-].x);
b=a[i].y-k*a[i].x;
for (j=;j<=n;j++)
if (k*d2[j].x+b<d2[j].y-eps)
break;
if (j==n+)
{
printf("%d %d %d %d",a[i].x,a[i].y,a[i-].x,a[i-].y);
return ;
}
} swap(d2[],d2[ind]);
sort(d2+,d2+n+,cmp2);
m=;
for (i=;i<=n;i++)
{
while (m>= && cross(a[m],a[m-],d2[i])>=)
m--;
a[++m]=d2[i];
}
for (i=;i<=m;i++)
{
if (a[i].x<a[i-].x)
break;
k=1.0*(a[i].y-a[i-].y)/(a[i].x-a[i-].x);
b=a[i].y-k*a[i].x;
for (j=;j<=n;j++)
if (k*d1[j].x+b>d1[j].y+eps)
break;
if (j==n+)
{
printf("%d %d %d %d",a[i].x,a[i].y,a[i-].x,a[i-].y);
return ;
}
} return ;
}
/*
4
-1 5 3
2 4 3
1 5 2
0 4 3
*/

团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明的更多相关文章

  1. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  2. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  3. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  4. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  6. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  7. 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)

    前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...

  8. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  9. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

随机推荐

  1. mysql 数据库的主从同步

    1.复制准备 操作系统 centOS 主库(mysql master):  ip为123.56.94.1   port为3306  mysql 版本 5.7.16 从库(mysql slave):   ...

  2. Python包的相对导入时出现问题解决

    资料参考: https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html 在python导入包,如下: from .units import * 经常 ...

  3. commons-lang

    今天在编码的过程中,对于null,采用==null进行判断.并且为了过滤"",使用了str.trim().length()==0,当str为null时,报空指针异常. 于是决定使用 ...

  4. Python——Label控件说明

    Anchor :   标签中文本的位置: background(bg)foreground(fg) :背景色:前景色: borderwidth(bd) :边框宽度: width  .height   ...

  5. excel 公式 insert 语句

    ="insert into tb_fdn_deviceaccount (zdmc,czmc,sbbh,sbmc,SZCS,SBFLMC,SBLXMC,SBGG,SBYZ,SBJZ,SBXH, ...

  6. Visual Studio for Mac中的ASP.NET Core

    所以你们都听到了#Build 2017的消息,Mac上的Visual Studio已经被完全发布,是一般的.为了庆祝这个版本,我将在我的Mac上写几篇关于构建一些不同的.net应用的帖子. 正如你已经 ...

  7. git 解决二进制文件冲突

    1.冲突的产生 当我们向远程git服务器提交某一个文件的修改时,恰巧这个文件相同的修改地方其他人也有修改,并且已经提交到服务器,这时冲突就产生了. 通常,当我们合并两个相同的地方都有修改的分支时,都会 ...

  8. FTP登录不上 显示“找不到元素”

    FTP登录不上 显示“找不到元素” 问题描述: 资源管理器登陆不上ftp服务器,ie现在打不开网页(包括普通的网页和ftp)360等其他浏览器可以正常打开网页. 解决方法: 应该是用了代理软件的问题, ...

  9. Spring 使用介绍(八)—— 零配置(一)

    一.概述 所谓零配置,并不是说一点配置都没有了,而是配置很少而已.通过约定来减少需要配置的数量,提高开发效率. 零配置实现主要有以下两种方式: 惯例优先原则:也称为约定大于配置(convention ...

  10. linux常用命令(个人总结)

    1.快捷键: ctrl + l           --------------------清屏 ctrl + c          --------------------退出当前命令 ctrl + ...