PayPal2019春招实习生笔试题的某一题
题目简单描述:给你n个点的坐标(x, y),均为浮点数。
如果任意两个点之间的欧几里得距离小于给定的一个浮点值,则认为这两个点之间有关联,并且关联具有传递性,总之就是尽可能扩大一个集合。
输入:
d 欧式距离
n 用户数
接下来每个用户的坐标。
2.0
5
3.0 5.0
6.0 13.0
2.0 6.0
7.0 12.0
0.0 2.0
输出:
[[0, 2], [1, 3], [4]]
实现:并查集的应用
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <set>
#include <algorithm>
#include <vector> using namespace std; struct node
{
double x, y;
}cur; int fa[10000]; double disE(node A, node B)
{
return ( fabs(A.x - B.x)*fabs(A.x - B.x) + fabs(A.y-B.y)*fabs(A.y-B.y) );
} int findset(int x)
{
return fa[x]!=x ? fa[x] = findset(fa[x]) : x;
} int main()
{
double dis;
int n;
scanf("%lf", &dis);
scanf("%d", &n); vector<node>q;
double a, b; for(int i=0; i<n; i++) {
scanf("%lf %lf", &a, &b);
cur.x = a;
cur.y = b;
q.push_back(cur);
}
for(int i=0; i<n; i++) {
fa[i] = i;
} dis = dis * dis;
for(int i=0; i<q.size(); i++) {
for(int j=0; j<q.size(); j++) {
if(disE(q[i], q[j]) <= dis) {
// fa[findset(j)] = findset(i);
int xx = findset(i);
int yy = findset(j);
if(xx == yy)
continue;
else if(xx < yy)
fa[yy] = xx;
else if(xx > yy)
fa[xx] = yy;
}
}
} for(int i=0; i<n; i++) {
if(fa[i] != i)
fa[i] = findset(fa[i]);
} printf("[");
bool first=true; for(int i=0; i<n; i++) {
if(fa[i] == i) {
if(first == false)
printf(", ");
first = false;
printf("[");
printf("%d", i);
for(int j=i+1; j<n; j++) {
if(fa[j] == i)
printf(", %d", j);
}
printf("]");
}
}
printf("]\n");
return 0;
}
时间限制:2秒
空间限制:49152K
弹幕是现今网络视频常见的评论方式,能够反映一个视频的火爆程度。假设某个时间一共有N条弹幕,每条弹幕i的持续时间为两个整数表示的时间区间(a[i],b[i]),我们定义弹幕数量最多的一个时间段为最精彩时段,求一个视频的最精彩时段。
输入描述:
第一行整数N,代表弹幕的条数,其中90%的 N < 1000000, 60%的N < 10000
第二行到第N+1行,是两个整数(a[i],b[i]),代表每条弹幕的开始时间和结束时间, 请注意(a[i],b[i])是全开区间, 并且a[i], b[i] < 100
输出描述:
M行,每行两个整数(c,d),M是答案个数,(c,d)代表视频最精彩时段的开始时间和结束时间,并且M个答案区间互不重叠。答案请按照开始时间从小到大输出。请注意每行结尾应包含换行符,包括最后一行。
输入输出的样例参见牛客网的题目
通过的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <set>
#include <algorithm>
#include <vector> using namespace std;
int f[1000001];
set<int>bound;
int main()
{
int n;
scanf("%d", &n);
memset(f, 0, sizeof(f));
while(n--) {
int a, b;
scanf("%d %d", &a, &b);
bound.insert(a);
bound.insert(b);
for(int i=a+1; i<=b; i++)
f[i]++;
}
int big = 0;
for(int i=0; i<100; i++) {
if(f[i] > big)
big = f[i];
}
int left, right;
for(int i=1; i<100; i++) {
if(f[i] == big) {
left = i-1;
int j=i;
while(f[j] == big && bound.find(j) == bound.end()) {
j++;
}
right = j;
// printf("***\n");
printf("%d %d\n", left, right);
i=j;
}
}
return 0;
}
PayPal2019春招实习生笔试题的某一题的更多相关文章
- [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】
/*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...
- ACM_招新笔试题系列——买包子
招新笔试题系列——买包子 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小华刚到大学,一天早上她替她室友买早餐,一共要N个包子. ...
- C++笔试题2(基础题)
温馨提醒:此文续<C++笔试题(基础题)> (112)请写出下列程序的输出内容 代码如下: #include <iostream> using namespace std; c ...
- SQLServer 常见SQL笔试题之语句操作题详解
SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...
- 阿里巴巴2013年实习生笔试题B
阿里巴巴集团2013实习生招聘技术类笔试题(B) 一.单向选择题 1.在常用的网络协议中,___B__是面向连接的.有重传功能的协议. A. IP B. TCP C. UDP D. DXP 2.500 ...
- 京东AI平台 春招实习生面试--NLP(offer)
给offer了 开心.春招第一个offer!!! 2018.4.11 update 1面: 只有1面, 面试官还是个老乡.. 1.自我介绍 如何学的AI相关的知识? 2.介绍百度的实习 3.拿到一个问 ...
- 诺基亚(Microsoft Devices Group)2014暑期实习生笔试题知识点
总结一下Microsoft Devices Group的软件类笔试题,全部笔试题分两份试卷,逻辑题一份和软件測试题一份,仅仅总结技术题喽~题目全英文,仅仅包括选择题和填空题.选择题居多.分单选和多选. ...
- XDTIC2019招新笔试题 + 官方解答
腾讯创新俱乐部2019年招新笔试试题 [1] 小宗学长正在努力学习数论,他写下了一个奇怪的算式: \[ 2019^{2018^{2017^{\dots^{2^1}}}} \] 算式的结果一定很大, ...
- js作用域之常见笔试题,运行结果题
笔试题中经常有运行结果题,而大多体型都是围绕作用域展开,下面总结了几种相关的题: 外层的变量函数内部可以找到,函数内部的变量(局部变量)外层找不到. function aaa() { var a = ...
随机推荐
- 20165330 2017-2018-2 《Java程序设计》第2周学习总结
课本知识总结 第二章 基本数据类型与数组 标识符:标识类名.变量名.方法名.类型名.数组名及文件名的有效字符序列. 标识符的第一个字符不能是数字字符,且字母区分大小写. Java语言使用Unicode ...
- 剑指Offer——数字在排序数组中出现的次数
题目描述: 统计一个数字在排序数组中出现的次数. 分析: 二分变形.二分查找最左边和最右边k的位置,然后相减加一就是结果. 代码: class Solution { public: int GetNu ...
- 使用Standford coreNLP进行中文命名实体识别
因为工作需要,调研了一下Stanford coreNLP的命名实体识别功能. Stanford CoreNLP是一个比较厉害的自然语言处理工具,很多模型都是基于深度学习方法训练得到的. 先附上其官网链 ...
- 详解C++中命名空间的意义和用法
看过鸡啄米的C++编程入门系列教程的朋友,应该能注意到,在其中的很多实例中,都有这么一条语句:using namespace std;,即使用命名空间std,其作用就是规定该文件中使用的标准库函数都是 ...
- 【转载】ARM MMU详解
一.MMU的产生 许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以 ...
- R语言 dbWriteTable 写入数据库 为空和乱码问题
在windows环境下 用RMySQL 写入数据库中文数据为空 或者乱码问题. 找了下资料 一般情况是 用 insert 语句插入,结合现有业务有点麻烦,放弃了. 还有一种方式换平台,由于经常在win ...
- 创建正真的Java不可变类
如果需要设计一个不可变类,尤其要注意其引用类型Field,如果其引用类型Field的类是可变的,就必须采取必要的措施来保护该Field所引用的对象不会被修改,这样才能创建真正的不可变类. class ...
- Android Studio Tips
1. 可以通过ctrl+shift+a,然后输入reformat,就能看到对应的快捷键. 如果记不得快捷键了,都可以通过ctrl+shift+a来查找. 2. [Androidstudio]的坑之[@ ...
- 编辑器——sublime
在这里只介绍自己经常使用的编辑器sublime 第一:安装node插件[出处:http://www.bubuko.com/infodetail-798008.html] 1.下载Nodejs插件,下载 ...
- undefined reference to `__sync_bool_compare_and_swap_4
然后开始glibc的编译工作. 你必须设定march这个参数才行,要不然会出现“undefined reference to `__sync_bool_compare_and_swap_4′.”这个错 ...