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. ubuntu开机启动管理
  2. 330+ 个机器学习模型/库探索工具!Papers With Code 重磅推出!
  3. xcode 4.5 new feature __ ios6 新特性 (转)
  4. Java——递归遍历目录【获取指定目录下的文件名称】
  5. 阶段总结:8.09-8.18 十日模拟
  6. hutool 自定义excel_Hutool Java 工具类库导出 Excel,超级简单!
  7. 如何查看电脑显卡配置_组装电脑:电脑配置显卡推荐
  8. 北工大计算机网络基础期末考试,2013北工大计算机网络应用复习提纲整理版.doc...
  9. jQuery----各版本
  10. 用AUTOCAD建模的篮球
  11. shell之for循环的3个简单脚本
  12. 如何用python画长方形_python opencv 画矩形跟老齐学Python之用Python计算
  13. 容量耦合系数模型_使用Fluent电芯仿真模型进行结构设计优缺点分析
  14. web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)
  15. CentOS 6.7下 Samba服务器的搭建与配置(share共享模式)
  16. app毕业设计 基于uni-app框架的电影院订票选座app毕设题目课题选题作品(2)后台管理功能
  17. matlab射击小游戏,Matlab射箭小游戏设计,小虾米求救
  18. 《画解数据结构》三十张彩图,画解二叉搜索树
  19. EOS区块链技术开发(二)智能合约
  20. 国内10个千年古镇 绝美春色洗涤你的眼

热门文章

  1. 投稿到掘金的文章为什么不通过?
  2. 如何在互联网以最快速度赚够十万?
  3. 服务器被入侵怎么办?看我操作!
  4. 在微信小程序中,如果自动通过fastadmin来获取用户所在的省市地区?
  5. RateLimiter google限流组件试析(SmoothBursty/SmoothWarmingUp)
  6. 大航海时代5服务器维护,大航海时代5经验获取心得以及进度状况讲解
  7. hdu 5544 Ba Gua Zhen
  8. 联想有linux系统下载地址,联想有了自己的Linux操作系统?
  9. 全球各个国家或者地区的GIS矢量数据下载方式
  10. JavaEE——网络原理_应用层