题目:

2010年风靡全球的“水果忍者”游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以完成游戏规定的任务。如果玩家可以一刀砍下画面当中一连串的水果,则会有额外的奖励,如图1所示。

图 1

现在假如你是“水果忍者”游戏的玩家,你要做的一件事情就是,将画面当中的水果一刀砍下。这个问题看上去有些复杂,让我们把问题简化一些。我们将游戏世界想象成一个二维的平面。游戏当中的每个水果被简化成一条一条的垂直于水平线的竖直线段。而一刀砍下我们也仅考虑成能否找到一条直线,使之可以穿过所有代表水果的线段。

图 2

如图2所示,其中绿色的垂直线段表示的就是一个一个的水果;灰色的虚线即表示穿过所有线段的某一条直线。可以从上图当中看出,对于这样一组线段的排列,我们是可以找到一刀切开所有水果的方案的。

另外,我们约定,如果某条直线恰好穿过了线段的端点也表示它砍中了这个线段所表示的水果。假如你是这样一个功能的开发者,你要如何来找到一条穿过它们的直线呢?

输入格式:
输入在第一行给出一个正整数N(≤104)N(≤10^4)N(≤104),表示水果的个数。随后N行,每行给出三个整数x、y1、y2x、y_1、y_2x、y1​、y2​​,其间以空格分隔,表示一条端点为(x,y1)(x,y_1)(x,y1​)和(x,y2)(x,y_2)(x,y2​)的水果,其中y1>y2y_1>y_2y1​>y2​。注意:给出的水果输入集合一定存在一条可以将其全部穿过的直线,不需考虑不存在的情况。坐标为区间 [−106,106)[−10^6 ,10^6 )[−106,106) 内的整数。

输出格式:

在一行中输出穿过所有线段的直线上具有整数坐标的任意两点p1(x1,y1)p_1(x_1,y_1)p1​(x1​,y1​)和p2(x2,y2)p_2(x_2,y_2 )p2​(x2​,y2​),格式为 x1y1x2y2x_1 y_1 x_2 y_2x1​y1​x2​y2​。注意:本题答案不唯一,由特殊裁判程序判定,但一定存在四个坐标全是整数的解。

输入样例:

5
-30 -52 -84
38 22 -49
-99 -22 -99
48 59 -18
-36 -50 -72

输出样例:

-99 -99 -30 -52

思路:

以每一条线段的最下面的端点去找斜率的范围,如果找到一个斜率可以切断所有线段则输出并返回。

代码:

#include<bits/stdc++.h>
using namespace std;
//使用double方便计算斜率
struct node{double x;double maxy;double miny;
}s[10005];
//所有线段从左向右排
bool cmp(node a,node b){return  a.x<=b.x;
}
const double inf=999999999;
int ansid;
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>s[i].x>>s[i].maxy>>s[i].miny;}sort(s+1,s+1+n,cmp);for(int i=1;i<=n;i++){//      最大最小斜率 double ansmaxk=inf;double ansmink=-inf;double maxk,mink;int j;for(j=1;j<=n;j++){if(i==j){continue;}
//          j在i左边 if(j>i){maxk=(s[j].maxy-s[i].miny)/(s[j].x-s[i].x);mink=(s[j].miny-s[i].miny)/(s[j].x-s[i].x);}
//          j在i右边 else{maxk=(s[i].miny-s[j].miny)/(s[i].x-s[j].x);mink=(s[i].miny-s[j].maxy)/(s[i].x-s[j].x);}
//          超出范围 if(mink>ansmaxk||maxk<ansmink){break;}
//          更新斜率,使用最大的方便输出 if(maxk<ansmaxk){ansmaxk=maxk;
//              记录答案在那个线段 ansid=j;}ansmink=max(mink,ansmink);}
//      所有线段都在范围内 if(j==n+1){printf("%.0lf %.0lf %.0lf %.0lf",s[i].x,s[i].miny,s[ansid].x,s[ansid].maxy);return 0;} }return 0;
}

