阿里8.19笔试

ak了,但是因为代码不能用本地IDE,所以没有AC的代码,赛后凭记忆写了一个,只展示思路,不保证交了能AC。

第一题

给你n个数,你现在可以选两个数,把他们变成他们的平均值,问是否能让这些所有数的乘积变成偶数

找规律,显然有偶数肯定可以,然后就是mod 4等于1和3都出现就行。

#include <bits/stdc++.h>
using namespace std;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  bool flag = false;
  int tmp[4] = {0};
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    if (x % 2 == 0)
      flag = true;
    else
      tmp[x % 4]++;
  }
  if (!flag) flag = (tmp[1] && tmp[3]);
  puts(flag ? "Yes" : "No");
  return 0;
}

第二题

两个数组a和b,都是无重复元素,现在你可以把b里的元素,按照任意顺序放在a的开头或者结尾,问最大值的下标和最小值的下标差的绝对值最大是多少

暴力,显然只和b数组的最大最小值位置有关,把所有情况枚举出来就行了。

#include <bits/stdc++.h>

#include <algorithm>
using namespace std;
#define all(x) x.begin(), x.end()
int cal(vector<int> v) {
  return abs(max_element(all(v)) - min_element(all(v)));
}
vector<int> operator+(vector<int> a, vector<int> b) {
  a.insert(a.end(), all(b));
  return a;
}
int main() {
  int n, m;
  cin >> n >> m;
  vector<int> a(n);
  vector<int> b(m);
  for (auto &x : a) cin >> x;
  for (auto &x : b) cin >> x;
  sort(all(b));
  auto rb = b;
  reverse(all(rb));
  int ans = 0;
  for (auto &t : {b, rb}) {
    ans = max(ans, cal(a + b));
    ans = max(ans, cal(b + a));
    ans = max(ans, cal(vector<int>{t[0]} + a + vector<int>(t.begin() + 1, t.end())));
    ans = max(ans, cal(vector<int>{t.back()} + a + vector<int>(t.begin(), --t.end())));
    ans = max(ans, cal(vector<int>(t.begin(), --t.end()) + a + vector<int>{t.back()}));
    ans = max(ans, cal(vector<int>(t.begin() + 1, t.end()) + a + vector<int>{t[0]}));
  }
  cout << ans;
  return 0;
}

第三题

有n个点,每个时间每个点分别向上下左右扩展出4个点,原来的点不变,问多久才能所有点构成一个联通块

二分答案,然后每次check的时候两两判断两个矩形是否相交。因为不会计算几何,也没有线段交的板子,所以猜了个结论,感觉是他们曼哈顿距离小于等于时间的两倍,懒得证明,反正我过了

#include <bits/stdc++.h>
using namespace std;
using point = array<int, 2>;
class dsu {
 public:
  vector<int> fa;
  dsu(int n) {
    fa.resize(n);
    iota(fa.begin(), fa.end(), 0);
  }
  int find(int x) { return fa[x] == x ? x : (fa[x] = find(fa[x])); }
  void join(int a, int b) { fa[find(a)] = find(b); }
  int count() {
    set<int> se;
    for (int i = 0; i < fa.size(); i++) se.insert(find(i));
    return se.size();
  }
};
int main() {
  int n;
  cin >> n;
  vector<point> v(n);
  for (auto &x : v) cin >> x[0] >> x[1];
  int l = 0, r = 1e9;
  auto meet = [&](int i, int j, int t) {
    return abs(v[i][0] - v[j][0]) + abs(v[i][1] - v[j][1]) <= 2 * t;
  };
  auto check = [&](int t) {
    dsu d(n);
    for (int i = 0; i < n; i++) {
      for (int j = i + 1; j < n; j++) {
        if (meet(i, j, t)) d.join(i, j);
      }
    }
    return d.count() == 1;
  };
  while (l < r) {
    if (l + 1 == r) {
      if (check(l))
        r--;
      else
        l++;
      break;
    }
    int mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  cout << l;
  return 0;
}

#阿里巴巴信息集散地#
全部评论
佬,问问阿里笔试是双机位吗
1 回复 分享
发布于 2023-09-01 19:09 浙江
请问第一题为什么模4呀?是什么结论吗?
1 回复 分享
发布于 2023-08-19 21:08 加拿大
阿里哪个部门
点赞 回复 分享
发布于 2023-08-21 13:43 湖南
是acm佬吗
点赞 回复 分享
发布于 2023-08-20 16:40 湖北
奇怪,我也是二分➕并查集,超时只有16.67%
点赞 回复 分享
发布于 2023-08-19 21:46 北京
第三题思路一样,样例和自己写的用例也过了,但是0%,想不明白啊但凡给个没过的用例让我看看为什么错都行
点赞 回复 分享
发布于 2023-08-19 21:40 北京

相关推荐

牛客48784610...:深圳的变成录用进行中,这个是稳了吗,还没有收到邮件
点赞 评论 收藏
分享
头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3&nbsp;投递、测评3.12&nbsp;笔试3.18&nbsp;一面3.25&nbsp;二面4.13&nbsp;ai面(hr面)4.14&nbsp;英语测评4.23&nbsp;offer(已拒)腾讯:2.6&nbsp;测评2.28&nbsp;wxg一面3.5&nbsp;wxg二面(挂)3.11&nbsp;teg一面3.21&nbsp;teg二面(取消)3.31&nbsp;teg一面4.10&nbsp;teg二面(挂)4.21&nbsp;wxg一面4.24&nbsp;wxg二面(挂)字节:1.28&nbsp;aml约面(取消)3.17&nbsp;火山一面(挂)4.8&nbsp;aml一面(挂)4.20&nbsp;抖音data一面(挂)阿里:3.23&nbsp;投递、测评3.28&nbsp;笔试3.31&nbsp;淘天一面4.8&nbsp;钉钉一面4.9&nbsp;淘天二面4.10&nbsp;阿里控股一面4.12&nbsp;钉钉二面(取消)4.15&nbsp;淘天hr面4.16&nbsp;淘天offer(已接)4.21&nbsp;高德一面(取消)4.22&nbsp;淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm&nbsp;api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
紫炁:一样的感受,现在很混乱尤其业务侧开发和算法界限模糊,不知道秋招投哪个方向了
我的求职进度条
点赞 评论 收藏
分享
评论
9
41
分享

创作者周榜

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