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

做商城网站需要什么条件北京高端品牌网站定制

做商城网站需要什么条件,北京高端品牌网站定制,怎么浏览英文网站,网站建设价格明细表F题 解题思路 数论 有限小数的条件 p q \frac{p}{q} qp​ 在 k k k 进制下是有限小数,当且仅当 q q q 的所有质因数都是 p p p 或 k k k 的质因数。 即,若 q q q 的质因数分解为 q ∏ i p i a i q \prod_{i} p_i^{a_i} q∏i​piai​​&#x…

F题

在这里插入图片描述

解题思路

数论

有限小数的条件

p q \frac{p}{q} qp k k k 进制下是有限小数,当且仅当 q q q 的所有质因数都是 p p p k k k 的质因数。

即,若 q q q 的质因数分解为 q = ∏ i p i a i q = \prod_{i} p_i^{a_i} q=ipiai,则每个 p i p_i pi 必须满足 p i ∣ p p_i \mid p pip p i ∣ k p_i \mid k pik

数学表达
由于 p q \frac{p}{q} qp k k k 进制下是有限小数,等价于 q q q 能整除 p × k ∞ p \times k^{\infty} p×k(即 q q q 的所有质因数必须来自 p p p k k k 的质因数)。

1. 质因数分解
  • p p p k k k 进行质因数分解,合并它们的质因数集合。
    • p p p 的质因数分解为 p = ∏ i p i e i p = \prod_{i} p_i^{e_i} p=ipiei
    • k k k 的质因数分解为 k = ∏ i p i f i k = \prod_{i} p_i^{f_i} k=ipifi(可能与 p p p 的质因数重叠)。
  • 合并后的质因数集合即为所有可能的 q q q 的质因数来源。
2. 构造合法的 q q q

q q q 必须是这些质因数的乘积,且每个质因数的指数满足:

  • 如果 p i p_i pi 来自 p p p,则 a i ≤ e i a_i \leq e_i aiei
  • 如果 p i p_i pi 来自 k k k,则 a i a_i ai 可以任意大(因为 k ∞ k^{\infty} k 可覆盖),但需保证 q ≤ x q \leq x qx
3. DFS 枚举所有可能的 q q q
  • 使用深度优先搜索(DFS)枚举所有可能的 q q q 的组合。
  • 对于每个质因数 p i p_i pi,尝试其可能的指数 a i a_i ai(从 0 0 0 开始,直到 p i a i × 当前积 ≤ x p_i^{a_i} \times \text{当前积} \leq x piai×当前积x)。
  • 统计所有满足 q ≤ x q \leq x qx 的组合。
#include <bits/stdc++.h>
using namespace std;
#define asd(i, a, b) for (int i = a; i <= b; i++)
#define int long long
const int inf = 0x3f3f3f3f3f3f3f3f, N = 1e6 + 5;
unordered_map<int, int> mp;//不能用map,会超时
int num[N], pri[N], cnt, ans, x;void dfs(int i, int now) 
{int j = num[i];while (true) {if (i <= cnt)dfs(i + 1, now);if (j && now <= x / pri[i]) {now *= pri[i];ans++;j--;} else {break;}}
}void split(int x, int y)
{for (int i = 2; i <= x / i; ++i){while (x % i == 0)x /= i, mp[i] += y;}if (x > 1)mp[x] += y;
}signed main()
{ios::sync_with_stdio(false);int p, k;cin >> p >> x >> k;split(p, 1);split(k, 64);for (auto i : mp){num[++cnt] = i.second;pri[cnt] = i.first;}dfs(1, 1);cout << ans + 1 << endl;return 0;
}

I题

在这里插入图片描述

解题思路

组合数学+dp

排列区间的覆盖

为了确保每一个位置 i i i 都被至少一个长度为 k k k 的排列区间覆盖,序列的开头和结尾必须分别有一个排列区间。

