2022-8-24 华为秋招笔试

这次主要简单讲一下前两题,具体题目记不清了,大家可以在网上找到。

T1

思路:(我刚开始想的是排序完求排序差分数组的前缀和,不过其实原理差不多) 前缀和(感觉跟那个接雨水有点像),双指针(l,r, (如果超过n,)),题目中给了一个例子,如 10,3,1 分给 8个

为10,10,1 ,最后还剩余1。有同学可能要问,10,3 + 3,5+1,可否行,嗯–,理论上可以,但是题目给的例子好像就是为了避免这种情况。如果这样的话,或许可以转背包问题,但是题目n有点大超过1e6,做背包也不明智,那就双指针吧qvq。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e4 + 10;
int arr[maxn];
int m,n;int main(){ios::sync_with_stdio(false);cin >> m;for(int i = 0; i <m;i++) cin >>arr[i];sort(arr,arr+m); //方便形成从低到高,简化前缀计算难度cin >>n;int cost =0;int maxlen =0,ret = INT32_MAX;for(int l = 0,r = 0; r < m;r++){if(r==0) cost = 0;else cost += (arr[r] - arr[r-1])*(r-l); //while(l<=r && cost >= n){cost -= (arr[r] - arr[l++]); // 去掉l的贡献}if(r - l +1 >= maxlen && ret >= n - cost){ // 尽可能两个都满足吧maxlen = r - l + 1;ret = n - cost;}}cout << maxlen <<" " << ret << endl;return 0;
}

T2

思路:二分图+网络流解决最大独立集问题,很显然,如果直接做是一个NP问题,如果转为二分图,奇数连奇数边,偶数连接偶数边,同时我们把产生矛盾的边addedge() 也就是加到网络流中,最后我们用满足条件的点-Dinic()就可以得到最大独立集。嗯–,不过在加边之前,我们要以0 为出发点,判断周围是否有1,如果上下左右有1,那么直接continue;

因为题目中说1的上下左右不可放点。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 25;
int n, m;
#define inf (1<<29)int Arr[maxn][maxn],Brr[maxn][maxn];
int cnt;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};bool check(int x, int y)
{for (int i = 0; i < 4; i++){int X = x + dx[i], Y = y + dy[i];if (X < 0 || X >= n || Y < 0 || Y >= m){continue;}if (Arr[X][Y])return false;}return true;
}class Solution
{int tot, head[600];struct Edge{int to, net, v;} E[10010];void addedge(int x, int y, int v){E[++tot].to = y;E[tot].net = head[x];head[x] = tot;E[tot].v = v;E[++tot].to = x;E[tot].net = head[y];head[y] = tot;E[tot].v = 0;}int S, T, Q[600], depth[600];int getp(int x, int y){return x * m + y + 1;}bool bfs(){for (int i = S; i <= T; ++i)depth[i] = -1;int L = 0, R = 1;Q[1] = S;depth[S] = 0;while (L < R){int x = Q[++L];for (int i = head[x]; i; i = E[i].net)if (E[i].v > 0 && depth[E[i].to] == -1){depth[E[i].to] = depth[x] + 1;Q[++R] = E[i].to;}}return depth[T] != -1;}int dfs(int x, int flow){if (x == T || !flow)return flow;int w = 0;for (int i = head[x]; i; i = E[i].net)if (E[i].v > 0 && depth[E[i].to] == depth[x] + 1){int v = dfs(E[i].to, min(flow - w, E[i].v));E[i].v -= v;E[i ^ 1].v += v;w += v;}if (!w)depth[x] = -1;return w;}int Dinic(){int sum = 0;while (bfs())sum += dfs(S, inf);return sum;}public:// void add(int x, int y)// {//     // Solution t;//     for (int i = 0; i < 4; i++)//     {//         int xx = x + dx[i];//         int yy = y + dy[i];//         if (xx >= 0 && xx < n && yy < m && yy >= 0 && Arr[x][y] == 1)//         {//             addedge((x - 1) * n + y, (xx - 1) * n + yy, inf);//         }//     }// }int maxStudents(){tot = 1;S = 0;T = n * m + 1;for (int i = 0; i < n; ++i){for (int j = 0; j < m; ++j){if (Arr[i][j] == 0) // 相当于提前把 1 盘走了{// 接着再判断四周有没有障碍物,相当于根据0来选择1if (!check(i, j)){continue;}++cnt;int x = i * m + j + 1;if (j & 1)addedge(S, x, 1);elseaddedge(x, T, 1);if (j && Arr[i][j - 1] == 0){if (j & 1)addedge(x, getp(i, j - 1), 1);elseaddedge(getp(i, j - 1), x, 1);}if (i && Arr[i - 1][j] == 1){if (j & 1)addedge(x, getp(i - 1, j), 1);elseaddedge(getp(i - 1, j), x, 1);}}}}// int sum = Dinic();// cout << cnt << " " << sum << endl;return cnt - Dinic();}
};int main()
{ios::sync_with_stdio(false);cin >> n >> m;memset(Arr, 0, sizeof Arr);// vector<vector<int>> vec(n, vector<int>(m, 0));cnt = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){cin >> Arr[i][j];}}Solution S;int res = S.maxStudents();cout << res << endl;return 0;
}/*
2 4
1 0 0 0
0 0 0 14 6
1 0 0 0 0 1
0 0 0 0 0 0
0 1 0 0 0 1
0 0 0 0 0 0
*/

