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

服装设计网站哪个好全网推广怎么做

服装设计网站哪个好,全网推广怎么做,做网站单网页,wordpress本地到Problem - G - Codeforces 题意: 思路: 首先,目标值和结点权值是直接联系的,最值不可能直接贪心,一定是考虑去枚举一些东西,依靠这种枚举可以遍历所有的有效情况,思考的方向一定是枚举 如果去…

Problem - G - Codeforces

题意:

思路:

首先,目标值和结点权值是直接联系的,最值不可能直接贪心,一定是考虑去枚举一些东西,依靠这种枚举可以遍历所有的有效情况,思考的方向一定是枚举

如果去直接在链上枚举的话, 复杂度是O(nq),肯定不行

注意到一条路径上的前缀或值不会超过 logV个,因此考虑枚举前缀或值

 

关于每次跳使前缀或值变化的最深的点,我是这样理解的

如果考虑在链上枚举,如果前缀或值不变,那么这样的枚举是无效的,我们直接考虑跳着枚举,只枚举所有有效情况

关于怎么跳其实可以参考树上倍增往上跳的跳法,记录一个数组指向下一个结点,在dfs上维护即可,有点像在树链上DP

Code:

#include <bits/stdc++.h>#define int long longconstexpr int N = 2e5 + 10;std::vector<int> adj[N];int n;
int a[N];
int dep[N];
int f[N][33], s[N][33], lst[N][33];void dfs(int u, int fa) {dep[u] = dep[fa] + 1;f[u][0] = fa;for (int j = 1; j <= 30; j ++) f[u][j] = f[f[u][j - 1]][j - 1];int val = a[u];for (int j = 30; j >= 0; j --) {if (!((val >> j) & 1)) {lst[u][j] = lst[fa][j];s[u][j] = s[fa][j];}else {lst[u][j] = u;s[u][j] = s[fa][j] + 1;}}for (auto v : adj[u]) {if (v == fa) continue;dfs(v, u);}
}
int lca(int u, int v) {if (dep[u] < dep[v]) std::swap(u, v);for (int j = 30; j >= 0; j --) {if (dep[f[u][j]] >= dep[v]) {u = f[u][j];}}if (u == v) return u;for (int j = 30; j >= 0; j --) {if (f[u][j] != f[v][j]) {u = f[u][j];v = f[v][j];}}return f[u][0];
}
int calc(int x, int y, int lca) {int res = 0;for (int j = 0; j <= 30; j ++) {if (s[x][j] + s[y][j] - s[lca][j] - s[f[lca][0]][j]) res ++;}return res;
}
void solve() {std::cin >> n;for (int i = 1; i <= n; i ++) {adj[i].clear();dep[i] = 0;for (int j = 30; j >= 0; j --) {f[i][j] = s[i][j] = lst[i][j] = 0;}}for (int i = 1; i <= n; i ++) std::cin >> a[i];for (int i = 1; i <= n - 1; i ++) {int u, v;std::cin >> u >> v;adj[u].push_back(v);adj[v].push_back(u);}dfs(1, 0);int q;int ans = 0;std::cin >> q;while(q --) {int x, y;std::cin >> x >> y;int cur = x, val = a[x];ans = 0;while(1) {int nxt = 0, mx = 0;ans = std::max(ans, calc(x, cur, lca(x, cur)) + calc(cur, y, lca(cur, y)));for (int j = 30; j >= 0; j --) {if (!((val >> j) & 1)) {if (dep[lst[cur][j]] >= dep[lca(x, y)]) {if (dep[lst[cur][j]] > mx) {mx = dep[lst[cur][j]];nxt = lst[cur][j];}}}}if (!mx) break;val |= a[nxt];cur = nxt;}cur = y, val = a[y];while(1) {int nxt = 0, mx = 0;ans = std::max(ans, calc(x, cur, lca(x, cur)) + calc(cur, y, lca(cur, y)));for (int j = 30; j >= 0; j --) {if (!((val >> j) & 1)) {if (dep[lst[cur][j]] >= dep[lca(x, y)]) {if (dep[lst[cur][j]] > mx) {mx = dep[lst[cur][j]];nxt = lst[cur][j];}}}}if (!mx) break;val |= a[nxt];cur = nxt;}std::cout << ans << " ";}std::cout << "\n";
}
signed main() {std::ios::sync_with_stdio(false);std::cin.tie(nullptr);int t = 1;std::cin >> t;while(t --) {solve();}return 0;
}

http://www.hengruixuexiao.com/news/51314.html

相关文章:

  • 如何在网站后台找到死链接神马关键词快速排名软件
  • 免费网站源代码百度网盘会员
  • 深圳网站建设设计火星时代教育培训机构学费多少
  • jsp做的婚恋网站百度商务合作电话
  • 政府部门门户网站建设中标公告慧聪网seo页面优化
  • 上海网站建设服务关键词优化排名用哪个软件比较好
  • 专业的佛山网站设计百度搜索app下载
  • 怒江州住房和城乡建设局网站网站ui设计
  • 蘑菇头表情包制作网站首页
  • wordpress如何降级网站关键词百度自然排名优化
  • 做网站的题目2345网址导航官网下载安装
  • 哪里有网站建设中心独立站怎么建站
  • 叫企业做的网站可不可以自己改主题百度知道合伙人
  • 做海报那个网站好今日头条热榜
  • 网站建站方案百度账号中心
  • 手机网站建设沈阳bt种子磁力搜索
  • 网站建设利益分析台州网站建设优化
  • 孟州网站软文推广代理平台
  • 网站建设需求怎么写360收录查询
  • 上海交通建设委员会网站关键字搜索
  • 做视频网站 视频放在哪里网站广告调词软件
  • 沈阳优化网站推广渠道怎么写
  • asp网站域名授权link友情买卖
  • 做网站的公司如何运营公司网站推广方案
  • 手机商店app下载seo优化按天扣费
  • wordpress免费自定义模板装修教程百度如何优化
  • 杭州设计网站最好的公司世界足球排名
  • 中山网站建设价位百度app客服人工电话
  • 国外知名平面设计网站老客外链
  • 兰溪做网站系统优化方法