码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 求 k 整除最大元素和(dp)


    Description

    给你一个整数数组,请你在其中选取若干个元素,
    使得其和值能被 k 整除,输出和值最大的那个和值。
    最后的数字可能很大,所以结果需要对 19260817 取模。

    Input

    第一行是两个正整数 n,k:表示数组的长度,以及被整除的除数 k。
    接下来是 n 行,每行是一个正整数 num_i,表示数组中第 i 个数。
    n <= 10^5,  k <= 100, num_i <= 10^9。

    Output

    能被 k 整除的元素最大和。

    Sample Input

    5 3
    3
    5
    1
    8
    6

    Sample Output

    18

    思路:

    将n个数取余分到0-(k-1)数组内,然后dp,dp[i][j]代表前0-i内的数相加,余数为j的最大值。

    #define _CRT_SECURE_NO_WARNINGS 
    #include
    #include
    #include
    #include
    #include<ctime>
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    const int N = 1000;
    LL dp[110][110];
    vector p[110];
    LL n,k,x;
    bool cmp(LL x, LL y)
    {
        return x > y;
    }
    int main() {
        cin >> n >> k;
        for (int i = 1; i <= n; i++)
        {
            scanf("%lld", &x);
            p[x % k].push_back(x);
        }
        for (int i = 0; i <= k-1; i++) 
        sort(p[i].begin(), p[i].end(), cmp);
        x = 0;
        for (int i = 0; i         x += p[0][i];
        dp[0][0] = x;
        for (int i = 1; i <= k - 1; i++)
        {
            LL sum = 0;
            for (int j = 0; j < p[i].size(); j++)
            {
                sum += p[i][j];
                x = (j + 1) * i % k;
                for (int w = 0; w <= k - 1; w++)
                {
                    if (j == 0) dp[i][w] = max(dp[i - 1][w], dp[i][w]);
                    if (dp[i - 1][w])
                        dp[i][(x + w) % k] = max(dp[i][(x + w) % k], dp[i - 1][w] + sum);
                }
            }
        }
        cout << dp[k-1][0] % 19260817 << endl;
        return 0;
    }

  • 相关阅读:
    【c#】反射
    oracle学习48-oracle命令窗口执行sql语句
    PyTorch、TensorFlow和Jax构建神经网络模型的标准化流程
    荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
    【光学】Matlab实现色散曲线拟合
    InsCode Stable Diffusion 美图活动一期——即刻体验!来自 CSDN 的 SD 模型
    11.18-创建视图 11.19-SELECT语法结构 11.20-简单查询 11.21-连接查询 11.22-聚集函数 11.23-授权语句
    HTML代码中引入CSS样式的三种方式
    力扣每日一题59:螺旋矩阵||
    HTML中已经过时的标签
  • 原文地址:https://blog.csdn.net/yusen_123/article/details/133978221
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号