4.8阿里笔试
import java.util.Scanner; public class Main1 { public static void main(String[] args) { int t; Scanner scanner=new Scanner(System.in); t=scanner.nextInt(); for(int i=1;i<=t;i++){ int time=scanner.nextInt(); int num=scanner.nextInt(); int first_blood=scanner.nextInt(); int max_attack=scanner.nextInt(); if(time<first_blood){ System.out.println(0); continue; } if(time==first_blood){ System.out.println(max_attack); continue; } if(time*max_attack>=num*first_blood){ //大于了总血量 System.out.println(num); } else System.out.println((int) Math.ceil((double) time*max_attack/(double) first_blood)); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int t=scanner.nextInt(); for (int i=0;i<t;i++){ int n=scanner.nextInt(); int max_step=scanner.nextInt(); int[][] value=new int[n+1][n+1]; for (int j=1;j<=n;j++){ for (int k=1;k<=n;k++){ value[j][k]=scanner.nextInt(); } } int[][] dp=new int[n+1][n+1]; System.out.println(calcMaxWay(1,1,max_step,dp,value)); } } private static int calcMaxWay(int x,int y,int max_step,int[][] dp,int[][] value){ if (dp[x][y]>0) return dp[x][y]; int max_sum=0; for (int step=1;step<=max_step;step++){ if(y-step>0 && value[x][y-step]>value[x][y]) max_sum=Math.max(max_sum,calcMaxWay(x,y-step,max_step,dp,value)); if(y+step<value[1].length && value[x][y+step]>value[x][y]) max_sum=Math.max(max_sum,calcMaxWay(x,y+step,max_step,dp,value)); if(x-step>0 &&value[x-step][y]>value[x][y]) max_sum=Math.max(max_sum,calcMaxWay(x-step,y,max_step,dp,value)); if(x+step<value[1].length && value[x+step][y] > value[x][y])max_sum=Math.max(max_sum,calcMaxWay(x+step,y,max_step,dp,value)); } dp[x][y]=value[x][y]+max_sum; return dp[x][y]; } }
#阿里笔试##阿里巴巴#