当前位置: 首页 > news >正文

九江建网站报价wordpress wiki 整合

九江建网站报价,wordpress wiki 整合,游戏网站建设方案百度文库,桐城做淘宝店铺网站公司题目传送门: P2371 [国家集训队] 墨墨的等式 - 洛谷 (luogu.com.cn) 前言: 这道题主要求我们计算在区间 中 能使等式 存在非负整数解,总体来难度的话还是挺大的,下面为大家详细讲解解题思路。 本题狠心思路&#xff1…

题目传送门:

P2371 [国家集训队] 墨墨的等式 - 洛谷 (luogu.com.cn)

前言:

这道题主要求我们计算在区间  [l,r]  中 b  能使等式  {\textstyle \sum_{i=1}^{n}}a_{i} x_{i}=b  存在非负整数解,总体来难度的话还是挺大的,下面为大家详细讲解解题思路。

本题狠心思路:

        我们采用同余最短路的方法来解决这个问题。同余最短路的狠心思想是利用余数的心智,将一个复杂的线性组合存在性问题转化为图论中的最短路问题,通过构件图并计算最短路径来确定满足条件的 b  的个数。

#具体步骤:

        1、选择模数:

                给定的  n  个系数  a_{1},a_{2}\cdots ,a_{n}  中选择一个非零的  a_{i}  作为模数 mod  ,通常选择最小的非零  a_{i}  ,作为模数可以使后续构建的图的节点数相对较少,减少 计算量。

        2、构建图:

                将所有可能的余数 0 到  mod-1  看做图中的节点。对于每个  a_{j} (1\le j\le n)  ,从节点 k 向节点  (k+a_{j})mod  mod  连着一条长度为 a_{j}  的边。

        3、求解最短路:

                        我们使用 Dijkstra 等最短路算法,以 0 为起点,计算到每个节点  i  的最短路路径的长度  dis[i]  。这里的  dis[i]  表示能得到余数为  i  的最小的  b  值。具体来说,从起点 0 开始,不断更新到其他节点的最短距离,当遍历完所有可能的边后,就能得到从 0 到每个余数节点的最短路径长度,当遍历完所有可能的边后后,就能得到从 0 到每个余数节点的最短路径长度。

        4、统计答案:

                对于给定的区间  [l,r]  ,遍历所有余数 i  (0\le i < mod)   。对于每个余数  i  ,能的到余数为  i  的最小的  b  的值是  dis[i]  ,那么满足   dis[i]+k \times mod \in [l,r]   的非负整数  k

的个数就是该余数对应的满足条件  b  的个数。我们可以通过计算满足不等式    l \le dis[i]+k \times mod \le r   的  k  的范围来得到这个个数。具体计算的时候,我们要先计算  k  的下线     left = max(0,\left \lceil \frac{l-dis[i]}{mod} \right \rceil )     和上限   right=\left \lfloor \frac{r-dis[i]}{mod} \right \rfloor   ,则满足条件的  k  的个数为   max(0,right - left +1)   ,将所有余数对应的个数累脚起来就是最答案。

##示例解释:

        假设我们输入 n=2,t=5,r=10,a_{1}=3,a_{2}=5  。

                选择  mod=3  作为模数。

                构建图:

                        从节点 0 向节点  (0,3)mod3=0  连长度为 3 的边,向节点   (0,5)mod3=2  连长度为 5 的边。

                        从节点 1 向节点 (1+3)mod3=1  连长度为 3 的边,向节点   (1+5)mod3=0   连长度 5 的边。

                        从节点 2 向节点  (2+3)mo3=2   连长度为 3 的边,向节点  (2+5)mod3=1   连长度为 5 的边。

        使用 Dijkstra 算法计算最短路,得到    dis[0]=0,ds[1]=5,dis[2]=3  。

        统计答案:

                对于  i=0  ;

                  计算   left=max(0,\left \lceil \frac{5-0}{3} \right \rceil )=2,right=\left \lfloor \frac{10-0}{3} \right \rfloor   ,满足条件的 k 的有 3 - 2 + 1 = 2 个,对应的 b 为 2 * 3 = 6 和 3 * 3 = 9. 。

                对于 i=1  ;   

                        计算  left=max(0,\left \lceil \frac{5-3}{3} \right \rceil ),right=\left \lfloor \frac{10-5}{3} \right \rfloor =1     ,满足条件的 k 有 1 - 0 + 1 = 2个,对应的 b 为 5 + 0 * 3 = 5 和 5 + 1 * 3 = 8.

                对于  i=2  ;

                        计算  left = max()0,\left \lceil \frac{5-3}{3} \right \rceil )=1,right = \left \lfloor \frac{10-3}{3} \right \rfloor =2    ,满足条件的 k 有 2 - 1 + 1 =2 个,但其中 b = 3 + 1 * 3 =6 和 b = 3 + 2 * 3 = 9 与前面重复,只新增 1 个不重复的 b 。

                最终满足条件的 b 的个数为 5 。

