阿里编程测验,好难

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <deque>
#include <cassert>
#include <map>
#include <algorithm>

using namespace std;

class Interval
{
public:
explicit Interval(size_t left, size_t right)
: mLeft(left),
mRight(right)
{
assert(left <= right);
}

size_t left() const
{
return mLeft;
}

size_t right() const
{
return mRight;
}

private:
size_t mLeft;
size_t mRight;
};

inline bool operator<(const Interval& a, const Interval& b)
{
return a.right() < b.left();
}

class TwoInterval
{
public:
explicit TwoInterval(const Interval& left, const Interval& right)
: mLeft(left),
mRight(right)
{
assert(left < right);
}

const Interval& left() const
{
return mLeft;
}

const Interval& right() const
{
return mRight;
}

private:
Interval mLeft;
Interval mRight;
};

inline bool within(const TwoInterval& a, const TwoInterval& b)
{
return b.left() < a.left() && a.right() < b.right();
}

void input(vector<TwoInterval>& twos)
{
int m = 0;
{
string s;
getline(cin, s);
istringstream is(s);
is >> m;
}
for(int i = 0; i < m; ++i) {
string s;
getline(cin, s);
istringstream is(s);
size_t a, b, c, d;
is >> a >> b >> c >> d;
Interval left(a, b);
Interval right(c, d);
twos.emplace_back(left, right);
}
}

// ====== 填入你自己的逻辑 ========

int intussusception(vector<TwoInterval>&)
{
}

// ====== 结束 ========

int main() {
vector<TwoInterval> twos;
input(twos);

cout << intussusception(twos) << endl;

return 0;
}

#阿里巴巴#
全部评论
// ====== 填入你自己的逻辑 ======== /////********************************///// /* 看了大家的回复,才知道自己漏看了题目,后来想了想,现将思路贴出来,供大家交流 具体见我的博客:http://blog.csdn.net/bxw1992/article/details/74534157 目的:最多可以取出多少个能够组成嵌套集 思路: 如果存在一个子嵌套集,而新增加的一个二段模式与子嵌套集的某个二段模式冲突(不相互嵌套),它虽然不能加入该嵌套子集, 但是它却可以和该子集中不冲突的其他二段模式组成子集,所以很难处理。因此,从这个角度来思考,太过于复杂。 从上面的思路中我们可以得到一些有用的结论:针对存在的一个子嵌套集,新的二段模式的加入,可以生成新的子嵌套集,也就 是造成分支;进一步我们可以认为,一个二段模式最多可以生成一个分支,而且一个分支主要是因为某个二段模式与其他嵌套集 冲突造成的,也就是一个二段模式可以对应一个嵌套集;N个二段模式最多组成N个独立的嵌套集。 算法流程: 1、初始N个嵌套集,分别包含编号0~N-1二段模式 2、针对某个二段模式,遍历查看是否可以满足加入嵌套集的条件(两两相互嵌套,而且该二段模式之前不存在)    满足的话,将其加入 3、找出最大的嵌套集 */ /////********************************///// inline bool operator==(const Interval& a, const Interval& b) { return (a.right() == b.right()) && (a.left() == b.left()); } inline bool operator==(const TwoInterval& a, const TwoInterval& b) { return (a.right() == b.right()) && (a.left() == b.left()); } bool confl(const TwoInterval& a, const TwoInterval& b) { if (!(within(a, b) || within(b, a))) return true; if (a == b) return true; return false; } bool add(vector<TwoInterval> &a, TwoInterval b) { for (TwoInterval ti : a) { if (confl(ti,b)) { return false; } } a.push_back(b); return true; } int intussusception(vector<TwoInterval>& two2) { int len = two2.size(); if (len < 2) return len; int max = 0; vector<vector<TwoInterval> > res(len); for (int i = 0; i < len; i++) { res[i].push_back(two2[i]); } for (int i = 0; i < len; i++) { for (int j = 0; j < len; j++) { add(res[j], two2[i]); } } for (int i = 0; i < len; i++) { if (res[i].size()>max) { max = res[i].size(); } } return max; } // ====== 结束 ========
点赞 回复 分享
发布于 2017-07-06 13:04
其实大多数人被这道题目的概念唬住了; 二段式: 其实就是区间呗 嵌套集合:就是里面的所有区间两两之间都存在包含关系。 题目要求:求能够包含最多区间数目的嵌套结合!
点赞 回复 分享
发布于 2018-07-19 10:46
题目好像不完整啊,能否提供下完整的题目
点赞 回复 分享
发布于 2017-07-06 09:14
【求救】机器学习笔试题_技术交流_牛客网  https://www.nowcoder.com/discuss/87027
点赞 回复 分享
发布于 2018-07-19 14:05
你参加过实习的招聘没?
点赞 回复 分享
发布于 2017-07-06 09:59
lz这道题怎么答的?
点赞 回复 分享
发布于 2017-07-06 09:14
lz面试的什么岗位
点赞 回复 分享
发布于 2017-07-05 22:18
测验没过还有面试机会吗?
点赞 回复 分享
发布于 2017-07-05 21:47
这题让干嘛?
点赞 回复 分享
发布于 2017-07-05 21:08