具体来说:

  • k k k 个数字必须是一个排列(即 [ 1 , k ] [1,k] [1,k] 是排列)
  • 最后 k k k 个数字也必须是一个排列(即 [ n − k + 1 , n ] [n-k+1,n] [nk+1,n] 是排列)

中间的排列区间可以重叠,但必须确保没有位置被"遗漏"。


动态规划定义

定义 f i f_i fi 为长度为 i i i 的满足条件的序列的数量。

初始条件

  • 对于 i < k i < k i<k f i = 0 f_i = 0 fi=0(无法形成长度为 k k k 的排列区间)
  • 对于 i = k i = k i=k f k = k ! f_k = k! fk=k! 1 ∼ k 1\sim k 1k 的所有排列)

转移思路

对于 i > k i > k i>k,从较短的序列扩展而来:

  1. 假设已有长度为 j j j 的合法序列( j ≥ k j \geq k jk
  2. 在其末尾添加 i − j i-j ij 个数字( i − j ≤ k i-j \leq k ijk
  3. 确保:
    • 新序列的最后 k k k 个数字是一个排列
    • 新添加部分不会在中间形成新的排列区间

引入辅助函数 g i − j g_{i-j} gij 表示这种扩展方式数。


辅助函数 g g g 的定义

g m g_m gm 表示:

  1. 在一个排列后添加 m m m 个数字( m ≤ k m \leq k mk
  2. 使得:
    • 最后 k k k 个数字是新排列
    • 新添加的 m m m 个数字内部不形成其他排列区间

计算公式
g m = m ! − ∑ j = 1 m − 1 g j × ( m − j ) ! g_m = m! - \sum_{j=1}^{m-1} g_j \times (m-j)! gm=m!j=1m1gj×(mj)!

其中:

  • m ! m! m!:不考虑限制的总方式数
  • g j × ( m − j ) ! g_j \times (m-j)! gj×(mj)!:减去在位置 j j j 提前形成排列区间的情况

动态规划转移方程

对于 f i f_i fi i > k i > k i>k):
f i = ∑ j = i − k i − 1 f j × g i − j f_i = \sum_{j=i-k}^{i-1} f_j \times g_{i-j} fi=j=iki1fj×gij

表示从所有可能的 f j f_j fj 转移而来,乘以对应的扩展方式数 g i − j g_{i-j} gij


算法流程

  1. 预处理计算 g 1 g_1 g1 g k g_k gk
  2. 初始化 f 0 f_0 f0 f k f_k fk
  3. 使用转移方程计算 f k + 1 f_{k+1} fk+1 f n f_n fn
  4. 最终结果: f n f_n fn

时间复杂度

  • 计算 g g g 数组: O ( k 2 ) O(k^2) O(k2)
  • 计算 f f f 数组: O ( n ⋅ k ) O(n \cdot k) O(nk)
  • 总复杂度: O ( k 2 + n ⋅ k ) O(k^2 + n \cdot k) O(k2+nk)
#include <bits/stdc++.h>
using namespace std;
#define asd(i, a, b) for (int i = a; i <= b; i++)
#define int long long
const int inf = 0x3f3f3f3f3f3f3f3f, N = 1e5 + 5, mod = 998244353;
int dp[N], g[N], fac[N];void init(int k)
{fac[0] = 1;asd(i, 1, N - 1) fac[i] = fac[i - 1] * i % mod;asd(m, 1, k){g[m] = fac[m];asd(j, 1, m - 1){g[m] = (g[m] - g[j] * fac[m - j] % mod + mod) % mod;}}
}signed main()
{ios::sync_with_stdio(false);cin.tie(0);int n, k;cin >> n >> k;if (k > n){cout << 0 << endl;return 0;}init(k);asd(i, 1, k - 1) dp[i] = 0;dp[k] = fac[k];asd(i, k + 1, n){dp[i] = 0;int start = max(i - k, k);asd(j, start, i - 1){dp[i] = (dp[i] + dp[j] * g[i - j] % mod) % mod;}}cout << dp[n] << endl;return 0;
}

H题

在这里插入图片描述

解题思路

lca+树上差分+二分

1. 问题转化
  • 将城市和铁路视为一棵无向树,选择首都即选择树的根。
  • 铁路方向固定为从子节点指向父节点(指向首都)。
  • 朋友会面城市为两人在当前根下的最近公共祖先(LCA)。
  • 会面路径长度为两人到LCA的路径长度的最大值。
2. 关键观察
  • 对于固定的根,所有朋友对的会面路径长度可以通过LCA快速计算。
  • 直接枚举所有可能的根(城市)不可行(因为n是1e5量级),需要更高效的方法。
3. 二分答案
  • 二分搜索可能的答案(最小化最大路径长度)。
  • 对于每个候选值mid,验证是否存在一个根,使得所有朋友对的会面路径长度 ≤ mid
4. 验证方法(check函数)
  • 对于每对朋友(x_i, y_i)
    • 若原始路径长度 ≤ mid,跳过。
    • 否则,限制根的位置必须满足:
      • 如果x_i到LCA的路径较长,则根必须在x_imid级祖先的子树内。
      • 否则,根必须在y_i(dis[i]-mid-1)级祖先的子树外。
  • 使用差分数组标记所有限制条件的交集,检查是否存在满足所有限制的根。
5. 复杂度分析
  • 预处理(DFS和倍增数组):O(n log n)
  • 二分验证:O(m log n) 每次验证
  • 总复杂度:O((n + m) log n),适用于题目约束。
6. 输出结果
  • 二分找到的最小满足条件的mid即为答案。
#include <bits/stdc++.h>
using namespace std;
#define asd(i, a, b) for (int i = a; i <= b; i++)
#define int long long
const int inf = 0x3f3f3f3f3f3f3f3f, N = 1e6 + 5;
int dep[N], o[N][22], sz[N], dfn[N], tot, x[N], y[N], dis[N], lca[N], n, m, pre[N];
vector<int> g[N];void dfs(int x, int f)
{dep[x] = dep[f] + 1;sz[x] = 1;o[x][0] = f;if (!dfn[x])dfn[x] = ++tot;for (int i = 1; i <= 20; ++i){o[x][i] = o[o[x][i - 1]][i - 1];}for (const auto &y : g[x]){if (y == f)continue;dfs(y, x);sz[x] += sz[y];}
}int getlca(int x, int y)
{if (dep[x] < dep[y])swap(x, y);for (int i = 20; i >= 0; --i){if (dep[o[x][i]] >= dep[y]){x = o[x][i];}}if (x == y)return x;for (int i = 20; i >= 0; --i){if (o[x][i] != o[y][i]){x = o[x][i];y = o[y][i];}}return o[x][0];
}int getfa(int u, int d)
{for (int i = 20; i >= 0; i--){if (d & (1 << i)){u = o[u][i];}}return u;
}bool check(int lim)
{int cnt = 0, vis = 0;asd(i, 1, m){if (dis[i] <= lim)continue;int distx = dep[x[i]] - dep[lca[i]];int disty = dep[y[i]] - dep[lca[i]];if (distx > lim){int u = getfa(x[i], lim);pre[dfn[u]]++;pre[dfn[u] + sz[u]]--;cnt++;}else{int u = getfa(y[i], dis[i] - lim - 1);pre[1]++;pre[dfn[u]]--;pre[dfn[u] + sz[u]]++;pre[n + 1]--;cnt++;}if (disty > lim){int u = getfa(y[i], lim);pre[dfn[u]]++;pre[dfn[u] + sz[u]]--;cnt++;}else{int u = getfa(x[i], dis[i] - lim - 1);pre[1]++;pre[dfn[u]]--;pre[dfn[u] + sz[u]]++;pre[n + 1]--;cnt++;}}int num = 0;asd(i, 1, n){num += pre[i];if (num == cnt)vis = 1;pre[i] = 0;}return vis;
}signed main()
{ios::sync_with_stdio(false);cin >> n >> m;asd(i, 1, n - 1){int u, v;cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}dfs(1, 0);asd(i, 1, m){cin >> x[i] >> y[i];lca[i] = getlca(x[i], y[i]);dis[i] = dep[x[i]] + dep[y[i]] - 2 * dep[lca[i]];}int l = 0, r = n - 1;while (l <= r){int mid = (l + r) >> 1;if (check(mid))r = mid - 1;elsel = mid + 1;}cout << l << endl;return 0;
}

文章转载自:

http://XjQsX5TU.pzcjq.cn
http://uIesFN0R.pzcjq.cn
http://NRDIEi32.pzcjq.cn
http://HAjBQMOK.pzcjq.cn
http://cF2PVRqL.pzcjq.cn
http://boSDe3xB.pzcjq.cn
http://Ohp7RFIz.pzcjq.cn
http://tHJHlNOi.pzcjq.cn
http://gNVZCRbW.pzcjq.cn
http://pYVkJ7rB.pzcjq.cn
http://3zIcSy8c.pzcjq.cn
http://gzydO3xi.pzcjq.cn
http://f7MRA1F0.pzcjq.cn
http://ph3D0dgA.pzcjq.cn
http://Sumh5KIo.pzcjq.cn
http://y3PEIbAC.pzcjq.cn
http://DPDl78Pf.pzcjq.cn
http://YAJzxvg1.pzcjq.cn
http://zsRvXk9z.pzcjq.cn
http://MnB48SiR.pzcjq.cn
http://eqDr4ONy.pzcjq.cn
http://6zhSpzoh.pzcjq.cn
http://L8ZbD5V7.pzcjq.cn
http://cOaD8RBo.pzcjq.cn
http://XD2IMRkA.pzcjq.cn
http://z5teM3I3.pzcjq.cn
http://IgRDmC3L.pzcjq.cn
http://E1FQSkLd.pzcjq.cn
http://xdTZsXCw.pzcjq.cn
http://BYchWfFh.pzcjq.cn
http://www.dtcms.com/wzjs/628082.html

相关文章:

  • 国际网站开发百度推广建站平台
  • 谁做的四虎网站是多少钱天河网站建设设计
  • 建造网站 备案网页设计实验报告结果分析
  • 阜阳做网站的网络公司公众号免费素材网站
  • 深圳建站科技有限公司专业设计企业网站
  • 上海php网站建设织梦示范网站
  • seo网站优化方案案例哈尔滨网站建设可信赖
  • 足球比分网站建设厦门 网站制作
  • 网站后台超链接怎么做微信公众号 视频网站开发
  • 哪个网站可以做记录视频网站的建设目标文档
  • 有谁用2008做网站服务器开发一个软件能赚多少钱
  • 做网站在哪无锡住房和城乡建设官网
  • 网站反链是什么意思wordpress字体自适应
  • 甘肃省网站建设咨询铜陵做网站的
  • 广州市官网网站建设怎么样怎么样建立自己的网站
  • 网站开发报告书做简历的网站有哪些内容
  • 给被k的网站做友链如何下载海外app
  • dw做网站首页代码内蒙古建筑培训网
  • 遵义网站乡镇网站建设
  • 微信 网站 收费电子商务网站建设自服务器
  • 网站建设工作部署会银行网站模板免费下载
  • 制作网站空间域名微信小程序怎么制作自己的程序
  • 网站云主机吗wordpress ua标识安卓
  • 张家界有没有做网站的公司能自己制作图片的app
  • 做冷饮的网站网站建设kaicz
  • 北京手机网站制作多少钱酒泉网站建设与制作
  • 中国水利建设网站深圳黄页企业名录
  • 网站建设方案内容全球最热门网站
  • 为什么有的网站打不开3g门户 手机上网第一门户
  • 广州自助公司建网站有没有专门找装修公司的网站