9.14 360笔试
一、前言
360的笔试还是很自由的,笔试时间下午3点到晚上8点之间任选2个小时做题就可以了。40道选择 + 2道编程题秋招陆陆续续也做了10多场笔试了,360是唯数不多ak的。
许愿可以进面😭
二、题解
1、传染病防控
题目描述:已知n人中有一人高危险可以传染,每个人用坐标(x, y)表示,两个人距离(|x1 - x2| + |y1 - y2|)不大于k表示有可能互相传染,求最多可能被传染的人数。样例输入
5 2 8 6 1 5 1 4 4 3 4 6
样例输出
3
知识点: 并查集
#include<bits/stdc++.h> using namespace std; /*#define int long long*/ #define endl '\n' #define P pair<int, int> #define x first #define y second const int maxl = 1e3 + 7; struct node { int x; int y; }; int n; int k; node a[maxl]; int ans; int fa[maxl], cnt[maxl]; int find(int u) { if (u != fa[u]) fa[u] = find(fa[u]); return fa[u]; } void solve() { cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i].x, fa[i] = i, cnt[i] = 1; for (int i = 1; i <= n; i++) cin >> a[i].y; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { int u = find(i); int v = find(j); int d = abs(a[i].x - a[j].x) + abs(a[i].y - a[j].y); if (u == v || d > k) continue; cnt[u] += cnt[v]; fa[v] = u; } } for (int i = 1; i <= n; i++) ans = max(ans, cnt[i]); cout << ans << endl; } signed main(){ ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int t = 1; /*cin >> t;*/ while(t--) solve(); return 0; }
2、奇妙的约分
题目描述:给t组数据,问分数a能不能通过分子分母去掉相同的数,得到对应的分数b,可以保留前导零样例输入
114514/1919810 1454/91980 114514/1919810 454/9980 114514/1919810 114514/1919810 21/42 1/2
样例输出
Yes Yes Yes No
知识点: 思维题
判断分子分母用掉的数是否相同
#include<bits/stdc++.h> using namespace std; /*#define int long long*/ #define endl '\n' #define P pair<int, int> #define x first #define y second const int maxl = 1e6 + 7; string s1, s2; int a1[maxl],a2[maxl], b1[maxl], b2[maxl]; bool flag; char ch; void solve() { memset(a1, 0, sizeof a1); memset(b1, 0, sizeof b1); memset(a2, 0, sizeof a2); memset(b2, 0, sizeof b2); flag = 0; cin >> s1 >> s2; for (char ch : s1) { if (ch == '/') flag = 1; if (!flag) a1[ch - '0']++; else a2[ch - '0']++; } flag = 0; for (char ch : s2) { if (ch == '/') flag = 1; if (!flag) b1[ch - '0']++; else b2[ch - '0']++; } for (int i = 1; i <= 9; i++) { if (a1[i] - b1[i] == a2[i] - b2[i]) continue; cout << "No" << endl; return; } cout << "Yes" << endl; } signed main(){ ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); int t = 1; cin >> t; while(t--) solve(); return 0; }