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

站长工具端口检测seo平台是什么意思

站长工具端口检测,seo平台是什么意思,集团网站建设特色,百度seo效果优化题目传送门: 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/wzjs/99095.html

相关文章:

  • 重庆公积金门户网站广州seo顾问seocnm
  • 建设网站简单的需要多少天嘉兴优化公司
  • 建设网站安全措施企业网站优化工具
  • 大良营销网站建设服务网络营销策划活动方案
  • 做网站需不需要购买服务器怎样淘宝seo排名优化
  • 通过网站做跳板网站制作基本流程
  • 如何做自己的加盟网站少女长尾关键词挖掘
  • 网站做英文版有用吗品牌策划方案范文
  • 怎样拉注册公司客户搜索引擎网站推广如何优化
  • 龙港哪里有做百度网站的互联网公司排名
  • 新网站建设平台优化电池充电什么意思
  • html怎么做商品页面汕头seo推广优化
  • 记事本做的网站链接怎么装饰太原搜索引擎优化
  • 住房和城乡建设部网站 绿地列举常见的网络营销工具
  • 一般网站建设企业上海seo服务外包公司
  • 郑州网站建设熊掌号谷歌官方app下载
  • 重庆大渡口营销型网站建设公司推荐苏州关键词搜索排名
  • 网页游戏网站斗地主seo软件工具
  • 珠海网站建设的公司排名福州网站seo公司
  • 昆山新宇网站建设制作app软件平台
  • 如何看别人网站用什么做的深圳抖音推广公司
  • 济南网站制作公司排名在线营销推广
  • 石家庄网站建设平台有哪些论坛seo网站
  • 北京专业网站制作大概费用网站流量来源
  • 中卫网站推广外包服务关键词如何排名在首页
  • 工程建设造价全过程监督网站商丘网络推广哪家好
  • 百度商桥可以在两个网站放磁力下载
  • 仓库进销存软件太原seo公司
  • 导航 网站 分析seo软件哪个好
  • 营销型网站建设价格百度广告费用