微众3题AC代码
第一题:100%
- 思路:交了四发91%,最后加个发红包打发小朋友就100%了。。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int a = in.nextInt(); int b = in.nextInt(); int c = Math.min(a, b); int ans = 0; if (m % n == 0) System.out.println(0); else { if (m < n) System.out.println((n - m) * c); else { for (int i = n; i > 0; i--) { // 发红包 if (m % i == 0) { break; } else { ans += a; } } System.out.println(Math.min(ans, (n - m % n) * b)); // 还需要购买的礼物数 } } } }
第二题:100%
- 思路:数据小就直接暴力模拟了。。
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); while (t-- > 0) { String str = in.next(); int len = str.length(); int[] nums = new int[26]; int cnt = 0, op = 0; for (int i = 0; i < len; i++) nums[str.charAt(i) - 'a']++; for (int i = 0; i < 26; i++) cnt += nums[i] & 1; while (true) { Arrays.sort(nums); op++; if (cnt == 1 || cnt == 0) break; boolean flag = false; for (int i = 25; i >= 0; i--) { if (nums[i] > 0 && nums[i] % 2 == 0) { nums[i]--; cnt++; flag = true; break; } } if (!flag) { if (nums[25] > 0) { nums[25]--; cnt--; } } } System.out.println((op & 1) == 1 ? "Cassidy" : "Eleanore"); } } }
第三题:100%
- 思路:贪心即可。。
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); Node[] nodes = new Node[n]; for (int i = 0, a, b; i < n; i++) { a = in.nextInt(); b = in.nextInt(); nodes[i] = new Node(a, b); } Arrays.sort(nodes, new Comparator<Node>() { public int compare(Node o1, Node o2) { if (o1.b != o2.b) return o2.b - o1.b; return o2.a - o1.a; } }); int ans = 0, cnt = 1; for (int i = 0; i < n; i++) { if (cnt > 0) { cnt--; ans += nodes[i].a; cnt += nodes[i].b; } } System.out.println(ans); } } class Node { int a, b; public Node(int a, int b) { this.a = a; this.b = b; } }#微众笔试##微众银行##笔试题目#