拼多多2021校招2020.9.1笔试题 T2 and T4
T1简单没套路,T3 a不完。。所以只有T2和T4
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
/*** 第二题* 给定一个m*n的由0 1组成的矩阵。每个1代表一个士兵* 上下左右相连的兵可以组成一个团* 现在可以移动一个士兵的位置,可以把他从任何位置移动到任何另一个位置* 问,能组成的最大团的士兵数。* 样例
4 4
1 0 1 1
1 1 0 1
0 0 0 0
1 1 1 18** 这题是考bfs的。。。利用bfs将士兵组成团,然后对于每个团进行编号。* 在没有士兵位置的地方,计算临近四个位置所在的团的人数之和。就是将士兵移到这个位置所组成的最大团的人数。* 如果人数和最大团相同,那么这个士兵就是从这几个团中移到这里的,否则就是从其他团移到这里,这时就要加1构成最大值。***记住不能胡乱粘贴。。。因不注意修改条件直接复制粘贴导致结果总是1 。。。debug到笔试结束,痛苦。。。*/
public class T2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();Node arr[][] = new Node[n][m];boolean use[][] = new boolean[n][m];int num1 = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {arr[i][j] = new Node(i, j, sc.nextInt());if (arr[i][j].data == 1) {num1++;}}}int zln = 1;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (arr[i][j].data == 1 && use[i][j] == false) {Queue<Node> q = new LinkedList<Node>();q.add(arr[i][j]);use[i][j] = true;while (!q.isEmpty()) {Node te = q.poll();te.zl = zln;if (te.i - 1 >= 0 && !use[te.i - 1][te.j] && arr[te.i - 1][te.j].data == 1) {q.add(arr[te.i - 1][te.j]);use[te.i - 1][te.j] = true;}if (te.i + 1 < n && !use[te.i + 1][te.j] && arr[te.i + 1][te.j].data == 1) {q.add(arr[te.i + 1][te.j]);use[te.i + 1][te.j] = true;}if (te.j - 1 >= 0 && !use[te.i][te.j - 1] && arr[te.i][te.j - 1].data == 1) {q.add(arr[te.i][te.j - 1]);use[te.i][te.j - 1] = true;}if (te.j + 1 < m && !use[te.i][te.j + 1] && arr[te.i][te.j + 1].data == 1) {q.add(arr[te.i][te.j + 1]);use[te.i][te.j + 1] = true;}}zln++;}}}int ans[] = new int[zln];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (arr[i][j].data != 0)ans[arr[i][j].zl]++;}}int out = 0;HashSet<Integer> hs = new HashSet<Integer>();for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {int teout = 0;if (arr[i][j].data == 0) {if (i - 1 >= 0 && arr[i - 1][j].data == 1) {hs.add(arr[i - 1][j].zl);}if (i + 1 < n && arr[i + 1][j].data == 1) {hs.add(arr[i + 1][j].zl);}if (j - 1 >= 0 && arr[i][j - 1].data == 1) {hs.add(arr[i][j - 1].zl);}if (j + 1 < m && arr[i][j + 1].data == 1) {hs.add(arr[i][j + 1].zl);}}for (Integer integer : hs) {teout += ans[integer];}hs.clear();if (teout != num1) {teout++;}out = Math.max(teout, out);}}System.out.println(out);}
}class Node {int data;int zl;int i;int j;public Node() {}public Node(int i, int j, int data) {this.i = i;this.j = j;this.data = data;}}
import java.util.HashSet;
import java.util.Scanner;
/*** 第四题* 给定一个数n(n<1000000000) 和 一个数组a[m] m (1<=m<=10,1<=a[i]<=20) * 如果n对于一个数 ai有n%ai==0,则认为两个数相关。* 问在 1 - n中有多少个相关* 样例10 2
2
35* 这题是考容斥原理的题。当然要提前处理一下数值,不能有倍数关系。* 去除倍数关系之后进行计算值就可*/
public class T4 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);long n = sc.nextLong();int m = sc.nextInt();HashSet<Integer> hs = new HashSet<Integer>();long ans = 0;for(int i = 0;i < m; i++) {hs.add(sc.nextInt());}int arr[] = new int[hs.size()];int temp = 0;for (Integer integer : hs) {arr[temp++] = integer;}for(int i = 0;i<arr.length;i++) {for(int j = i+1;j<arr.length;j++) {if(Math.max(arr[i], arr[j])%Math.min(arr[i], arr[j])==0) {hs.remove(Math.max(arr[i], arr[j]));}}}arr = new int[hs.size()];temp = 0;for (Integer integer : hs) {arr[temp++] = integer;}for(int i = 1;i<1<<arr.length;i++) {int num = 0;long test = 1;for(int t = i,j=0;t!=0;t>>=1,j++) {if((t&1)!=0) {num++;test *= arr[j];}}if((num&1)==0) {ans-=n/test;}else {ans+=n/test;}}System.out.println(ans);}static int gcd(int a, int b) {if(b==0) {return a;}else {return gcd(b,a%b);}}
}
拼多多2021校招2020.9.1笔试题 T2 and T4相关推荐
- 【招商银行2021校招】提前批笔试题【C++方向】
- 拼多多2021高频题汇总 | 备战春招,刷这30题就够了!
春招高峰期,九章算法特别开放了[2021春招信息情报站],搜集汇总了阿里.字节.腾讯.顺丰.百度等互联网大厂的一手春招情报,包含网申链接.招聘范围.秘密情报.春招题库等,希望帮助更多同学顺利上岸! 校 ...
- 2021届BiliBili校招 数据分析/后端开发 笔试题记录
文章目录 1. 背景 2. 题型 3. 选择题范围 3.1 数据结构 3.2 计算机网络 3.3 操作系统 3.4 计算机组成 3.5 其他 4. 算法题 4.1 第一题 4.2 第二题 4.3 第三 ...
- 【编程练习】拼多多2021笔试真题集
题目来源:牛客,拼多多2021笔试真题集 第一题:多多的数字组合 打卡题,很明显的两个约束:每个位数各不相同 + 数字最小,在这两个条件的约束下,N最大为45,对应的数字为123456789. 代码如 ...
- 拼多多2021笔试真题集
拼多多2021笔试真题集 数字组合 字符变换 求和计算 骰子组合 数字组合 多多君最近在研究某种数字组合: 定义为:每个数字的十进制表示中(0~9),每个数位各不相同且各个数位之和等于N. 满足条件的 ...
- 头条2020届实习生笔试题
头条2020届实习生笔试题 一卷 编程题: 输入某年某月某日,判断这一天是这一年的第几天? // 判断是否为闰年function isRun(a) {return a % 4 == 0 &&a ...
- k个一组翻转链表 哔哩哔哩2020校园招聘笔试题/LeetCode_25(困难)讲解
目录标题 一.题目信息 二.解题思路 三.代码实现 四.其他精选题目分享 一.题目信息 LeetCode版本 牛客网版本 下面我以牛客网为例写代码 题目需要先输入一组数字代表链表的值,以#代表结尾. ...
- 记 随手科技2020届实习生笔试题(Java开发工程师)笔试题
2020届实习生笔试题(Java开发工程师) 一.选择题(共6题,每小题5分,满分30分) 1 2 3 4 5 6 总分 B B A C B C 1.下列排序算法中,初始数据集合对排序性能无影响的是( ...
- 2021校园照片芯片岗位笔试题知识点(华为,OPPO,紫光,大疆)
2021校园照片芯片岗位笔试题知识点(华为,OPPO,紫光,大疆) 关键词的判别.关键词的综合 格雷码 iso cell 采样保持时间 竞争冒险 峰值功耗.功耗约束.静态功耗 功能覆盖率 给出一段程序 ...
最新文章
- 【原创】MySQL 5.5 PROXY USER 伪装用户
- 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )
- JavaScript代理模式
- 让大家都成为电脑高手之二------运行_r篇
- linux系统下创建symlink(@)即文件软链接(快捷方式)的命令
- Memcache mutex设计模式
- mysql多数据源切换_CI 多数据库操作 切换数据库
- (27)VHDL实现非(数据流描述)
- Seinfeld(杭电3351)
- 2018辛苦一年了,程序员这样跟大boss谈2019加薪,谈薪杯具变喜剧
- 如何查看android虚拟机的目录及文件
- 凸优化第八章几何问题 8.4 极值体积椭圆
- 揭秘Spring——《Spring 揭秘》读书笔记纲要
- Word中如何删除某一页的页眉与页眉中的横线
- 网络显示404是怎么回事?
- 在Python中操作谷歌浏览器
- 下载神器aria2和他的客户端Persepolis
- jQuery+PHP实现的砸金蛋中奖程序
- java dispatcher详解_Java Web开发详解:RequestDispatcher接口
- openEuler Summit | 江大勇:凝聚创新力量 逐梦数字时代星辰大海
热门文章
- 解决chrome浏览器手机调试模式下鼠标指针消失(量化范围设置无效情况)
- layui搭建管理后台系统
- 微型计算机百度云,STONE_百度云资源_盘多多如风搜_盘搜搜_哎哟喂啊
- 企业网络安全保障团队建设构想
- 图像处理知多少?准大厂算法工程师30+场秋招后总结的面经问题详解
- app小窗口悬浮工具_侧边栏 app小窗口悬浮工具
- css td边框重复,表格线边框重复css解决方法
- Java进阶学习第八天——WEB入门
- 读书寄语:所有的遇见都是有原因的,并不只是偶然
- Apache2.4的安装、配置与常见的问题(Windows)