[JZOJ100026]图--倍增

题目链接

太懒了,自行搜索

分析

裸倍增,不多说

\(fa[i][j]\)表示\(i\)跳\(2^j\)步走到的点

\(f[i][j]\)表示\(i\)跳\(2^j\)步经过边权之和

\(mi[i][j]\)表示\(i\)跳\(2^j\)步经过的边权最小值

\(fa[i][j]=fa[fa[i][j-1]][j-1]\)

\(f[i][j]=f[i][j-1]+f[fa[i][j-1]][j-1]\)

\(mi[i][j]=min(mi[i][j-1],mi[fa[i][j-1]][j-1])\)

然后一开始我\(naiive\)认为要找一个环上的点开始跳,于是打个了搜索,结果不知道怎么回事一直\(WA\),后面才学到根本不用那么麻烦...太菜了

代码

/*code by RyeCatcher
*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <utility>
#include <queue>
#include <vector>
#include <ext/pb_ds/hash_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#include <iostream>
#define DEBUG freopen("dat.in","r",stdin);freopen("wa.out","w",stdout);
#define FO(x) {freopen(#x".in","r",stdin);freopen(#x".out","w",stdout);}
#define ri register int
#define ll long long
#define ull unsigned long long
#define SIZE 1<<22
using std::min;
using std::max;
using std::priority_queue;
using std::queue;
using std::vector;
using std::pair;
using namespace __gnu_pbds;
inline char gc(){static char buf[SIZE],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,SIZE,stdin),p1==p2)?EOF:*p1++;
}
#define gc getchar
template <class T>inline void read(T &x){x=0;int ne=0;char c;while((c=gc())>'9'||c<'0')ne=c=='-';x=c-48;while((c=gc())>='0'&&c<='9')x=(x<<3)+(x<<1)+c-48;x=ne?-x:x;return ;
}
const int maxn=100005;
const int inf=0x7fffffff;
int LIM;
int n;
vector <int> son[maxn];
int fa[maxn][33],mi[maxn][33];
ll f[maxn][33],k;
int pos[35],tot=0,cnt=0,ms=inf;
ll ans=0;
int main(){int x,y;//FO(graph);freopen("wtf.out","w",stdout);freopen("graph4.in","r",stdin);read(n),read(k);LIM=log2(k)+1;for(ri i=1;i<=n;i++){read(x),x++;fa[i][0]=x,son[x].push_back(i);}for(ri i=1;i<=n;i++)read(f[i][0]),mi[i][0]=f[i][0];for(ri o=1;o<=LIM;o++){for(ri i=1;i<=n;i++){fa[i][o]=fa[fa[i][o-1]][o-1];f[i][o]=f[i][o-1]+f[fa[i][o-1]][o-1];mi[i][o]=min(mi[i][o-1],mi[fa[i][o-1]][o-1]);}}while(k){if(k%2)pos[++tot]=cnt;k=k>>1;cnt++;}for(ri i=1;i<=n;i++){ms=inf,ans=0,x=i;for(ri j=1;j<=tot;j++){ans+=f[x][pos[j]];ms=min(ms,mi[x][pos[j]]);x=fa[x][pos[j]];}printf("%lld %d\n",ans,ms);}return 0;
}

转载于:https://www.cnblogs.com/Rye-Catcher/p/9807679.html

[JZOJ100026]图--倍增相关推荐

  1. BZOJ 4242 水壶(BFS建图+最小生成树+树上倍增)

    题意 JOI君所居住的IOI市以一年四季都十分炎热著称. IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有P个,编号为1...P. JOI君只能进入建筑 ...

  2. 【牛客 - 82B】区间的连续段(贪心,建图,倍增)

    题干: 链接:https://ac.nowcoder.com/acm/contest/82/B 来源:牛客网 给你一个长为n的序列a和一个常数k 有m次询问,每次查询一个区间[l,r]内所有数最少分成 ...

  3. jzoj4240 [五校联考5day2]游行 拓扑排序+倍增lca+线段树优化建图

    Description 恶梦是学校里面的学生会主席.他今天非常的兴奋,因为学校一年一度的学生节开始啦!! 在这次节日上总共有N个节目,并且总共也有N个舞台供大家表演.其中第i个节目的表演时间为第i个单 ...

  4. LCA 朴素算法+树差分倍增+Tarjan算法 三种算法实现c++代码实现

    哔哩哔哩up视频:https://www.bilibili.com/video/BV1nE411L7rz?t=379 转载:http 文章目录 树差分 & 倍增LCA Tarjan 朴素算法 ...

  5. 主席树 + 树上倍增 ---- codeforces 587C[树上倍增或者主席树]

    题目链接 给定一棵n个点的树,给定m个人(m≤n)在哪个点上的信息,每个点可以有任意个人:然后给q个询问,每次问u到v上的路径有的点上编号最小的k(k≤10)个人(没有那么多人就该有多少人输出多少人) ...

  6. BZOJ 2144 跳跳棋(神仙建模题,倍增 LCA,二分)【BZOJ修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2144 是 hydro 的 BZOJ ...

  7. android 相机智能补光,美图秀秀智能补光功能应用详解

    晚上拍照时最容易遇见"曝光不足"和"曝光过度"的问题,使得照片看起来明暗不协调,缺乏应有的美感.不过,如果你的手机中 装有"美图秀秀",这些 ...

  8. gz键盘增强小工具_这些不起眼的Mac小工具,能让你的Macbook效率倍增!

    Mac系统上的神器有很多,今天macdown小编为大家整理了一些超好用的Mac小工具.所谓的小工具,它们没有太多的功能或者仅仅提供一个功能,但是能直击痛点,同时又不会打扰到你,你甚至感觉不到它的存在! ...

  9. 蓝桥备赛第三周 倍增+贪心+素数+约数

    文章目录 0X06倍增 天才ACM(有空再做) 0X07贪心 防晒 将乳液按SPF从大到小,牛按minSPF从大到小排序 牛客有个题解都从小到大也过了 原理 畜栏预定 ~~按结束时间从小到大排~~ 按 ...

  10. BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)

    题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...

最新文章

  1. python databaselibrary_Robot Framework下DataBaseLibrary的使用
  2. cookie分号后面没有值_浏览器Cookie介绍
  3. form表单无刷新提交文件(iframe)
  4. js 高级应用 自定义事件
  5. sonar扫描java、js、jsp技术
  6. Eclipse的自动build选项,制造时别忘了选上~
  7. SilverLight学习笔记--进一步学习Isolated Storage独立存储一(理论篇)
  8. 天刀各大服务器位置,天涯明月刀ol第十次合区详解 天刀ol第十次合区结果一览...
  9. 普渡大学科技学院计算机信息技术,普渡大学-学院介绍
  10. Cypress之模拟键盘鼠标操作以及页面元素拖动操作
  11. IntelliJ IDEA 单词表--01
  12. java基础提升(二):多线程、线程安全、线程状态、等待唤醒机制、线程池
  13. 国外计算机cpu排行,电脑处理器最新排行天梯图_处理器CPU最新天梯图2020 - 系统家园...
  14. python爬虫之基于JS加密破解--有道翻译/百度翻译
  15. NB-IoT与LTE差异
  16. 短视频去水印工具小程序
  17. 用windows运行命令打开
  18. Linux操作ping命令name or service not know解决办法
  19. 科大讯飞笔试题iflytek序列查找
  20. 2020的平凡与感动

热门文章

  1. 201671010128 2017-11-10《Java程序设计》之应用程序部署(2)
  2. php安装make报错信息及解决方法
  3. JAVA 服务端模拟客户端请求http/https
  4. UVa 11178:Morley’s Theorem(两射线交点)
  5. 锋利的jQuery学习笔记(4)-DOM操作
  6. windows server 2008配置之AD域服务器 2
  7. 为什要学习烹饪?学习烹饪迫在眉睫
  8. python if条件判断语句
  9. 【Linux】【secureCRT】下载,安装,激活攻略
  10. 但是在公司开空调睡觉还是冷