hrbust 1445 Serial Numbers【01背包+滚动数组实现】

一场吉他寻回挑战赛中,吉他手需要通过串号找到属于自己的吉他。每把吉他都有一个唯一的串号,吉他手仅记得所有吉他串号之和为某个数M的倍数。本篇介绍了一种算法解决方案,通过动态规划找出最大数量的吉他,使得这些吉他的串号总和为M的倍数。

Serial Numbers
Time Limit: 5000 MSMemory Limit: 65536 K
Total Submit: 13(7 users)Total Accepted: 12(7 users)Rating: Special Judge: No
Description
The great guitar player Bernhard-Anton Peter Cobain is playing with his band the Awesome
Crying Metalheads in the wonderful city of Leiden. The show goes well and Bernhard-Anton is
very happy, but after the show he has a big problem: his guitars are mixed up with all the guitars
of the other guitar players, and Bernhard-Anton does not remember which guitars were his.
Fortunately, every guitar has a unique serial number which is an integer between 1 and 100, 000.
The only thing that Bernhard-Anton remembers is that the sum of all the serial numbers of his
guitars is a multiple of M. Given all serial numbers and the number M, calculate the maximum
number of guitars that could have been Bernhard-Anton’s.
Input
The first line of the input contains a single number: the number of test cases to follow. Each test
case has the following format:
• One line with two integers N and M, satisfying 1 ≤ N ≤ 500 and 1 ≤ M ≤ 100, 000: the
total number of guitars and the number M.
• One line with N different integers S1 . . . SN satisfying 0 ≤ Si ≤ 100, 000: the serial numbers
of the guitars.
Integers on the same line are separated by single spaces, and there will always be at least one
subset of guitars such that the sum of their serial numbers is a multiple of M.
Output
For every test case in the input, the output should contain a single number, on a single line: the
maximum number of guitars such that the sum of their serial numbers is a multiple of M.
Sample Input
2
3 5
1 8 6
6 9
8 6 4 1 2 3
Sample Output
3
5
Source
Preliminaries BAPC 2010

题目大意:


给你N个数,求一个方案,使得其数字和为M的倍数,并且数字个数最多,求这个最多的个数。


思路:


1、考虑dp,设定dp【i】【j】表示dp到第i个数字的时候,和模为j的最多数字个数。


2、考虑状态转移方程,不难想到:

①对应一个数拿与不拿,而且如果拿只能拿一次,那么对应不难想到这个题就是一个01背包的变形。

②我们如果从上一状态转移到当前状态不是很好实现,因为有取模的操作,那么我们考虑将当前状态转移到下一状态

③dp【i+1】【j】=max(dp【i+1】【j】,dp【i】【j】);

表示我第i个数不拿的状态的转移方程。

④dp【i+1】【(j+a【i】)%m】=max(dp【i+1】【(j+a【i】)%m】,dp【i】【j】+1);

表示我第i个数拿取的状态的转移返程。

⑤对应注意一些实现细节以及初始化即可。


3、理工OJ很蛋疼,直接裸开的int dp【505】【100007】被卡了MLE、明显出题人就是想让我们用一维01包来写,但是宝宝就是任性,直接加个滚动数组即可。


Ac代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int dp[3][100007];
int a[15151];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        memset(dp,0,sizeof(dp));
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
        }
        dp[1][a[1]%m]=1;
        for(int i=2;i<=n;i++)
        {
            dp[2][a[i]%m]=1;
            for(int j=0;j<m;j++)
            {
                dp[2][j]=max(dp[1][j],dp[2][j]);
                if(dp[1][j]>0)
                {
                    dp[2][(j+a[i])%m]=max(dp[2][(j+a[i])%m],dp[1][j]+1);
                }
            }
            for(int j=0;j<m;j++)
            {
                dp[1][j]=dp[2][j];
                dp[2][j]=0;
            }
        }
        printf("%d\n",dp[1][0]);
    }
}






内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的全渠道策略与效果评估体系,涵盖当前企业传播面临的预算、资源、内容与效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势与发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化与GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理与舆情应对的全流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率与ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放与GEO优化,提升品牌在AI搜索中的权威性与可见性;④通过数据驱动评估体系量化品牌影响力与销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析与工具指南进行系统学习,重点关注媒体适配性策略与GEO评估指标,在实际发稿中分阶段试点“AI+全渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
【EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于主从博弈理论的新型城镇配电系统中产消者竞价策略的研究,结合IEEE33节点系统进行建模与仿真分析,采用Matlab代码实现。研究聚焦于产消者(兼具发电与用电能力的主体)在配电系统中的竞价行为,运用主从博弈模型刻画配电公司与产消者之间的交互关系,通过优化算法求解均衡策略,实现利益最大化与系统运行效率提升。文中详细阐述了模型构建、博弈机制设计、求解算法实现及仿真结果分析,复现了EI期刊级别的研究成果,适用于电力市场机制设计与智能配电网优化领域。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电力市场、智能电网、能源优化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习主从博弈在电力系统中的建模方法;②掌握产消者参与电力竞价的策略优化技术;③复现EI级别论文的仿真流程与结果分析;④开展配电网经济调度与市场机制设计的相关课题研究。; 阅读建议:建议读者结合提供的Matlab代码,深入理解博弈模型的数学表达与程序实现细节,重点关注目标函数构建、约束条件处理及算法收敛性分析,可进一步拓展至多主体博弈或多时间尺度优化场景。
【BFO-BP】基于鳑鲏鱼优化算法优化BP神经网络的风电功率预测研究(Matlab代码实现)内容概要:本文研究了基于鳑鲏鱼优化算法(BFO)优化BP神经网络的风电功率预测方法,并提供了相应的Matlab代码实现。通过将生物启发式优化算法与传统BP神经网络相结合,利用鳑鲏鱼算法优化BP网络的初始权重和阈值,有效提升了模型的收敛速度与预测精度,解决了传统BP神经网络易陷入局部最优、训练效率低等问题。该方法在风电功率预测这一典型非线性时序预测任务中展现出良好的适用性和优越性,有助于提升风电并网的稳定性与调度效率。; 适合人群:具备一定机器学习与优化算法基础,从事新能源预测、电力系统调度或智能算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于风电场短期或超短期功率预测,提高电网调度的准确性;②作为智能优化算法与神经网络结合的典型案例,用于学习BFO等群智能算法在实际工程问题中的优化机制与实现方式;③为类似非线性系统建模与预测问题提供可复现的技术路线参考。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注BFO算法的种群初始化、适应度函数设计、参数更新机制及其与BP网络的耦合方式,同时可通过更换数据集或对比其他优化算法(如PSO、GA)进一步验证模型性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值