Description
有一个n个点n条边的有向图,每条边为<i,f(i),w(i)>,意思是i指向f(i)的边权为w(i)的边,现在小A想知道,对于每个点的si和mi。
si:由i出发经过k条边,这k条边的权值和。
mi:由i出发经过k条边,这k条边的权值最小值。
Input
第一行两个数n和k
第二行n个数f(i)
第三行n个数w(i)
Sample Input
7 3
1 2 3 4 3 2 6
6 3 1 4 2 2 3
Sample Output
10 1
8 1
7 1
10 2
8 2
7 1
9 3
Data Constraint
30%的数据:n,k<=1000。
100%的数据:N<=10^5,k<=10^10,0<=f(i)<n,w(i)<=10^8。
Hint
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOcAAAG+CAYAAABoAhOrAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAFfLSURBVHhe7d0HmCVVtS9wTHh9YkDxmj7Re0VMKEgQHDIMOeecoyAZQYJIBgGZAUSQnEFyzjkoknMOAhIFkSTBsB+//ax5TdM9fU73qepTp9b+vvrOTJ86Fdbe/73yWpOkisebb76ZXnjhhfTXv/41PfLII+l3v/tdOvTQQ9MJJ5yQjxNPPDGddNJJ6dhjj0277bZb2mGHHdLRRx+dzjjjjPz98ccfn4455ph03HHHpbPPPjvddttt6c9//nO+pms3YbzzzjvpL3/5S3rppZfSo48+ms4666x0+OGHZ9o40Onkk0/Ox+67755+9rOfpaOOOuo9NERfNETXm2++OT311FPp+eefT3//+9+bQMJavOMkVTylxWTir7/++nTKKafk45xzzklHHnlk2nLLLdOGG26Ytt1227TNNtvkz+222y7/feGFF05zzTVX2myzzdIuu+ySfvrTn6att946bbXVVvl7i+7AAw/MgLYQgfUPf/hD+tOf/tRzi+yf//xn3oAACe1OPfXU/L5Ah24bbbRR/nSg0/bbb5/puMQSS6S55547bb755mnXXXedQMOCjug9bty4CYA+99xz04033pgee+yx9Prrr1exPOIeg1CgdHCa4HvuuSdzwuWXXz6D7Sc/+UleRDvuuGM688wz00033ZQPwOp7XHPNNenqq69Ov//97/OC8emwQK+77roM8n322ScvuB//+Mf5+quuumr+m+v1Chd4++2304MPPpi54lprrZUWX3zxvGEVICRp3HDDDZkuBZ0KOl577bUD0hB9/Abn/NWvfpXnY+ONN06rr756vgeO67cB0NHbO0oB52uvvZauvPLK9Nvf/jb98pe/THvvvXcWUYHSjk3sOv3009NFF12UXnzxxfe8/b///e/k6D9wjr7f/etf/0rPPPNMBiuxDvd0L1wVx9hrr73yosNZr7rqqtoB9R//+EfeYEgX6LfnnntmzkdiIOoDJBpecMEF6emnn34fDdGnPx3709D3uPEf//jHzIVJH+PHj89c1wGgNroDDjhgwLkavWXbjDt3FJwvv/xyuuuuuzJHI4YStdZbb70MTAC6++67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j01f//rX83HBBRfElAUFGkeBrgSnynsXX3xxjhL63ve+l/7whz80bmI69cJ8wuKUQx3oFEWru86og/OZZ55Jjz76aA7JKw5/u+OOO9LGG2+cll566RxP+/LLL6c///nPWbylkzr3+eefDwPRu2vlueeeS48//nimjaOgjRjkc889N9f/vfvuu99Dw4LWzz77bNblY3QfBSoDp93bAgI6C+X+++9PN9xwQzb0aC9/3HHH5YM4e+qpp6Zzzjkn7bnnnmnzzTfPge9nnXVWPtf3xxxzTDrqqKPSCSeckC677LJ05513prvuuit/AnqvulskBvzpT3/KNPSu9913X24sfOKJJ2YaoU9BI0kC6KjH6VJLLZUOOOCAdPbZZ0/4vqAjmpNSdA9HQ9d+8MEH01//+tfuW60Ne6JSwUmk4voAFoBk5FGHdp999smLRS8UVtltttkmV3Z3bL/99unnP/952mWXXTI4d99997TTTjulHXfcccI5zvMb1/Ldfvvtl375y1/mc/bff//sisE13LvuoX7E0bfffjvTUICGQts6fu+22245KGPXXXfNQRvo6P0daIhG6Ojf0u589qehXFk09Hf023vvvfN56E7PJ6mgoU0hRvUUKBWcl19+eZ78ddddNy8Ui8Fhtz7ttNPy53nnnZe53xVXXDHh8DsHv+Ytt9ySrr766hxT62/Fef5/4YUXpjPPPDOdcsopmaPuu+++eXG5x9prr510KbvkkktqDVDv753WWGON/F42JYcEANwR10RD9OhLQzRFrz/+8Y/ptttuG5CGzrnooosyDU8++eQJNGQdd6y11lo5ZFK6Xoi+PQBO4hBQAR/OuOiii6aFFlooc8LTTz89i7J0yr/85S/5GOnAVXDJp9/t0XnPPfdkHQsXWHzxxfN9bQruS/xzTh2GrJubbropg8a7LLHEEmneeefNILURXXfddfld0I/baaQDDV3LvODOAEvKWXLJJXOqns1AdNa1116b9f0Y1VCgY5yT6PPiiy/miRXNI/eSmASMDz30UGJ4ePXVV7OYVIbl0DXfeeedLP4xFD3yyCN5k8BNl1lmmbTaaqtlHZXBhP7bjQMNARMHJG2MHTs2AxJXpAcCpO/LpCHavP766xmsaGiTOOSQQ9IKK6yQjXPsA2wH3UrDbpzX4T5TR8BpN2XAoQPtvPPOWQ8UH0ucGu3BwMFY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6AvOvv05i7b1wBojKBDgHIU1ECljo0D0mt8yOGdFExjgrIjQPXSbAGdFkxngrIjQPXSbAGdFkxngrIjQPXSbAGdFkxngrIjQPXSbAGdFkxngrIjQPXSbAGdFk1mAc6+99sopYzGCAkNRIMA5FIU69H2RMhbg7BBBG3CZAGdFk/zOO++kG264IVdCKPI5K7p13KamFAhwljRxIn4A8u9//3s+XnjhhXTllVemAw44IJfGLP7unBhBgYEoEOAsaV1Ipla068ILL0ynnnpqOuaYY9Juu+2WNtxww/x52mmnpfPOOy8Ke5VE/164bICzpFkEToafDTbYII0dOzbNPvvsafrpp0/f/va300wzzZT/tuqqq6bzzz+/pCeIy9adAgHOEmdQ9slSSy2Vy19+8IMfTB/4wAfy4d8f//jH0wILLJAuuOCCEp8gLl1nCgQ4S5y9xx57LO28887pi1/8Yppkkknec3zuc59L++yzT3rmmWdKfIK4dJ0pEOAscfakg1122WVZjO0Pzh/84Ae56nuMoMBgFAhwlrw2HnnkkVyXlhjbF6Bzzjlnuuuuu0q+e1y+zhQIcJY8e1wmrLVzzDHHBHDSOxdbbLGk+l6MoEBwzlFcA3ycG2200QRwTj755NmlostYjKBAgHOU14DmRYVYO+200+aGRlE3aJQnpctvH2JtRRN0xBFHTLDacq/cfPPNicEoRlAgOOcorwE1ajfffPM066yzpnHjxuXqezGCAhOjQHDODqwPQMMF33777fTKK6/kONrnn38+H/7tEMp34oknpq233jp3s9bEqPiu77l+L95WhJHu1zGaS4EA5wjn/m9/+1v605/+lC2vRNWTTjop7bHHHrlBrk+HfpyOzTbbLC255JI5pE/7eeljvt99991zvK1zjj/++NxxTHtAbhiAj9FMCgQ4hzHvAMPSKqhdlA+AHXjggRlwIoJ+8YtfZKDpKLb33nvnz+K8HXfcMe266675XH8H0OJ7v/35z3+evzvooIPS/vvvn7NYtKl3v9BRhzFZNf5JgLPFyQNIYqgWCr///e8zh9t0001zfKz+mgAHaL/73e/Svffem/785z+np59+Oj355JP5eOqpp9Kzzz6bRV2f/vbEE0/kQwifv2vJcMopp2SuC+B01HnnnTcHyB933HHpj3/8YwYpkThSzVqcuBqfFuBscfJuvPHGzAX5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" alt=" " />
十分裸的倍增题...之前没看到节点从0开始标号...傻了。
$nxt[i][k]$表示节点$i$跳$2^j$步到达的节点,$mn[i][j]$表示...之间路长度的最小值,$sum[i][j]$表示...的路径长度和。
水。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
using namespace std;
#define reg register
#define int long long
inline char gc() {
static const int BS = << ;
static unsigned char buf[BS], *st, *ed;
if (st == ed) ed = buf + fread(st = buf, , BS, stdin);
return st == ed ? EOF : *st++;
}
#define gc getchar
inline int read() {
int res = ;char ch=gc();bool fu=;
while(!isdigit(ch))fu|=(ch=='-'),ch=gc();
while(isdigit(ch))res=(res<<)+(res<<)+(ch^),ch=gc();
return fu?-res:res;
}
int n, k;
int nxt[][], mn[][], sum[][];
signed main()
{
n = read(), k = read();
for (reg int i = ; i <= n ; i ++)
nxt[i][] = read() + ;
for (reg int i = ; i <= n ; i ++)
sum[i][] = mn[i][] = read();
for (reg int j = ; j <= ; j ++)
for (reg int i = ; i <= n ; i ++)
nxt[i][j] = nxt[nxt[i][j - ]][j - ];
for (reg int j = ; j <= ; j ++)
for (reg int i = ; i <= n ; i ++)
mn[i][j] = min(mn[i][j - ], mn[nxt[i][j - ]][j - ]);
for (reg int j = ; j <= ; j ++)
for (reg int i = ; i <= n ; i ++)
sum[i][j] = sum[i][j - ] + sum[nxt[i][j - ]][j - ];
for (reg int i = ; i <= n ; i ++)
{
int ans1 = , ans2 = 1ll << ;
int now = i;
for (reg int j = ; j >= ; j --)
{
if (k & (1ll << j)) {
ans1 += sum[now][j];
ans2 = min(ans2, mn[now][j]);
now = nxt[now][j];
}
}
printf("%lld %lld\n", ans1, ans2);
}
return ;
}
- [JZOJ 100026] [NOIP2017提高A组模拟7.7] 图 解题报告 (倍增)
题目链接: http://172.16.0.132/senior/#main/show/100026 题目: 有一个$n$个点$n$条边的有向图,每条边为$<i,f(i),w(i)>$,意 ...
- JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团
100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Got ...
- JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)
5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...
- 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
[NOIP2017提高A组模拟9.17]信仰是为了虚无之人 Description Input Output Sample Input 3 3 0 1 1 7 1 1 6 1 3 2 Sample O ...
- 【NOIP2017提高A组模拟9.17】猫
[NOIP2017提高A组模拟9.17]猫 题目 Description 信息组最近猫成灾了! 隔壁物理组也拿猫没办法. 信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数) ...
- 【NOIP2017提高A组模拟9.17】组合数问题
[NOIP2017提高A组模拟9.17]组合数问题 题目 Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数. 举个例子,将{1,2,3}拆分成2 个 ...
随机推荐
- spring scope prototype与singleton区别
1.singleton作用域 当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配 ...
- 【学习笔记】第六章 python核心技术与实践--深入浅出字符串
[第五章]思考题答案,仅供参考: 思考题1:第一种方法更快,原因就是{}不需要去调用相关的函数: 思考题2:用列表作为key在这里是不被允许的,因为列表是一个动态变化的数据结构,字典当中的key要求是 ...
- Python集训营45天—Day04 (函数)
目录 1. 函数介绍 2. 函数的参数 3. 模块与函数 4. 递归函数 5. 匿名函数 6. 多返回值 python 的学习已经进入到第四天,前面几章我们已经学会了基本的变量操作,以及分支结构和循环 ...
- 一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器
一.前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 c ...
- 2018年蓝桥杯java b组第七题
标题:螺旋折线 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...
- .net 更新access数据库 影响的行数为0
在更新Access数据库的时候,明明传入的数据及参数类型都正确,但是一直更新不了,查看影响的行数一直为0 此原因为 C#操作Access数据库的时候更新的参数和条件参数要按照更新语句中的顺序进行设置, ...
- Java8新特性——接口默认方法
Java 8 新增了接口的默认方法. 简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法. 我们只需在方法名前面加个default关键字即可实现默认方法. 为什么要有这个特性? 首先 ...
- 生产环境项目问题记录系列(二):Docker打包镜像Nuget包因权限问题还原失败
docker打包镜像遇到一个因为nuget权限验证问题导致镜像打包失败的问题,公司Nuget包用的是tfs管理的,tfs有权限验证,结果导致nuget还原失败,原有的NuGet.config文件如下: ...
- 集合线性表--List之LinkedList(队列与栈)
队列和栈1. Queue 队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素.队列遵循 ...
- [Redis] Redis的基本数据结构
key-value 通过key获取或设置value SET key value GET key SET server:name "fido" GET server:name SET ...