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

软件开发项目/seo谷歌外贸推广

软件开发项目,seo谷歌外贸推广,门户网站如何帮企业做宣传,wordpress 首页简单的 RMQ; 先预处理得到 所有 节点的 公共祖先 和 dfs 得到所有节点的父亲节点; 然后 询问时,从自己出发向上找父亲, 然后 得到所有的节点;排序一下 不知道 这题这样也能过;为什么不会超时啊&am…

简单的  RMQ;  先预处理得到  所有 节点的 公共祖先  和  dfs 得到所有节点的父亲节点;  然后  询问时,从自己出发向上找父亲, 然后  得到所有的节点;排序一下

不知道  这题这样也能过;为什么不会超时啊???????????;

  1 #include<iostream>
  2 #include<cstring>
  3 #include<algorithm>
  4 #include<cmath>
  5 #include<stdio.h>
  6 #include<vector>
  7 using namespace std;
  8 const int maxn = 80010;
  9 struct date{
 10    int v,next;
 11 }edge[maxn<<1]; int total,head[maxn];
 12 int N,Q,node[maxn],fath[maxn];
 13 void add_edge( int u,int v ){
 14     edge[total].v = v;
 15     edge[total].next = head[u];
 16     head[u] = total++;
 17 }
 18 bool vis[maxn]; int dep[maxn<<1],sta[maxn<<1],tab[maxn<<1],dp[maxn<<1][20],num;
 19 void dfs1( int son,int fa ){
 20     vis[son] = true; fath[son] = fa;
 21     for( int i = head[son]; i != -1; i = edge[i].next ){
 22         int v = edge[i].v;
 23         if( !vis[v] )dfs1( v,son );
 24     }
 25 }
 26 void LCA( int son,int deep ){
 27     dep[num] = deep; sta[son] = num; tab[num] = son;   num++; vis[son] = true;
 28     for( int i = head[son]; i != -1; i = edge[i].next ){
 29         int v = edge[i].v;
 30         if( !vis[v] ){ LCA( v,deep+1 ); dep[num] = deep; tab[num] = son; num++; }
 31     }
 32 }
 33 int work( int n1,int n2 ){
 34    if( dep[n1] < dep[n2] )return n1;
 35    return n2;
 36 }
 37 void RMQ( ){
 38     for( int i = 1; i <= num; i++ )dp[i][0] = i;
 39     for( int i = 1; (1<<i) <= num; i++ ){
 40         for( int j = 1; j - 1 + (1<<i) <= num; j++ )
 41         dp[j][i] = work( dp[j][i-1], dp[j+(1<<(i-1))][i-1] );
 42     }
 43 }
 44 int query( int L,int R ){
 45     int k = 0;
 46     while( (1<<(k+1)) <= R-L+1 )k++;
 47     return tab[work( dp[L][k],dp[R-(1<<k)+1][k] )];
 48 }
 49 vector<int>vv;
 50 bool cmp( int a,int b ){
 51    return a > b;
 52 }
 53 void DO( int u,int v,int fa,int k ){
 54     vv.clear();
 55     while( u != fa ){
 56        vv.push_back( node[u] );
 57        u = fath[u];
 58     }
 59     while( v != fa  ){
 60        vv.push_back( node[v] );
 61        v = fath[v];
 62     }
 63     vv.push_back( node[fa] ); sort( vv.begin(),vv.end(),cmp );
 64     //for( int i = 0; i < vv.size(); i++ )cout<<vv[i]<<endl;
 65     if( vv.size() < k )puts("invalid request!");
 66     else printf("%d\n",vv[k-1]);
 67 }
 68 int main(){
 69       while( scanf("%d%d",&N,&Q) != EOF ){
 70           memset( head,-1,sizeof(head) ); total = 0;
 71           for( int i = 0; i <= N; i++ )fath[i] = i;
 72           for( int i = 1; i <= N; i++ )scanf("%d",&node[i]);
 73           for( int i = 1; i <  N; i++ )
 74           {
 75               int u,v; scanf("%d%d",&u,&v);
 76               add_edge( u,v );
 77               add_edge( v,u );
 78           }
 79           memset( vis,0,sizeof(vis) );
 80           dfs1( 1,-1 ); fath[1] = 1;
 81           memset( vis,0,sizeof(vis) );num = 1;
 82           LCA( 1,1 );
 83           //for( int i = 1; i < num; i++ )
 84           //cout<<i<<" "<<dep[i]<<" "<<tab[i]<<endl;
 85           num--;  RMQ( );
 86           while( Q-- ){
 87                int k,u,v; scanf("%d%d%d",&k,&u,&v);
 88                if( k == 0 ){ node[u] = v; continue; }
 89                //cout<<node[4]<<endl;
 90                if( sta[u] > sta[v] )swap( u,v );
 91                //cout<<query( sta[u],sta[v] )<<endl;
 92                DO( u,v,query( sta[u],sta[v] ),k );
 93           }
 94       }
 95       return 0;
 96 }
 97 /*
 98 
 99 7 100
100 5 1 4 2 4 3 6
101 1 2
102 1 3
103 1 4
104 2 5
105 3 6
106 4 7
107 
108 */
View Code

 

转载于:https://www.cnblogs.com/wulangzhou/p/3350300.html

http://www.lbrq.cn/news/762211.html

相关文章:

  • 怎样做打赏网站/关键字c语言
  • 福田做棋牌网站建设找哪家公司好/百度竞价seo排名
  • app要有网站做基础知识/班级优化大师app下载学生版
  • 可以做简历的网站/网络电商推广方案
  • 做微信表情的微信官方网站/浙江seo技术培训
  • 申请网站就是做网站吗/重庆森林电影简介
  • 装修案例欣赏/长沙百度首页优化排名
  • 美工做图哪个网站好/网站怎么做推广
  • 做网站需要懂哪些语言/网站seo推广计划
  • 龙岗网站/app推广联盟平台
  • 万户网站制作/百度sem是什么意思
  • 同企网站建设做网站/网络营销八大工具
  • 做数据分析好看的网站/培训心得体会范文大全1000字
  • 怎样做免费网站卖东西/指数平滑法
  • 服务建设网站/网页制作的步骤
  • 商城手机网站建设多少钱/四种基本营销模式
  • 企业网站如何优化排名/站长工具网址是多少
  • 网站 水印/谷歌收录提交入口
  • 商城源代码/seo推广方案怎么做
  • 长春怎么注册网站平台/东莞排名优化团队
  • 手机怎么做电子书下载网站/五年级下册数学优化设计答案
  • 仿苹果手机 网站源码/网站首页排名
  • 网站 asp php/干净无广告的搜索引擎
  • 网站构建的基本流程/济南seo排行榜
  • 判断网站cms/手机制作网站app
  • 网站开发建设须知/指数函数图像
  • 网站空间测试/网站推广平台排行
  • 合肥做网站便宜/百度关键词多少钱一个月
  • 网站开发一般要用到哪些软件/百度云搜索引擎入口官方
  • 做网站一万/站长之家端口扫描
  • Dijkstra与Floyd求最短路算法简介
  • Visual Studio2019/2022离线安装完整教程(含闪退解决方法)
  • 手写MyBatis第16弹:泛型魔法应用:MyBatis如何破解List的运行时类型
  • 全球AI安全防护迈入新阶段:F5推出全新AI驱动型应用AI安全解决方案
  • XGBoost 的适用场景以及与 CNN、LSTM 的区别
  • SQL Server增加对UTF-8的支持