回复: 18
跳转到指定楼层
上一主题 下一主题
收起左侧

Quora OA 跪经 Changing Managers

🔗
匿名用户-PMB5I  2016-12-2 15:41:48 |倒序浏览

2016(10-12月) 码农类General 硕士 全职@ - 网上海投 - 在线笔试  | | Fail | 应届毕业生
题目名字叫Changing Managers
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
件。
哪个大神能给个解法?

本帖子中包含更多资源

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

评分

参与人数 1大米 +3 收起 理由
dobbin + 3 感谢分享!

查看全部评分


上一篇:FB面经+加面
下一篇:G 面经+加面
推荐
randrand1 2017-8-24 09:02:44 | 只看该作者
全局:
  1. #include <bits/stdc++.h>
  2. using namespace std;

  3. struct BIT{
  4.     vector<int> a;
  5.     int total;
  6.     BIT(int n): a(n+2,0),  total(0){}
  7.     void add(int k) {
  8.         int p1 = k + 1;
  9.         while(p1 < a.size()) {
  10.             a[p1] += 1;
  11.             p1 += (p1 & -p1);
  12.         }
  13.         total += 1;
  14.     }
  15.     int query(int k) {
  16.         // larger than k
  17.         k += 1;
  18.         int val = 0;
  19.         while(k > 0) {
  20.             val += a[k];
  21.             k -= (k & -k);
  22.         }
  23.         return total - val;
  24.     }
  25. };

  26. vector<int> bruteforce(vector<pair<int,  pair<int,  int> > > & data){
  27.     vector<int> res;
  28.     for(int i=0; i<data.size(); ++i) {
  29.         int c = 0;
  30.         for(int j=0; j<data.size(); ++j) {
  31.             if (i != j && data[j].first > data[i].first && data[j].second.first > data[i].second.first) c += 1;
  32.         }
  33.         res.push_back(c);
  34.     }
  35.     return res;
  36. }

  37. int main () {
  38.     int n; cin >> n;
  39.     vector<pair<int,  pair<int,  int> > > data;
  40.     int id = 0;
  41.     while(n --) {
  42.         int l1, l2;
  43.         cin >> l1 >> l2;
  44.         data.push_back({l1,  {l2,  id++}});
  45.     }
  46.     // auto bf_res = bruteforce(data);

  47.     sort(data.begin(),  data.end());

  48.     vector<int> res(data.size(),  0);
  49.     BIT bit(1000000);
  50.     for(int i=(int)data.size() - 1; i>=0; --i) {
  51.         int p1 = i;
  52.         while(p1 >= 0 && data[p1].first == data[i].first) --p1;
  53.         for(int j=p1+1; j<=i; ++j) {
  54.             int id = data[j].second.second;
  55.             int l2 = data[j].second.first;
  56.             res[id] = bit.query(l2);
  57.         }
  58.         for(int j=p1+1; j<=i; ++j) {
  59.             bit.add(data[j].second.first);
  60.         }
  61.         i = p1 + 1;
  62.     }
  63.     // cout << (bf_res  == res) << endl;
  64. }
复制代码
回复

使用道具 举报

推荐
carl7on 2017-9-25 12:21:50 | 只看该作者
全局:
橙小夕 发表于 2017-9-21 05:16
感觉就是俄罗斯套娃的解法,稍微变一下形,一个维度排序加BST搜另一个维度。(NlogN)复杂度

这个最后需要output 每个人最多能有几个mentor。感觉套娃解法不能解出来
回复

使用道具 举报

🔗
yuyahome 2016-12-2 16:30:25 | 只看该作者
全局:
naive的解法是O(N2), 需要做到O(NlogN)
回复

使用道具 举报

🔗
小雨嘀嗒 2016-12-4 06:52:00 | 只看该作者
全局:
楼主,我不是很懂N <= 5000的占50%是什么意思,N不应该是输入的amount吗?另外,L and E unique的占70%, 是指分别占70%还是两个合起来一起看占70% ?
回复

使用道具 举报

🔗
yuyahome 2016-12-4 08:40:05 | 只看该作者
全局:
小雨嘀嗒 发表于 2016-12-4 06:52
楼主,我不是很懂N

我的理解,它是在说明它提供的test集数据分布情况,可能要利用数据的这些特性,然而我并没有想出来。。。
回复

使用道具 举报

🔗
小雨嘀嗒 2016-12-5 12:05:06 | 只看该作者
全局:
yuyahome 发表于 2016-12-4 08:40
我的理解,它是在说明它提供的test集数据分布情况,可能要利用数据的这些特性,然而我并没有想出来。。。

我也没想出来。。。
回复

使用道具 举报

🔗
yuyahome 2016-12-6 19:52:18 | 只看该作者
全局:
小雨嘀嗒 发表于 2016-12-5 12:05
我也没想出来。。。

似乎和leetcode上的俄罗斯套娃题很像,你去看看。
回复

使用道具 举报

🔗
lsyfelicia 2017-8-17 05:31:25 | 只看该作者
全局:
竟然现在也收到一模一样的题,请问楼主现在知道如何解了吗?
回复

使用道具 举报

🔗
oscarlyz 2017-9-9 04:52:40 | 只看该作者
全局:
谢谢楼主贡献题目!
回复

使用道具 举报

🔗
kkk_interview 2017-9-17 00:12:21 | 只看该作者
全局:
为什么我这里 您所在的用户组无法下载或查看附件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表