相关推荐

05-16 16:39
已编辑
门头沟学院 Java
2025.5.14&nbsp;40min面试官介绍部门非常详细,lazada东南亚最大电商平台主要是结合项目问八股,也有项目中某些细节的具体实现,和数据库表的设计面试官很好,在问的过程中,一边在记录面评,面试中学到了很多。虽然也有些没答上来,或者没答到位,但是比阿里云的体验好多了。面试官先介绍实习招聘的流程,说Bravo102实习生招聘是统一面试的,最后拿到offer,会让同学自己选择想去的部门,双向选择。第一个没让自我介绍的公司1.&nbsp;Redis的过期删除策略2.&nbsp;具体的过期删除算法有哪些,绕了好久,最后发现他想问的是内存淘汰策越(LRU、LFU、随机删)3.&nbsp;Spring拦截器用到了吗,拦截器的底层原理4.&nbsp;拦截器和过滤器的区别5.&nbsp;Kafka怎么保证消息不丢失6.&nbsp;项目中Kafka具体怎么使用的7.&nbsp;消息异常,没有发出去该怎么解决8.&nbsp;重试具体是怎么做的,循环吗9.&nbsp;重试多次失败,怎么办,抛出异常吗10.&nbsp;消息一直没发出去是什么原因,分析一下11.&nbsp;SQL怎么优化的12.&nbsp;怎么判断是慢查询的13.&nbsp;怎么设计一个好的数据库14.&nbsp;说说项目的数据库表是怎么设计的,可以说字段、索引、外键等一些设计15.&nbsp;主键怎么设计的,普通递增,分布式中可以用雪花算法16.&nbsp;除了雪花算法和UUID,还有什么可以让主键不重复17.&nbsp;问具体的字段用什么类型设计的,比如用户名18.&nbsp;什么时候用到了JOIN19.&nbsp;left&nbsp;join、right&nbsp;join和outer&nbsp;join20.&nbsp;加密算法有哪些,什么区别21.&nbsp;项目中用到哪些Spring特性22.&nbsp;简单说说AOP是什么23.&nbsp;动态代理,有的基于接口,有的不基于接口,具体说说什么区别24.&nbsp;项目中哪些地方用到了AOP25.&nbsp;说一下设计模式,以及知道哪些常用的设计模式,项目中怎么用到设计模式的26.&nbsp;模版模式了解吗27.&nbsp;说说Spring中事务传播级别有哪些28.&nbsp;两个方法嵌套调用,A调用B,A发生异常时事务传播机制怎么设置,B发生异常时事务传播机制怎么设置29.&nbsp;Redis和数据库怎么保证数据一致性30.&nbsp;SpringCache了解吗31.&nbsp;说说线程池32.&nbsp;核心线程数根据什么设置33.&nbsp;说说Synchronized34.&nbsp;Synchronized&nbsp;和volatile&nbsp;的区别35.&nbsp;项目中或者哪些场景下用到volatile反问(虽然是东南亚平台,但是做技术的不需要国外出差,非常详细的介绍部门和业务大概有5分多钟)最后对问的问题也进行了总结,说可以钻研深入些,还有多看看源码。对于他问的问题,每个问题可以多说一点(比如说慢查询优化,可以从怎么选择存储引擎,项目数据量是多少,每个表怎么设计的,索引怎么设计,这些方面都可以说),不用等着他来问。关于分库分表,也要考虑表的规模。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务