2019/09/01 腾讯笔试
3.搬运工 办公室 箱子
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] nm = scanner.nextLine().trim().split(" ");
int n = Integer.valueOf(nm[0]);
int m = Integer.valueOf(nm[1]);
int[] a = new int[n];
int boxes = 0;
String[] astrs = scanner.nextLine().trim().split(" ");
for(int i=0;i<n;i++) {
a[i] = Integer.valueOf(astrs[i]);
boxes += a[i];
}
int cost = 0;
int[] b = new int[n];
while(boxes>0) {
for(int i = a.length-1;i>=0;i--) {
if(b[i]>a[i]&&i+1<a.length) {
b[i+1]+=b[i]-a[i];
b[i]=a[i];
boxes-=a[i];
a[i]=0;
}
else if(b[i]>a[i]) {
boxes-=a[i];
a[i]=0;
}
else {
a[i]-=b[i];
boxes-=b[i];
}
if(i==0&&m>0) {
b[i]+=m;
m=0;
}
}
cost++;
}
System.out.println(cost);
}5.花匠小Q 红花 白花 白花连续摆放数量为k的倍数(倍数可以为0)
public static int[] getDp(int end,int k) {
int[] dp = new int[end+1];
dp[0]=1;
for(int i=1;i<=end;i++) {
if(i<k)dp[i]=1;
else dp[i]=dp[i-1]+dp[i-k];
}
return dp;
}
public static int getNumOfZone(int from,int end,int[] dp) {
int res = 0;
for(int i=from;i<=end;i++)
res+=dp[i];
return res;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] nk = scanner.nextLine().trim().split(" ");
int n = Integer.valueOf(nk[0]);
int k = Integer.valueOf(nk[1]);
int[][] groups = new int[n][2];
int maxend = 0;
for(int i=0;i<n;i++) {
String[] astrs = scanner.nextLine().trim().split(" ");
groups[i][0] = Integer.valueOf(astrs[0]);
groups[i][1] = Integer.valueOf(astrs[1]);
maxend = Math.max(maxend, groups[i][1]);
}
int[] dp = getDp(maxend,k);
for(int i=0;i<n;i++) {
System.out.println(getNumOfZone(groups[i][0],groups[i][1],dp));
}
}


京公网安备 11010502036488号