###复杂度:

        1、时间复杂度:

                O(mod \times n \times log(mod))   。

        2、空间复杂度:

                O(mod \times n) 。

####代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;const int MAX = 15;
const int MAN = 5e5 + 5;struct Node {LL dis;int u;Node(LL _dis, int _u) : dis(_dis), u(_u) {}bool operator>(const Node& other) const {return dis > other.dis;}
};int n;
LL l, r;
int a[MAX];
LL dis[MAN];// 计算区间 [l, r] 内满足条件的 b 的数量
LL c(LL l, LL r, LL base, LL mod) {if (base > r) return 0;LL left = max(0LL, (l - base + mod - 1) / mod);LL right = (r - base) / mod;return max(0LL, right - left + 1);
}int main() {cin >> n >> l >> r;for (int i = 0; i < n; ++i) {cin >> a[i];}// 找到最小的非零 a[i] 作为模数int mod = 0;for (int i = 0; i < n; ++i) {if (a[i] > 0 && (mod == 0 || a[i] < mod)) {mod = a[i];}}if (mod == 0) {cout << (l == 0 && r == 0 ? 1 : 0) << endl;return 0;}// 初始化距离数组fill(dis, dis + mod, LLONG_MAX);dis[0] = 0;// 使用优先队列进行 Dijkstra 算法priority_queue<Node, vector<Node>, greater<Node>> pq;pq.push(Node(0, 0));while (!pq.empty()) {Node cur = pq.top();pq.pop();LL d = cur.dis;int u = cur.u;if (d > dis[u]) continue;for (int i = 0; i < n; ++i) {if (a[i] == 0) continue;int v = (u + a[i]) % mod;LL N = d + a[i];if (N < dis[v]) {dis[v] = N;pq.push(Node(N, v));}}}// 统计满足条件的 b 的数量LL ans = 0;for (int i = 0; i < mod; ++i) {ans += c(l, r, dis[i], mod);}cout << ans << endl;return 0;
}

                        

http://www.dtcms.com/a/561926.html

相关文章:

  • 中英文版网站建设小广告制作
  • 05-深度学习的原理:探讨深度学习的工作原理和数学基础
  • 【深度学习新浪潮】AI缺陷检测:从技术原理到工业落地实践
  • lol英雄介绍网站模板网络广告推广员
  • 接单网站设计 只做设计图报价cpa推广联盟平台
  • kotlin学习 基础知识一览
  • 开通建立企业网站谷歌浏览器下载安卓版
  • 基于 venv 快速搭建 Python 环境
  • C 文件操作全解速览
  • MCP指南
  • 基于双向时序卷积网络(BiTCN)与支持向量机(SVM)混合模型的时间序列预测代码Matlab源码
  • 怎样免费做一个网站免费推广app是什么意思
  • 构建现代Web应用:使用React框架打造单页面应用
  • 仿站是什么企业vi设计欣赏
  • 招聘 负责网站开发购买了域名怎么使用
  • C++信息学奥赛 递推-动态规划 数塔与过河卒模型实战解析 图例+详解+状态转移方程
  • 具身智能实战(一):物体的抓取1(sdk)
  • 公网ip与内网ip
  • 04-深度学习的基本概念:涵盖深度学习中的关键术语和原理
  • 下海做公关的网站类似于凡科的网站
  • WSL子系统(Ubuntu)安装Docker
  • 服装网站建设策划案杭州设计公司logo
  • Linux | i.MX6ULL Mqtt 移植教程
  • 谷歌 网站做推广中国住建部
  • 临海受欢迎营销型网站建设百度一下你就知道了主页
  • SlideSCI:PPT功能增强
  • DevOps工具链对比,CodeArts和TikLab哪一款更好用?
  • 商城网站系统建设方案做网站报价出名的
  • 面向IT和OT系统一线开发者的UNS(统一命名空间)介绍
  • 重庆最便宜的网站建设公司2024年新冠第三波症状分析