小美有一个长度为 的数组 ,他可以对数组进行如下操作: ● 删除第一个元素 ,同时数组的长度减一,花费为 。 ● 删除整个数组,花费为 (其中 表示 中未出现过的最小非负整数。例如 的 为 )。 小美想知道将 数组全部清空的最小代价是多少,请你帮帮他吧。
区块链毕设网qklbishe.com为您提供问题的解答
小美有一个长度为 的数组 ,他可以对数组进行如下操作:
● 删除第一个元素 ,同时数组的长度减一,花费为 。
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 StringBuilder sb = new StringBuilder(); int t = in.nextInt(); for (int i = 0; i < t; i++) { int n = in.nextInt(); long k = in.nextInt(); long x = in.nextInt(); // System.out.println("n:"+n+", k:"+k+", x:"+x); HashSet<Integer> set = new HashSet<>(); int[] as = new int[n]; for (int j = 0; j < n; j++) { as[j] = in.nextInt(); } long min = x * n; int cur = 0; for (int j = n - 1; j >= 0; j--) { set.add(as[j]); while (set.contains(cur)) { cur++; } min = Math.min(x * j + k * cur, min); // System.out.println(set); // System.out.println("min:"+min+", cur:"+cur); } sb.append(min); sb.append("n"); } System.out.println(sb.toString()); } }
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T =in.nextInt();
for(int z=0;z<T;z++){
int n =in.nextInt();
int k =in.nextInt();
int x =in.nextInt();
int[] nums =new int[n];
for(int i=0;i<n;i++){
nums[i]=in.nextInt();
}
solve(n,k,x,nums);
}
in.close();
}
static void solve(int n, int k, int x, int[] nums){
long[] mex = MEX(n,nums);
long[] dp = new long[n+1];
for(int i=n-1;i>=0;i–){
dp[i] = Math.min(mex[i]*k,x+dp[i+1]);
}
System.out.println(dp[0]);
}
static long[] MEX(int n, int[] nums){
Set<Integer> set= new HashSet<>();
long[] mex = new long[n];
mex[n-1]= nums[n-1]==0? 1: 0;
if(nums[n-1]>mex[n-1])
set.add(nums[n-1]);
for(int i=n-2;i>=0;i–){
if(nums[i]!=mex[i+1]){
mex[i]=mex[i+1];
if(nums[i]>mex[i])
set.add(nums[i]);
}else{
int tmp = nums[i]+1;
while(set.contains(tmp)){
tmp++;
}
mex[i]=tmp;
if(nums[i]>mex[i])
set.add(nums[i]);
}
}
return mex;
}
}
以上就是关于问题小美有一个长度为 的数组 ,他可以对数组进行如下操作:
● 删除第一个元素 ,同时数组的长度减一,花费为 。
● 删除整个数组,花费为 (其中 表示 中未出现过的最小非负整数。例如 的 为 )。 小美想知道将 数组全部清空的最小代价是多少,请你帮帮他吧。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训