5185 Equation

Equation

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 656    Accepted Submission(s): 230


Problem Description
Gorwin is very interested in equations. Nowadays she gets an equation like this
x1+x2+x3++xn=n , and here
0xinfor1inxixi+1xi+1for1in1

For a certain  n , Gorwin wants to know how many combinations of  xi  satisfies above condition.
For the answer may be very large, you are expected output the result after it modular  m .
 

Input
Multi test cases. The first line of the file is an integer  T  indicates the number of test cases.
In the next  T  lines, every line contain two integer  n,m .

[Technical Specification]
1T<20
1n50000
1m1000000000
 

Output
For each case output should occupies one line, the output format is Case #id: ans, here id is the data number starting from 1, ans is the result you are expected to output.
See the samples for more details.
 

Sample Input
  
2 3 100 5 100
 

Sample Output
  
Case #1: 2 Case #2: 3
 

Source


题意:n个数满足  0<=X(i)<=n   X(i+1) 等于 X(i)或X(i)+1, 因此第一个X1 必定小于等于1 ( 若X1=2  则n个数最小为2*n ) 
          最理想的状态为1+2+3+...+x=n;  则可以求出xi最大值  [(1+x)*x]/2 =n;   
          其中x1~xn去重以后 一定是连续的 可以由dp[i][j]表示 由1~i种数字构成的和为j的组合数
          状态转移方程为dp[i][j]=dp[i][j-i]+dp[i-1][j-i]   ( dp[i][j-i]表示在n=j-i的组合数字的基础上在xn=i 后面增加一个数字i  ;dp[i-1][j-1] 在n=j-i的组合数字的基础上在xn=i-1 后面增加一个 数字i)

AC:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long LL;
using namespace std;
int dp[500][50050]={0};
int main()
{
    int t;scanf("%d",&t);
    int v=1;
    while(t--)
    {
        LL n,mod;
        scanf("%lld%lld",&n,&mod);
        int k=1;
        while(k*(k+1)<=2*n)k++;
        k--;

        for(int i=0;i<=n;i++)dp[0][i]=0;
        for(int i=0;i<=k;i++)dp[i][0]=0;

        dp[0][0]=1;
        for(int i=1;i<=k;i++)
            for(int j=i;j<=n;j++)
            dp[i][j]=(dp[i][j-i]+dp[i-1][j-i])%mod;

        LL ans=0;
        for(int i=1;i<=k;i++)
            ans+=dp[i][n],ans%=mod;
        printf("Case #%d: %lld\n",v++,ans);

    }
}


           
【电动车优化调度】基于模型预测控制(MPC)的凸优化算法的电动车优化调度(Matlab代码实现)内容概要:本文介绍了基于模型预测控制(MPC)的凸优化算法在电动车优化调度中的应用,并提供了Matlab代码实现。该方法结合了MPC的滚动优化特性与凸优化的高效求解能力,用于解决电动车充电调度问题,提升电网运行效率与可再生能源消纳能力。文中还提及多个相关研究方向和技术支撑,包括智能优化算法、机器学习、电力系统管理等,展示了其在多领域交叉应用的潜力。配套资源可通过提供的网盘链接获取,涵盖YALMIP工具包及其他完整仿真资源。; 适合人群:具备一定电力系统、优化理论及Matlab编程基础的科研人员和研究生,尤其适合从事电动汽车调度、智能电网优化等相关课题的研究者。; 使用场景及目标:①实现电动车集群在分时电价或电网需求响应机制下的有序充电调度;②结合可再生能源出力与负荷预测,利用MPC进行多时段滚动优化,降低电网峰谷差,提高能源利用效率;③为学术论文复现、课题研究及工程仿真提供可靠的技术路线与代码支持。; 阅读建议:建议读者结合文档中提到的智能优化算法与电力系统背景知识进行系统学习,优先掌握MPC基本原理与凸优化建模方法,并下载配套资源调试代码,以加深对电动车调度模型构建与求解过程的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值