微众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;
}
} #微众笔试##微众银行##笔试题目#