双周赛109
This commit is contained in:
parent
41e484a0a8
commit
7338475b3b
97
src/main/java/contest/y2023/BW109.java
Normal file
97
src/main/java/contest/y2023/BW109.java
Normal file
@ -0,0 +1,97 @@
|
||||
package contest.y2023;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class BW109 {
|
||||
public static void main(String[] args) {
|
||||
BW109 solution = new BW109();
|
||||
// int[] nums = new int[]{2,3,6,1,9,2};
|
||||
// int x = 5;
|
||||
// System.out.println(solution.maxScore(nums,x));
|
||||
System.out.println(solution.numberOfWays(4, 1));
|
||||
}
|
||||
|
||||
public int numberOfWays(int n, int x) {
|
||||
List<Integer> list = new ArrayList<>();
|
||||
for (int i = 1; i <= n; i++) {
|
||||
int sum = (int) Math.pow(i, x);
|
||||
if (sum <= n) {
|
||||
list.add(sum);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
int[] dp = new int[n + 1];
|
||||
dp[0] = 1;
|
||||
for (int num : list) {
|
||||
for (int i = n; i >= num; i--) {
|
||||
dp[i] = (dp[i] + dp[i - num]) % 1000000007;
|
||||
}
|
||||
}
|
||||
return dp[n];
|
||||
}
|
||||
|
||||
public long maxScore(int[] nums, int x) {
|
||||
long max = nums[0];
|
||||
long[] sum = new long[nums.length];
|
||||
Arrays.fill(sum, Integer.MIN_VALUE);
|
||||
sum[0] = nums[0];
|
||||
int n1 = -1;
|
||||
int n2 = -1;
|
||||
if (nums[0] % 2 == 0) {
|
||||
n2 = 0;
|
||||
} else {
|
||||
n1 = 0;
|
||||
}
|
||||
for (int i = 1; i < nums.length; i++) {
|
||||
if (n1 >= 0) {
|
||||
sum[i] = Math.max(sum[i], (nums[i] % 2 == 0 ? sum[n1] + nums[i] - x : sum[n1] + nums[i]));
|
||||
}
|
||||
if (n2 >= 0) {
|
||||
sum[i] = Math.max(sum[i], (nums[i] % 2 == 0 ? sum[n2] + nums[i] : sum[n2] + nums[i] - x));
|
||||
}
|
||||
if (nums[i] % 2 == 0) {
|
||||
n2 = i;
|
||||
} else {
|
||||
n1 = i;
|
||||
}
|
||||
max = Math.max(max, sum[i]);
|
||||
}
|
||||
return max;
|
||||
}
|
||||
|
||||
public String sortVowels(String s) {
|
||||
String str = "aeiouAEIOU";
|
||||
List<String> list = new ArrayList<>();
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (str.contains(String.valueOf(s.charAt(i)))) {
|
||||
list.add(String.valueOf(s.charAt(i)));
|
||||
}
|
||||
}
|
||||
Collections.sort(list);
|
||||
StringBuilder nstr = new StringBuilder();
|
||||
int index = 0;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (str.contains(String.valueOf(s.charAt(i)))) {
|
||||
nstr.append(list.get(index));
|
||||
index++;
|
||||
} else {
|
||||
nstr.append(String.valueOf(s.charAt(i)));
|
||||
}
|
||||
}
|
||||
return nstr.toString();
|
||||
}
|
||||
|
||||
public boolean isGood(int[] nums) {
|
||||
Arrays.sort(nums);
|
||||
for (int i = 0; i < nums.length - 1; i++) {
|
||||
if (i + 1 != nums[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return nums[nums.length - 1] == nums.length - 1;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user