拼多多笔试6.16

public class Main2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t=scanner.nextInt();
        while(t-->0){
            int N=scanner.nextInt();
            int[] prices = new int[N+1];
            for(int i=1;i<=N;i++) {
                prices[i]=scanner.nextInt();
            }
            int[][] dp=new int[N+1][N+1];
            int[] chances=new int[N+2];
            for(int i=0;i<=N;i++) {
                Arrays.fill(dp[i],Integer.MAX_VALUE-100);
            }
            dp[0][0]=0;
            int sum=0;
            for(int i=1;i<=N;i++) {
                sum+=prices[i];
                if(chances[i]==0)
                chances[i]=chances[i-1];
                if(sum>=100){
                    chances[i+1]=chances[i]+1;
                    sum-=100;
                }
            }
            for(int i=1;i<=N;i++) {
                for(int j=chances[i];j>=0;j--){
                    dp[i][j] = dp[i-1][j]+prices[i];
                    if(j-1>=0){
                        dp[i][j] = Math.min(dp[i][j], dp[i-1][j-1]);
                    }
                }
                if(chances[i]!=chances[i-1])
                    dp[i][chances[i]] = Math.min(dp[i][chances[i]], dp[i-1][chances[i-1]]);
            }
            int ans=dp[N][chances[N]];
            System.out.println(ans);


        }
    }
}



全部评论
哥们 咋理解这道题目呢
点赞 回复 分享
发布于 06-17 22:11 安徽

相关推荐

去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务