时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描写叙述

小王近期在开发一种新的游戏引擎,可是近期遇到了性能瓶颈。于是他打算从最主要的画线功能開始分析优化。

画线事实上就是调用一次drawline命令。依据给出的两端坐标,在屏幕画出相应的线段。可是小王发现,非常多的drawline事实上能够合并在一起,譬例如以下图中的线段(2,3)-(4,5)和线段(3,4)-(6,7),事实上能够合并为一次drawline命令,直接画出线段(2,3)-(6,7)。

当然有些线段是无法合并的,如线段(-3,8)-(1,8)和线段(3,8)-(6,8)。就必须调用两次drawline命令。

画线示意图。注意颜色仅仅是用于区分。实际线段都是黑色

给出N条drawline指令以及相应的线段坐标,小王想知道,实际最少用多少次drawline指令就能够画出来。

小王想先从最简单的情况開始分析优化,所以线段仅仅包括四种情况:水平线段,垂直线段以及正反45度的线段。

输入

每一个输入数据包括多个測试点。

第一行为測试点的个数 S ≤ 10。

之后是 个測试点的数据。

每一个測试点的第一行为 N(≤ 105)。

之后是 行,每行包括4个整数:x0y0x1y1,表示线段(x0,y0)-(x1,y1),坐标的范围在[-108, 108]。保证线段的长度大于0。

输出

对于每一个測试点,相应的结果输出一行,表示最少用多少次指令就可以完毕全部的画线。

例子输入

2
4
3 8 6 8
-3 8 1 8
2 3 4 5
3 4 6 7
5
1 1 2 2
2 2 3 3
3 3 4 2
4 2 5 1
1 0 100 0

例子输出

3

3

#include <stdio.h>
#include <stdlib.h>int main()
{int num;int count,k;int i,j;long **pos;int x1,x2,y1,y2;int a1,b1,a2,b2;scanf("%d",&num);while(num--){scanf("%d",&k);count = k;//initizepos=(long**)malloc(k*sizeof(long*));for(i=0;i<k;i++){pos[i]=(long*)malloc(sizeof(long)*7);}for(i=0;i<k;i++){for(j=0;j<7;j++)pos[i][j]=37;}//inputfor(i=0;i<k;i++){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);pos[i][0] = x1;pos[i][1] = y1;pos[i][2] = x2;pos[i][3] = y2;if(x1==x2){pos[i][6] = x1;}else{pos[i][4] = (y1-y2) / (x1-x2);pos[i][5] = y1 - pos[i][4]*x1;}}//dealfor(i=0;i<k;i++){for(j=i+1;j<k;j++){//斜率不存在情况a1 = pos[i][4];b1 = pos[i][5];a2 = pos[j][4];b2 = pos[j][5];if(a1==a2 && a1==37){if(pos[i][3]>=pos[j][1] && pos[j][3]>=pos[i][1])count--;}else if(a1==a2 && b1==b2 && pos[i][6]==37){if(pos[i][2]>=pos[j][0] && pos[j][2]>=pos[i][0])count--;}}}printf("%d\n",count);//freefor(i=0;i<k;i++)free(pos[i]);free(pos);}return 0;
}

转载于:https://www.cnblogs.com/clnchanpin/p/7219812.html

网易互娱2017实习生招聘在线笔试第一场-3划线相关推荐

  1. 网易互娱2017实习生招聘在线笔试第一场-2源代码编译

    http://hihocoder.com/contest/ntest2016spring1/problem/2 拓扑排序 处理一下字符串 没什么好说的.. 时间限制:10000ms 单点时限:1000 ...

  2. 网易互娱2017实习生招聘在线笔试第一场-题目3

    题目3 : 画线 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈.于是他打算从最基本的画线功能开始分析优化.画线其 ...

  3. 网易互娱2017实习生招聘在线笔试第一场-1电子数字

    http://hihocoder.com/contest/ntest2016spring1/problem/1 时间限制:10000ms 单点时限:1000ms 内存限制:256MB  描述  电子数 ...

  4. 网易互娱2017实习生招聘在线笔试第一场-电子数字

    题目1 : 电子数字 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 电子数字在生活中很常见,而许多的电子数字是由LED数码管制作而成.数字LED数码管一般由7个发光二极 ...

  5. 网易互娱2017实习生招聘在线笔试第一场 题目1 : 电子数字

    http://hihocoder.com/contest/ntest2016spring1/problem/1 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 电子数字在 ...

  6. 网易互娱2017实习生招聘在线笔试(二)

    题目2 : 源代码编译 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在网易游戏的日常工作中,C++ 是一门常用的语言.面对众多的 C++ 代码,等待源文件编译的漫长时 ...

  7. 网易互娱2017实习生招聘在线笔试--源代码编译

    描述 在网易游戏的日常工作中,C++ 是一门常用的语言.面对众多的 C++ 代码,等待源文件编译的漫长时间是个令人糟心的时刻,一直以来大家对此怨声载道.终于有一天,大家找到了你,一位优秀的程序员,请你 ...

  8. 网易互娱2017实习生招聘在线笔试(三)

    题目3 : 画线 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小王最近在开发一种新的游戏引擎,但是最近遇到了性能瓶颈.于是他打算从最基本的画线功能开始分析优化.画线其 ...

  9. 网易互娱2017实习生招聘在线笔试(一)

    题目1 : 电子数字 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 电子数字在生活中很常见,而许多的电子数字是由LED数码管制作而成.数字LED数码管一般由7个发光二极 ...

最新文章

  1. 宏基因组学揭示海洋微生物及其病毒的生态学
  2. 有三AI 1000问回归,备战秋招,更多,更快,更好,等你来战!
  3. 本地windows主机无法访问虚拟机里主机解决办法
  4. 邻接表的两种实现(链表和数组模拟)
  5. 计算机原理课程设计 第二版pdf,计算机组成原理课程设计二.pdf
  6. oracle 10g perl,perl中访问oracle10g入门
  7. VC++2010开发数字图像系统1
  8. VS2017下载地址和安装教程(图解)
  9. 国家制图标准适用于手工制图和计算机制图,机械制图国家标准与计算机绘图
  10. 数据结构与算法基本概念
  11. 10bit视频是什么?
  12. PythonTip挑战题(16-25)
  13. 用计算机做路由器,用笔记本做无线路由(笔记本电脑当无线路由器用怎么设置)...
  14. easyexcel解析zip包加密excel文件
  15. memcmp用法实现
  16. 微信公众平台接入机器人小黄鸡
  17. python3:urllib/urllib2
  18. UN-ESD静电二极管对静电防护的作用原理
  19. 关于用c++写心理测试是有分支就行的事(这次是哈利波特分院帽)
  20. iview render函数(vue render函数)

热门文章

  1. python for循环求1到100的和_python如何计算1到100的和(用for循环)
  2. 如何用Word编辑参考文献(转)
  3. 数字人民币专利数激增, “区块链”领域大有可为
  4. Android Studio学习#2
  5. Archiving 时遇到的错误
  6. 成功需要培养独特的眼光,芸赞通天下沈杨
  7. 深度学习分析--TextCNN算法原理及分类实现
  8. 谱聚类(Spectral Clustering)算法介绍
  9. 21天学习之二(Android 10.0 SystemUI默认去掉底部导航栏的三种方法)
  10. 关于Java八种原始数据类型