滴滴2017校园招聘笔试题
2016-09-07 13:26
120 查看
/** * 以第i个元素结尾且和最大的连续子数组实际上, * 要么是以第i-1个元素结尾且和最大的连续子数组加上这个元素, * 要么是只包含第i个元素, * sum[i] = max(sum[i-1] + a[i], a[i]) */ public class Main { private static long solve(int[] arr, int n) { long maxSum = arr[0]; long sum = arr[0]; boolean flag = false; for (int i = 0; i < n; i++) { if (arr[i] < 0) { maxSum = Math.max(maxSum,arr[i]); }else { flag = true; //数组不全为负数 break; } } if (!flag) { return maxSum; } maxSum = arr[0]; for (int i = 1; i < n; i++) { if (sum > 0) { sum += arr[i]; }else { sum = arr[i]; } maxSum = Math.max(maxSum,sum); } return maxSum; } public static void main(String[] arg) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int[] arr = new int ; for (int i = 0; i < n; i++) { arr[i] = scan.nextInt(); } System.out.println(solve(arr,n)); scan.close(); } }
/** * 餐桌容纳人数:从小到大排序 * 客人:按消费金额从大到小排序 * 遍历餐桌:每一桌选择消费金额最大且人数小于餐桌容纳人数 * ps:未在OJ测试,不知是否能AC */ public class Main { static class Customer { int b; int c; } private static int getCost(Customer[] customers,boolean[] flag,int m,int x) { for (int i = 0; i < m; i++) { Customer customer = customers[i]; if (!flag[i] && customer.b < x) { flag[i] = true; return customer.c; } } return 0; } private static long solve(Customer[] customers,int[] arr,int n,int m) { //餐桌容纳人数从小到大排序 Arrays.sort(arr); //消费金额从大到小排序 Arrays.sort(customers, new Comparator<Customer>() { @Override public int compare(Customer c1, Customer c2) { return c2.c - c1.c; } }); long ans = 0; boolean[] flag = new boolean[m]; for (int i = 0; i < n; i++) { ans += getCost(customers,flag,m,arr[i]); } return ans; } public static void main(String[] arg) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int m = scan.nextInt(); int[] arr = new int ; Customer[] customers = new Customer[m]; for (int i = 0; i < n; i++) { arr[i] = scan.nextInt(); } for (int i = 0; i < m; i++) { Customer c = new Customer(); c.b = scan.nextInt(); c.c = scan.nextInt(); customers[i] = c; } System.out.println(solve(customers,arr,n,m)); scan.close(); } }
相关文章推荐
- 阿里巴巴2014.08.29校园招聘笔试题---找出两个字符串中连续相同的最大子串
- 百度2013校园招聘笔试题(答案整理) – 机器学习/数据挖掘工程师
- 华为2016校园招聘上机笔试题2简单错误记录
- 2014届去哪儿校园招聘笔试题
- 迅雷2012校园招聘笔试题
- 人人网 2014校园招聘笔试题
- 百度2014校园招聘-研发工程师笔试题(济南站)
- 2014 阿里巴巴校园招聘笔试—南京
- 2013豆瓣校园招聘研发类笔试题
- 去哪儿网2014校园招聘技术笔试题(成都站,开发岗)——2014.09.23
- Google中国2014校园招聘笔试Round A China New Grad Test Problem E. Spaceship Defence
- 2014网银在线校园招聘笔试
- 华为校园招聘笔试题(机考题目)
- 百度2014校园招聘南京笔试题
- 各大IT公司校园招聘程序猿笔试、面试题集锦
- 2015(毕业)秋季校园招聘各种企业笔试面试心得
- [转]网易2013校园招聘笔试题集锦
- 2012联发科校园招聘成都手机软件部门笔试&第一轮面试
- 美团网2014校园招聘笔试题(长沙站)
- 【第2题】360校园招聘2015届技术类笔试题