牛客编程巅峰赛S2第6场 - 青铜&白银&黄金
程序员文章站
2022-06-15 19:36:49
...
拉跨操作, 就 a 了一题
第一题: 牛牛做除法Ⅱ
直接暴力就行了。。。。。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 返回满足条件的最大的x。
* @param a int整型 代表题意中的a
* @param b int整型 代表题意中的b
* @param n int整型 代表题意中的n
* @return int整型
*/
public int solve (int a, int b, int n) {
// write code here
for(int i = n; i >= 0; i--){
if(i % a == b) return i;
}
return 0;
}
}
第二题: String Ⅱ
必不可能是用贪心解。。
枚举所有答案。
枚举最后是以哪个字母作为最长子序列,26种情况取最大值
import java.util.*;
public class Solution {
/**
*
* @param k int整型 表示最多的操作次数
* @param s string字符串 表示一个仅包含小写字母的字符串
* @return int整型
*/
public int string2 (int k, String s) {
// write code here
int[] map = new int[26];
char[] cs = s.toCharArray();
for(int i = 0; i < cs.length; i++){
map[cs[i] - 'a']++;
}
int ans = 0;
for(int i = 0; i < 26; i++){
int temp = k, now = map[i];
for(int j = 1; j < 26; j++){
if(i - j >= 0){
int det = Math.min(map[i - j], temp / j);
now += det;
temp -= j * det;
}
if(i + j <= 25){
int det = Math.min(map[i + j], temp / j);
now += det;
temp -= j * det;
}
}
ans = Math.max(ans, now);
}
return ans;
}
}
第三题: Bang! Bang!
dp 题, 不会,待补