数学公式+矩阵快速幂-2013 ACM/ICPC Asia Regional Changsha Online H 题

本文介绍了解决 ZJU ACM 平台特定数学问题的方法,利用矩阵快速幂技术来求解 k 维空间中长度变化后的整数值。文章详细展示了 C++ 实现代码,并解释了如何通过数学公式结合矩阵运算来高效解决此类问题。

题目链接:

http://acm.zju.edu.cn/changsha/showContestProblem.do?problemId=19

题目意思:

题目很晦涩。在k维空间,开始长度为l,操作一次变为l+√(l*(l+1)).问最后%k还剩下的整数是多少。

解题思路:

数学公式+矩阵快速幂。

因为是在k维空间,所以也就是要求(l+√(l*(l-1))^k向下取整后%k的值。

这题和今年长沙邀请赛的A题,差不多,只不过那题是向上取整,这题是向下取整,减一就行了。

思路参考hdu 4565

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<ctime>
#define eps 1e-6
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define ll long long
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;

#define Maxn 3
ll m,a,b;

struct Mar
{
    int r,c;
    ll sa[Maxn][Maxn];
    void init(int a,int b)
    {
        r=a,c=b;
        memset(sa,0,sizeof(sa));
    }
};
Mar operator *(struct Mar & a,struct Mar & b)
{
    Mar c;
    c.init(a.r,b.c);

    for(int k=1;k<=a.c;k++)
    {
        for(int i=1;i<=c.r;i++)
        {
            if(!a.sa[i][k])
                continue;
            for(int j=1;j<=c.c;j++)
            {
                if(!b.sa[k][j])
                    continue;
                c.sa[i][j]=(c.sa[i][j]+a.sa[i][k]*b.sa[k][j])%m;
            }
        }
    }
    return c;
}
Mar ba[35],ans;

void init()
{
    ba[0].init(2,2);
    ba[0].sa[1][1]=(2*a)%m,ba[0].sa[1][2]=((b-a*a)%m+m)%m;
    ba[0].sa[2][1]=1,ba[0].sa[2][2]=0;


    for(int i=1;i<32;i++) //2^i
    {
        ba[i]=ba[i-1]*ba[i-1];
    }
}

int main()
{
   ll l,k;

   while(~scanf("%lld%lld",&k,&l))
   {
       a=l,b=l*(l-1);
       m=k;
       init();
       ans.init(2,1);
       ans.sa[1][1]=(2*a)%m,ans.sa[2][1]=2;

       for(int i=0;i<32&&k;i++)
       {
           if(k&1)
           {
               ans=ba[i]*ans;
           }
           k>>=1;
       }
       printf("%lld\n",(ans.sa[2][1]-1+m)%m);
   }
   return 0;
}



内容概要:本文提出了一种基于非合作博弈理论的居民负荷分层调度模型,并结合双层鲸鱼优化算法(Two-level Whale Optimization Algorithm)进行高效求解,模型与算法均通过Matlab代码实现。研究针对电力系统中居民侧用电负荷的复杂调度问,引入非合作博弈机制刻画各用户之间的利益竞争关系,实现负荷的分层优化分配;同时设计双层优化架构,上层优化资源配置,下层模拟用户自主决策行为,提升了模型的实用性与合理性。通过智能优化算法求解多层级、非凸非线性的博弈模型,有效提高了调度方案的收敛性与全局寻优能力,适用于现代智能电网中的需求侧管理与能源优化场景。; 适合人群:具备电力系统基础理论知识和Matlab编程能力,从事智能电网、能源优化调度、需求侧管理、博弈论应用等方向的科研人员、高校研究生及工程技术人员。; 使用场景及目标:①应用于居民区电力负荷的分层优化调度系统设计与仿真分析;②为非合作博弈在多主体能源系统建模中的应用提供方法论支持;③利用双层鲸鱼算法解决具有嵌套结构的复杂双层优化问,提升求解效率与调度方案的可行性。; 阅读建议:建议读者结合提供的Matlab代码深入理解模型构建逻辑与算法实现流程,重点关注博弈模型的效用函数设计、纳什均衡求解思路以及双层优化结构的迭代机制,宜配合实际用电数据开展复现实验以验证模型有效性与鲁棒性。
内容概要:本文围绕基于自适应神经模糊推理系统(ANFIS)智能控制器的可再生能源微电网功率管理系统展开研究,结合Simulink仿真实现,深入探讨了微电网中功率的智能调控与经济机组组合调度问。通过引入ANFIS控制器,有效应对风能、光伏等可再生能源出力的波动性与不确定性,提升系统运行的稳定性与电能质量。研究内容涵盖微电网多源协调控制策略、功率平衡管理、优化调度模型构建及仿真验证,实现了对分布式电源、储能系统和负荷的协同优化,兼顾经济性与可靠性目标,并通过仿真平台验证了所提方法的有效性与优越性。; 适合人群:具备电力系统、自动化或新能源相关专业背景,熟悉Matlab/Simulink仿真环境,从事微电网能量管理、智能控制、能源优化等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高比例可再生能源接入场景下的微电网能量管理系统研发与教学实践;②为实现微电网功率稳定控制与经济高效运行提供先进的智能控制解决方案;③支撑高水平学术论文复现、科研课攻关及实际工程项目的仿真验证与方案优化。; 阅读建议:建议结合提供的Simulink模型与相关代码进行动手实践,重点关注ANFIS控制器的设计流程、规则库构建与参数调优方法,并通过与传统PID或MPC控制策略的对比实验,深入理解其在动态响应与鲁棒性方面的优势。同时可进一步拓展文中提出的优化调度逻辑,应用于多目标、多约束的复杂实际应用场景中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值