2022-8-24 华为秋招笔试相关推荐

  1. 2022.8.20 科大讯飞秋招笔试

    问题1 汉宁窗 题目描述:汉宁窗公式为HanWin=0.5*(1-cos(2*PI*n/N)),N为窗口长度,0<=n<N,PI=3.1415927: 对任意长度为N的双字节整数序列x(n ...

  2. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(1)2022 紫光展锐(上)

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2022 紫光展锐秋招笔试题目.答案.解析& ...

  3. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(2)2021 华为海思(上)

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2021 华为海思秋招笔试题目.答案.解析& ...

  4. 数字 IC 设计、FPGA 设计秋招笔试题目、答案、解析(3)2022 大疆创新数字芯片 B 卷

    引言 最近收到诸多粉丝的来信,要求出一版<数字 IC 设计.FPGA 设计秋招笔试题精讲>,于是,通过几天几夜的加班加点,终于出了这一版<2022 大疆创新秋招笔试题目.答案.解析& ...

  5. 春招秋招笔试面试时间(2020年)

    春招面试笔试时间 序号 公司 投简历时间 春招笔试面试时间 1 腾讯 2020.3.10 3.17一面(微信) 3.20一面(网盘) 4.7 PCG的研发部 4.12光子侧开一面 4.18光子侧开二面 ...

  6. 华为秋招机试三道编程题(2021-09-01)

    通知:华为.阿里最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在微信公众号[TechGuide]了,私信公众号回复[华为]或者[阿里]即可获得最实时.最详细的笔试题解啦! 通知:华为.阿里 ...

  7. 快手2020校园招聘秋招笔试--算法C试卷 练习 解题报告 Apare_xzc

    快手2020校园招聘秋招笔试–算法C试卷 解题报告 Apare_xzc 2020/4/10 网页链接:牛客链接 题型分布: 选择题(2分/道*20道)         编程题(15分/道*4道) 选择 ...

  8. 百度秋招笔试三道编程题(2021-09-07)

    通知:最新的秋招笔试编程题题目.思路以及参考代码已经全部整理好放在[TechGuide]了,私信公众号回复[美团]或者[百度]即可获得最实时的笔试题解啦! 通知:最新的秋招笔试编程题题目.思路以及参考 ...

  9. 【笔试题】京东2017秋招笔试真题

    笔试题 京东2017秋招笔试真题 1.进制均值 时间限制 C/C++语言 1000MS;其他语言 3000MS 内存限制 C/C++语言 65536KB;其他语言 589824KB 题目描述 尽管是一 ...

最新文章

  1. 你应该将应用迁移到Spring 4的五个原因
  2. Ubuntu 14.04下 Redis MongoDB安装及使用
  3. sklearn学习(二)
  4. 先来先服务调度算法(C++实现)
  5. (WPF, MVVM) Event 处理
  6. DOS命令大全 收藏
  7. 【渝粤教育】电大中专消费者心理学答案作业 题库
  8. hdu 6086 -- Rikka with String(AC自动机 + 状压DP)
  9. mysql 投票总排行_MySQL投票表,查找每个用户对条目的最新投票,并根据值进行计数...
  10. VC程序中运行其他程序的三种方法
  11. 实例分割模型Mask R-CNN详解——从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN
  12. 使用Mac终端设置alias常用别名,以git提交为例
  13. STM8单片机通过PWM触发ADC同步采样
  14. 总有阳光照射不见的地方
  15. 互联网黑产剖析——虚假号码
  16. PHP完全自学手册01.pdf
  17. spring boot 报 http 406多种原因问题解决的总结
  18. GIS招聘 | 辽宁省省直事业单位(含测绘、地信等专业岗位)
  19. Google员工的工作环境
  20. Natural_Earth 全球地形渲染图 Version 3.2

热门文章

  1. 介绍c语言的英语论文,c语言中英文翻译资料毕业论文.doc
  2. 教你轻松通过微软正版windows验证
  3. 大众点评 数据爬取 (字体反爬)
  4. 前端工程师接单网站有没有介绍?
  5. python手写答题卡识别_基于 Python OpenCV 的简易答题卡识别
  6. C语言复习:三个循环定义及形式
  7. squirrel语言探索
  8. 2023考研辅导机构:考研复试调剂十大问题答疑
  9. CentOS7修改内核安装锐速
  10. matlab 蜡烛图 颜色,Matplotlib图facecolor(背景颜色)