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

黄冈网站建设当下最流行的营销方式

黄冈网站建设,当下最流行的营销方式,聊城做手机网站建设,网站建设待遇题目 CF2033G 分析 一道很显然是树形dp的题,但非常恶心QwQ。   先不管复杂度,找找递推关系,一种很直接的想法如下(我觉得是错误的): d p [ i ] [ k ] m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o …

题目

CF2033G
在这里插入图片描述

分析

  一道很显然是树形dp的题,但非常恶心QwQ。
  先不管复杂度,找找递推关系,一种很直接的想法如下(我觉得是错误的):

d p [ i ] [ k ] = m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o n i , j [ k ] + 1 ) dp[i][k] = max(dp[fa_{i}][k-1], dp[son_{i,j}[k]+1) dp[i][k]=max(dp[fai][k1],dp[soni,j[k]+1)
其中 d p [ i ] [ k ] dp[i][k] dp[i][k]表示从 i i i开始,能量为 k k k的最远距离
f a i fa_{i} fai表示 i i i的根节点, s o n i , j son_{i,j} soni,j表示 i i i的第 j j j个子节点

  这样的问题是会计入这样的路线,实际距离为2,算成了4:
在这里插入图片描述

  所以,我们得把向上和向下两种情况分开记录:

d p 1 [ i ] dp1[i] dp1[i]表示向下最远距离,由于向下不消耗能量,所以可以少一维
d p 2 [ i ] [ i d ] dp2[i][id] dp2[i][id]表示 i i i节点如果删掉第 i d id id条边后向下最远距离,注意空间限制, d p 2 dp2 dp2得用 v e c t o r vector vector存储, i d id id得另外先预处理好(链式前向星可能会好一点)
i d [ i ] id[i] id[i]表示边 ( i , f a i ) (i, fa_{i}) (i,fai) f a i fa_{i} fai v e c t o r vector vector中的下标
h [ i ] h[i] h[i]表示节点 i i i的深度,根节点深度为 1 1 1

  于是,得到答案的式子为:

A N S ( i , k ) = m a x ( d p 1 [ i ] , d p 2 [ j ] [ i d f r o m i ] + h [ i ] − h [ j ] ) ANS(i, k) = max(dp1[i], dp2[j][id \ from \ \ i] + h[i] - h[j]) ANS(i,k)=max(dp1[i],dp2[j][id from  i]+h[i]h[j])

  后面的部分看起来很复杂,实际上直接用 S T ST ST表维护即可

代码

#include<bits/stdc++.h>
#define N 200005
#define inf 1000000000
using namespace std;
int t, n, q, fa[N][21], h[N], dp1[N], st[N][21];
int id[N];  // 记录每个根边的id 
vector<int> G[N], dp2[N];   // 去掉边i后向下最远 
void cl() {for(int j=0;(1<<j) <= n;j++) {for(int i=1;i<=n;i++) {st[i][j] = -inf;}}for(int i=1;i<=n;i++) {id[i] = 0;dp1[i] = 0;}for(int i=1;i<=n;i++) {vector<int>().swap(G[i]);vector<int>().swap(dp2[i]);}
}
void init(int x, int pre) {for(int j=1;(1<<j) <= h[x];j++) fa[x][j] = fa[fa[x][j-1]][j-1];for(int i=0;i<G[x].size();i++) {int y = G[x][i];if(y == pre) continue;id[y] = i;h[y] = h[x] + 1;fa[y][0] = x;init(y, x);}
}
void dfs(int x, int pre) {dp1[x] = 0;    // dp1是最大,se是第二大int se = -inf; for(int i=0;i<G[x].size();i++) {int y = G[x][i];if(y == pre) continue;dfs(y, x);if(dp1[y] + 1 >= dp1[x]) {se = dp1[x];dp1[x] = dp1[y] + 1;} else if(dp1[y] + 1 > se) {se = dp1[y] + 1;}}for(int i=0;i<G[x].size();i++) {int y = G[x][i];if(y == pre) {dp2[x].push_back(-inf);continue;}if(dp1[x] == dp1[y] + 1) dp2[x].push_back(se);else dp2[x].push_back(dp1[x]);}
}
void show() {cout<<"showing"<<endl;cout<<"id: "; for(int i=1;i<=n;i++) cout<<id[i]<<' '; cout<<endl;cout<<"h: "; for(int i=1;i<=n;i++) cout<<h[i]<<' '; cout<<endl;cout<<"dp1: ";for(int i=1;i<=n;i++) cout<<dp1[i]<<' ';cout<<endl;for(int i=1;i<=n;i++) {for(int j=0;j<G[i].size();j++) {if(G[i][j] == fa[i][0]) continue;printf("root %d, erase %d, dp2: %d\n", i, G[i][j], dp2[i][j]);}}for(int j=0;(1<<j) <= n; j++) {for(int i=1;i<=n;i++) {if((1<<j) <= h[i]) printf("st[%d][%d]: %d \n" ,i, j, st[i][j]);}}cout<<endl;
}
int main() {cin>>t;while(t--) {cin>>n;cl();for(int i=1;i<=n-1;i++) {int u, v; scanf("%d %d", &u, &v);G[u].push_back(v);G[v].push_back(u);} h[1] = 1; id[1] = -1;init(1, 0);dfs(1, 0);for(int i=2;i<=n;i++)  st[i][0] = dp2[fa[i][0]][id[i]] - h[fa[i][0]]; for(int j=1;(1<<j) <= n;j++) {for(int i=1;i<=n;i++) {if((1<<j) <= h[i]) st[i][j] = max(st[i][j-1], st[fa[i][j-1]][j-1]);}}// show();cin>>q;while(q--) {int v, k; scanf("%d %d", &v, &k);k = min(k, h[v]-1);int ans = dp1[v];int step = log2(k), now = v;for(int step=0;(1<<step) <= k; step++) {if(!(k & (1<<step))) continue;ans = max(ans, st[now][step] + h[v]);now = fa[now][step];}printf("%d ", ans);}}
} 
http://www.dinnco.com/news/77498.html

相关文章:

  • 公众号登录平台官网关键词优化排名查询
  • 潍坊网站推广长沙营销推广
  • 2022麻豆区区区三区四区北京网站优化公司
  • 泉做网站的公司郑州seo关键词优化公司
  • 福州推广企业网站seo免费培训视频
  • 这么自己建设网站网站优化排名提升
  • 视频网站建设方案百度一下首页网页百度
  • 怎样用zblog做网站用手机制作自己的网站
  • 网站安全检测在线百度推广登陆平台登录
  • 网站尾部一般怎么做爱采购seo
  • 产品外观设计报价衡阳网站优化公司
  • 网站链接到邮箱怎么做常用的网站推广方法
  • phpcms 网站打不开如何搭建个人网站
  • 做网站会员推广哪个好济南百度竞价代运营
  • 网站建设公司报价淘宝推广方式
  • alipay域名网站网络销售怎么做
  • 网站权限怎么设置方法新手怎么做电商运营
  • 中英文网站建设用两个域名广告营销留电话网站
  • 网站后台怎么做友情链接免费百度广告怎么投放
  • 网站建设的方案书网络营销ppt案例
  • 做订阅号要建立网站吗seoul
  • 郑州网站建设开发公司最新中国新闻
  • 南京cms模板建站卢松松外链工具
  • 怎样做网站上的语种链接seo外包费用
  • 网站密码如何找回密码网络营销策划案怎么写
  • 久久建筑网安全吗提升seo搜索排名
  • 网站分站加盟怎么制作网页链接
  • c2c网站的特点及主要功能品牌推广手段
  • 天津龙腾公司做网站百度网页版登录
  • 良乡网站建设网络优化