Codeforces 696A. Lorenzo Von Matterhorn(map离散化)
2016-07-16 16:38
417 查看
题目链接
一是把u到v最短路上的所有边增加w的权值;
二是询问u到v最短路上的权值和。
简单题意
给出一颗二叉树,边权初始为0,和一些询问,询问有两种操作:一是把u到v最短路上的所有边增加w的权值;
二是询问u到v最短路上的权值和。
思路
因为是二叉树,所以u到v的最短路肯定就是两点到LCA的路,直接暴力搞就好,但是因为节点数有1e18,数组开不下,所以用map保存。代码
#include <bits/stdc++.h> using namespace std; map<long long,long long > M; int main (){ int T; cin >>T; while(T --){ int opt; long long u,v,cost; scanf("%d %I64d %I64d",&opt,&u,&v); if(opt == 1){ scanf("%I64d",&cost); if(u < v) swap(u,v); while(u != v){ while(u>v) {M[u] += cost;u/=2;} while(v>u) {M[v] += cost;v/=2;} } } if(opt == 2){ if(u < v) swap(u,v); long long ans = 0; while(u != v){ while(u>v) {ans += M[u];u/=2;} while(v>u) {ans += M[v];v/=2;} } printf("%I64d\n",ans); } } return 0; }
相关文章推荐
- 建立ROS的代码环境
- 【Spring 2】spring的属性注入形式
- 源码分析-java-AbstractCollection
- jQuery之动画效果
- Java设计模式—中介者模式
- Fragment的setUserVisibleHint方法实现懒加载
- Android CrashHandler编写自己的异常捕获类
- css鼠标手型
- 2016.07.16【初中部 NOIP提高组 】模拟赛C
- hdu1048-密码问题 字符串转换
- Android的四种基本布局
- 【Spring 2】spring的属性注入形式
- Java设计模式—中介者模式
- Hibernate学习笔记--------1.单表操作
- SCOI2016围棋
- php对特殊字符的处理
- android studio 修改文件后出现类型转换错误
- jQuery Event对象的属性和方法
- Error 、Exception 以及如何处理
- 2. mac mysql error