[2019.2.28]BZOJ2118 墨墨的等式

我们设最小的系数为\(m\)

那么如果\(B=im+j\)(\(i,j\)为非负整数,\(j<m\))有整数解,那么\(B=(i+k)m+j\)(\(k\)为正整数)也有整数解。我们只需要把\(B=im+j\)的整数解中系数\(m\)对应的未知数加\(k\)就好了。

所以我们记\(d_i\)表示\(B\)\(mod\ m\)意义下同余\(i\),并且这个\(B\)有解的最小的\(B\)

显然\(d_0=0\)

以及我们可以用\(d_i+a_j\)更新\(d_{(i+a_j)mod\ m}\)

那么可以理解为对于任意\(0\le i<m\)\(1\le j\le n\),节点\(i\)到节点\((i+a_j)mod\ m\)有一条权值为\(a_j\)的单向边。那么\(d_i\)就是节点0到节点\(i\)的最短路。

所以我们之所以选择最小的系数作为\(m\),是为了减少状态数。

跑一遍玄学的SPFA就能够处理出\(d\)了。

那么在\(mod\ m\)意义下和\(i\)同余且小于等于\(x\)的合法的\(B\)的取值数量为\(\lfloor\frac{x-d_i+m}{m}\rfloor\)

于是我们设\(0\le B\le x\)时,使得方程有非负整数解的\(B\)取值的数量为\(ans(x)\),则\(ans(x)=\sum_{i=0}^{m-1}\lfloor\frac{max(x-d_i+m,0)}{m}\rfloor\)

题目所求即为\(ans(BMax)-ans(BMin-1)\)

code:

#include<bits/stdc++.h>
using namespace std;
const long long INF=1e13;
struct edge{
    int t,v,nxt;
}e[6000010];
int n,a[15],mn=1e9,cnt,be[500010],t,vis[500010];
long long bl,br,dis[500010],tot;
queue<int>q;
void add(int x,int y,int val){
    e[++cnt].t=y,e[cnt].v=val,e[cnt].nxt=be[x],be[x]=cnt;
}
void SPFA(){
    for(int i=1;i<mn;++i)dis[i]=INF;
    q.push(0);
    while(!q.empty()){
        t=q.front(),q.pop(),vis[t]=0;
        for(int i=be[t];i;i=e[i].nxt)dis[e[i].t]>dis[t]+e[i].v?dis[e[i].t]=dis[t]+e[i].v,(!vis[e[i].t]?q.push(e[i].t),vis[e[i].t]=1:0):0;
    }
}
long long ANS(long long x){
    tot=0;
    for(int i=0;i<mn;++i)tot+=max(0ll,x-dis[i]+mn)/mn;
    return tot;
}
int main(){
    scanf("%d%lld%lld",&n,&bl,&br);
    for(int i=1;i<=n;++i)scanf("%d",&a[i]),mn=min(mn*1ll,a[i]?a[i]*1ll:INF);
    for(int i=0;i<mn;++i)for(int j=1;j<=n;++j)add(i,(i+a[j])%mn,a[j]);
    SPFA();
    printf("%lld",ANS(br)-ANS(bl-1));
    return 0;
}

转载于:https://www.cnblogs.com/xryjr233/p/BZOJ2118.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值