麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Codeforces Round #362 (Div. 2) C. Lorenzo Von Matterhorn(LCA思想)

2019-11-10 19:08:55
字體:
供稿:網(wǎng)友

題目鏈接:http://codeforces.com/contest/697/PRoblem/C

【中文題意】給你一棵完全二叉樹,第一層為 1,第二層從左到右為2,3。依次往下…….一共有n個操作,有兩種操作。 第一種操作:1 u,v,w。將u到v之間的路徑上的每一條邊的值+w。 第二種操作:2 u,v。輸出從u到v之間的路徑上的邊的權(quán)值和。 【思路分析】首先對于完全二叉樹來說,1e18這個數(shù)據(jù)范圍太大,如果構(gòu)建一棵這樣的二叉樹,不僅時間上會超過限制,而且空間上也會超過限制。所以呢,我們沒有必要把所有的結(jié)點都表示出來,只需用到哪個表示哪個即可。那么怎么更新路徑和查找路徑呢,更新路徑的話類似我們查找兩個結(jié)點的最近公共祖先,把結(jié)點的值存入map里面即可,另外一條邊的權(quán)值可以加在一個點上面,因為要查找邊肯定從點開始。 【AC代碼】

#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<queue>#include<stack>#include<map>#include<algorithm>using namespace std;#define LL long longmap<LL,LL >ma;int main(){ int n; while(~scanf("%d",&n)) { ma.clear(); int choice; for(int i=1;i<=n;i++) { scanf("%d",&choice); LL u,v,w; if(choice==1) { scanf("%lld %lld %lld",&u,&v,&w); while(u!=v) { if(u>v) { ma[u]+=w; u/=2; } else { ma[v]+=w; v/=2; } } } else { scanf("%lld%lld",&u,&v); LL re=0; while(u!=v) { if(u>v) { re+=ma[u]; u/=2; } else { re+=ma[v]; v/=2; } } printf("%lld/n",re); } } } return 0;}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91社区在线观看 | 欧美成人免费香蕉 | 一级成人欧美一区在线观看 | 黄色网址在线免费播放 | 中国产一级毛片 | 天天色狠狠干 | 亚洲小视频在线播放 | 午夜免费网| 久久精品一二三区 | h视频免费在线观看 | 欧美一级小视频 | 亚洲精品动漫在线观看 | 性爱视频免费 | 国产精品久久久免费看 | 一级毛片免费一级 | 精品国产一区二区三区在线观看 | av免费入口 | 91久久精品一二三区 | 中文字幕伦乱 | 国产亚洲欧美日韩在线观看不卡 | 在线天堂中文在线资源网 | 欧美性生活xxxxx | 午夜视频国产 | 亚洲看片网 | 久久久电影电视剧免费看 | 福利在线免费 | 日韩黄色一级视频 | 亚洲精品v天堂中文字幕 | 国产亚洲欧美日韩高清 | 国产在线观看av | 天天看夜夜爽 | 毛片在线免费 | 欧美一级特黄aaaaaaa什 | 99最新地址 | 欧美精品欧美 | 一级网站 | 一区二区久久久久草草 | 天天天干夜夜夜操 | 精品国内视频 | 一级毛片在线免费播放 | 毛片毛片 |