首页 > 其他分享 >【atcoder abc281_d】动态规划

【atcoder abc281_d】动态规划

时间:2022-12-11 16:11:40浏览次数:52  
标签:atcoder io valueOf long static words new 动态 abc281

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author fishcanfly
 */
public class Main {
    /**
     * main入口由OJ平台调用
     */
    static long[][] lcs = null;
    static int n, k, d;
    static long[] arr;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] words = br.readLine().split("\\s+");
        n = Integer.valueOf(words[0]);
        k = Integer.valueOf(words[1]);
        d = Integer.valueOf(words[2]);

        arr = new long[n];
        long[][][] dp = new long[n + 1][k + 1][d + 1];
        for (int i = 0; i <= n; i++) {
            for (int j = 0; j <= k; j++) {
                for (int x = 0; x <= d; x++) {
                    dp[i][j][x] = -1;
                }
            }
        }
        words = br.readLine().split("\\s+");
        for (int i = 0; i < n; i++) {
            arr[i] = Long.valueOf(words[i]);
        }

        dp[0][0][0] = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j <= k; j++) {
                for (int m = 0; m < d; m++) {
                    if (dp[i][j][m] == -1) continue;

                    // transition when a_i isn't chosen
                    dp[i + 1][j][m] = Math.max(dp[i + 1][j][m], dp[i][j][m]);

                    // transition when a_i is chosen
                    if( j+1<=k){
                        dp[i + 1][j + 1][(m + (int) arr[i])% d] = Math.max(dp[i + 1][j + 1][(m + (int) arr[i])% d], dp[i][j][m] + arr[i]);
                    }
                }
            }
        }


        System.out.println(dp[n][k][0]);

        br.close();
    }


}

 

标签:atcoder,io,valueOf,long,static,words,new,动态,abc281
From: https://www.cnblogs.com/fishcanfly/p/16973813.html

相关文章

  • 动态规划_打家劫舍III
    package数据结构和算法;publicclassd31_动态规划_打家劫舍III{publicstaticvoidmain(String[]args){//TODO自动生成的方法存根......
  • AtCoder Beginner Contest 281
    比赛链接A-CountDownA题题面直接输出即可B-SandwichNumberB题题面这道题首先判断开头结尾是否为大写字母,然后判断总长度是否为8,然后对中间一段转数字即可。C......
  • 动态规划_买卖股票的最佳时机
    '示例1:'输入:[7,1,5,3,6,4]'输出:5'解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。注意利润不能是7-1=6,因为卖出......
  • Kubernetes(k8s)存储管理之数据卷volumes(五):动态制备-存储类StorageClass
    目录一.系统环境二.前言三.静态制备和动态制备四.存储类StorageClass4.1存储类StorageClass概览4.2StorageClass资源五.创建存储类StorageClass5.1配置NFS服务端以及共......
  • ABC281 DEF 简短题解
    G有时间想,但不太擅长这种图论计数,就摆了。Ex直接润。感觉这场打得很烂,全程梦游,吃了5发罚时,很棒。D-MaxMultiple给定\(n\)个数\(a_1\sima_n\),选出\(k\)个......
  • Atcoder-ABC281-DEF题解
    AtcoderBeginnerContest281D.MaxMultiple(DP)题意在长度为\(N\)的序列\(A\)中,找到\(K\)个元素其和为\(D\)的倍数,找出满足要求最大的和,没有则返回-1。数......
  • ABC281D Max Multiple
    Sourcehttps://atcoder.jp/contests/abc281/tasks/abc281_dIdea由于选择引发的DP问题(背包问题)。不妨令\(dp[i][j][k]\)表示从\(a_1..a_i\)中选出来\(j\)个元素,使得他......
  • 动态NAT(NAPT)
    源nat:私网到公网的转换(私网访问公网,目的ip没变,只转换了源ip)。实验要求:假设一个企业从运营商那获得一段公网地址(21.16.1.248/29);要求内网电脑可以正常上外放,并能访问外......
  • Qt应用程序三步引用动态链接库DLL
    1、在.pro中添加对lib的引用   INCLUDEPATH+=$$PWD/include   LIBS+=$$PWD/lib*.a   其中,include目录下包含两个头文件,*_global.h和*.h。2、在引......
  • postgresql/lightdb PL/pgSQL return setof和TABLE的区别及动态SQL执行
    在pg中,广泛的使用了表函数代替视图,返回集合有两种定义,setof和table。他们的区别在于table明确定义了字段名和类型,如下:CREATEFUNCTIONevents_by_type_1(text)RETURNSTABL......