L3-012 水果忍者相关推荐

  1. [unity3d]水果忍者-界面搭建

    今天开始用Unity3D做一下水果忍者的游戏,Keep study very day! 效果图: 实现步骤: 1.贴图的创建 , 这里的Pixel Inset中X,Y,Width,Height是贴图的 ...

  2. 2017级C语言大作业 - 水果忍者

    水果忍者 C语言作业 分享17级同学大一上学期用C语言实现的水果忍者.分步骤代码.图片音乐素材.可执行程序可从百度网盘下载: 链接:https://pan.baidu.com/s/1i-e_MVChl ...

  3. L3-012 水果忍者 (30 分)-PAT 团体程序设计天梯赛 GPLT

    2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以 ...

  4. 【CCCC】L3-012 水果忍者 (30分),,枚举斜率

    problem L3-012 水果忍者 (30分) 2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与 ...

  5. 水果忍者(数学 叉积)

    水果忍者 题目 2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免 ...

  6. 7-45 水果忍者 (30 point(s))

    2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以 ...

  7. 2013年10月i--q手机下载游戏水果忍者

    据悉,草案新增和修改的条目共68条,可概括为12个方面的增加.8个方面的完善.其中,进一步强化法律责任,加大对违法行为的惩处力度成为本次修改的一个重点.具体体现在法条中,则有引入"黑名单&q ...

  8. 全新设计 水果忍者-穿靴子的猫官方中文版首发

    2011年底一部动画片吸引了广大爱猫人士的眼球,那就是梦工厂推出的<穿靴子的猫>,这只桀骜不驯的猫咪在征服影视界的同时也成功进军游戏界,为众多手机游戏迷们带来了精彩刺激的最新游戏--< ...

  9. c语言编程水果忍者,少儿创意编程scratch初级游戏之一水果忍者

    可爱的小朋友们,可能你们都有玩过手机版的"水果忍者"游戏哦,不管答案是有还是没有玩过,那么你们觉得你可以编出这样子的游戏吗?今天小编姐姐很自信地告诉你哦,你也可以编出这么好玩的游戏 ...

  10. L3-012 水果忍者 (30 分)

    2010年风靡全球的"水果忍者"游戏,想必大家肯定都玩过吧?(没玩过也没关系啦~)在游戏当中,画面里会随机地弹射出一系列的水果与炸弹,玩家尽可能砍掉所有的水果而避免砍中炸弹,就可以 ...

最新文章

  1. 驳“永远不要对一个外行聊你的专业”【十全十美】
  2. 素数筛选-hdu2710
  3. 光流 | MATLAB实现HS Optical Flow(代码类)
  4. 浅学JavaScript
  5. web系统软件测试功能点,小程序、app、web测试的区别
  6. Ethereum 以太坊 交易数据 构建原理
  7. HDU1863 畅通工程【Kruskal算法+并查集】
  8. Flutter获取assets中的图像
  9. 关于微信小程序的视频的坑
  10. 无法显示jinglingzhoushou-2.0.4.AppImage
  11. android auto凯迪拉克,凯迪拉克支持Apple CarPlay及Android Auto
  12. 骑士人才系统替换短信接口
  13. 手机app测试点有哪些?手机app测试用例怎么写?错过绝对后悔!
  14. 用计算机生成图形的三种方式,2015年3月全国计算机一级考试PS模拟试题及答案(四)...
  15. 4-20mA电流光纤中继器的原理和应用
  16. Kubeenetes Dashboard admin-kubeconfig
  17. [GIS原理] 9.1 数字高程模型DEM-特征 | 分类 | 构建 | 数据结构 | 空间内插 | DEM的未来
  18. 红警游戏开源代码带给我们的震撼
  19. HTML表格和样式及选择器
  20. 中国石油大学(北京)-《安全与生活》在线考试

热门文章

  1. 数学建模--综合评价方法
  2. spec cpu 2017使用教程
  3. 史上最简单的Spring Security教程(二十八):CA登录与默认用户名密码登录共存详细实现及配置
  4. mysql timestamp类型格式转换
  5. linux下载百度命令行,Linux 命令行使用百度网盘上传下载文件
  6. 6.1. Inserting Data
  7. 七牛云上传图片和视频
  8. 做游戏,不加班行不行?
  9. Java 实现替换文件的指定内容
  10. 计算机实验报告word结果总结,计算机网络实验报告.doc