网易2017春招笔试真题集合
来源:互联网 发布:mac安装win7视频 编辑:程序博客网 时间:2024/05/29 14:45
1.双核处理
题目:
一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务。n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间。- 输入包括两行:
第一行为整数n(1 ≤ n ≤ 50)
第二行为n个整数length[i](1024 ≤ length[i] ≤ 4194304),表示每个任务的长度为length[i]kb,每个数均为1024的倍数。
- 输入包括两行:
题目分析:
此题是01背包问题的变形。完成所有n个任务需要sum时间,放入两个cpu中执行,假设第一个cpu处理时间为n1,第二个cpu时间为sum-n1,并假设n1 <= sum/2,sum-n1 >= sum/2,要使处理时间最小,则n1越来越靠近sum/2,最终目标是求max(n1,sum-n1)的最大值。
转换为01背包问题:已知最大容纳时间为sum/2,有n个任务,每个任务有其的完成时间,求最大完成时间。
01背包问题:已知背包的最大容量,有n个物品,价值分别是wi,求如何放物品能取得最大值
- 代码:
package WangYi2017Spring;import java.util.Scanner;public class Main { public final static int MAX_N = 50+1; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n; int[] time = new int[MAX_N]; int sum = 0; //两个cpu运行的总时间 while(sc.hasNext()){ n = sc.nextInt(); for(int i=0;i<n;i++){ time[i] = sc.nextInt()>>10; //"每个数均为1024的倍数" sum += time[i]; } int[] dp = new int[sum/2+1]; for(int i=0;i<n;i++){ for(int j=(sum/2);j>=time[i];j--){ dp[j] = Math.max(dp[j],dp[j-time[i]]+time[i]); } } System.out.println((sum-dp[sum/2])<<10); } }}
2.赶去公司
题目:
终于到周末啦!小易走在市区的街道上准备找朋友聚会,突然服务器发来警报,小易需要立即回公司修复这个紧急bug。假设市区是一个无限大的区域,每条街道假设坐标是(X,Y),小易当前在(0,0)街道,办公室在(gx,gy)街道上。小易周围有多个出租车打车点,小易赶去办公室有两种选择,一种就是走路去公司,另外一种就是走到一个出租车打车点,然后从打车点的位置坐出租车去公司。每次移动到相邻的街道(横向或者纵向)走路将会花费walkTime时间,打车将花费taxiTime时间。小易需要尽快赶到公司去,现在小易想知道他最快需要花费多少时间去公司。输入数据包括五行:
第一行为周围出租车打车点的个数n(1 ≤ n ≤ 50)
第二行为每个出租车打车点的横坐标tX[i] (-10000 ≤ tX[i] ≤ 10000)
第三行为每个出租车打车点的纵坐标tY[i] (-10000 ≤ tY[i] ≤ 10000)
第四行为办公室坐标gx,gy(-10000 ≤ gx,gy ≤ 10000),以空格分隔
第五行为走路时间walkTime(1 ≤ walkTime ≤ 1000)和taxiTime(1 ≤ taxiTime ≤ 1000),以空格分隔
题目分析:
咋一看以为很难,其实是简单题,直接枚举解决。1.要么坐车要么不坐车 2.坐车枚举坐车点就OK代码:
package WangYi2017Spring;import java.util.Scanner;public class HurryToBiz { public final static int MAX = 50+5; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n; int[] tx = new int[MAX]; int[] ty = new int[MAX]; int gx,gy,walkTime,taxiTime; while(sc.hasNext()){ n = sc.nextInt(); for(int i=0;i<n;i++){ tx[i] = sc.nextInt(); } for(int i=0;i<n;i++){ ty[i] = sc.nextInt(); } gx = sc.nextInt(); gy = sc.nextInt(); walkTime = sc.nextInt(); taxiTime = sc.nextInt(); int noTaxi = getDstn(0,0,gx,gy)*walkTime; //不搭的士 int taxi = Integer.MAX_VALUE; for(int i=0;i<n;i++){ int temp = getDstn(0, 0, tx[i], ty[i])*walkTime + getDstn(tx[i], ty[i], gx, gy)*taxiTime; if(taxi>temp) taxi = temp; } System.out.println(noTaxi>taxi?taxi:noTaxi); } } public static int getDstn(int x1,int y1,int x2,int y2){ return Math.abs(x2-x1)+Math.abs(y2-y1); }}
- 网易2017春招笔试真题编程题集合
- 网易2017春招笔试真题集合
- 网易2017春招笔试真题编程题集合——9.涂棋盘
- 网易2017春招笔试真题编程题集合——2.优雅的点
- 网易2017春招笔试真题编程题集合(一)
- 网易2017春招笔试真题编程题集合题解
- 网易2017春招笔试真题编程题集合--Python
- 网易2017春招笔试真题编程题集合--魔力手环
- 网易2017春招笔试真题编程题集合--工作安排
- 网易2017春招笔试真题编程题集合--堆砖块
- 集合--网易2017春招实习笔试编程题7
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 网易春招笔试题
- Android 自定义View format 属性定义
- C函数之memcpy()函数用法
- springboot logback 日志配置。
- 医学图像分割--Topology Aware Fully Convolutional Networks For Histology Gland Segmentation
- 获取访问者IP
- 网易2017春招笔试真题集合
- <a>标签嵌套图片使用方法
- 【微信小程序】各种页面特殊效果合集第二期
- 基于nodejs的分布式服务构建
- HBase最佳实践-读性能优化策略
- 王小波全集读后感
- gh0st源码分析与远控的编写(二)
- Android 关于Glide的拓展(高斯模糊、加载监听、圆角图片)
- React-native 第三方组件