100026. 【NOIP2017提高A组模拟7.7】图
题目大意:
给你n个点,每个点只有一条出路,请问每个点走了k步之后走过的权值和、
权值最小的边的权值。
考场想法:
考试时就先打了个暴力,然后发现一定会形成一个环,所以就想到了可以判环,然后
按照规律求答案,可是这种方法太麻烦了,所以就放弃了。
正解:
可以用倍增,求出每个i的2^j步到达的点(f)、权值和(len)、权值最小值(m),
如下:
f[i][j]=f[f[i][j-1]][j-1];
len[i][j]=len[i][j-1]+len[f[i][j-1]][j-1];
m[i][j]=Min(m[i][j-1],m[f[i][j-1]][j-1]);
代码:
#include<bits/stdc++.h>
using namespace std;
long long k,k1,ans1,ans2,a[36],m[100005][36],len[100005][36],n,u,f[100005][36];
long long Min(long long x,long long y)
{
if(x<y) return x;
return y;
}
int main()
{
scanf("%lld%lld",&n,&k);
for(int j=1;j<=35;j++)
{
for(int i=0;i<n;i++)
{
m[i][j]=1e10;
}
}
for(int i=0;i<n;i++) scanf("%lld",&f[i][0]);
for(int i=0;i<n;i++)
{
scanf("%lld",&m[i][0]);
len[i][0]=m[i][0];
}
a[0]=1;
for(int j=1;j<=35;j++)
{
a[j]=a[j-1]*2;
for(int i=0;i<n;i++)
{
f[i][j]=f[f[i][j-1]][j-1];
len[i][j]=len[i][j-1]+len[f[i][j-1]][j-1];
m[i][j]=Min(m[i][j-1],m[f[i][j-1]][j-1]);
}
}
for(int i=0;i<n;i++)
{
u=i;
ans1=0;
ans2=1e10;
k1=k;
for(int j=35;j>=0;j--)
{
if(k1<a[j]) continue;
k1=k1-a[j];
ans1=ans1+len[u][j];
ans2=Min(ans2,m[u][j]);
u=f[u][j];
}
printf("%lld %lld\n",ans1,ans2);
}
return 0;
}
100026. 【NOIP2017提高A组模拟7.7】图的更多相关文章
- [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 个 ...
随机推荐
- axios实现无感刷新
前言 最近在做需求的时候,涉及到登录token,产品提出一个问题:能不能让token过期时间长一点,我频繁的要去登录. 前端:后端,你能不能把token 过期时间设置的长一点. 后端:可以,但是那样做 ...
- Excel 去除合并并保留原值的办法
部分Excel中,对行进行了合并.这个方便展示,但是筛选后数据展示会出现问题,需要去除合并,并在每行中保留原来的值. 1.先选择整行,并"取消单元格合并" 操作后出现大量的空值行. ...
- Java简单认识及环境下载
Java的特性和优势 简单性 面向对象 可移植性 跨平台性 write once run anywhere 高性能 分布式 动态性 反射 多线程 安全性 健壮性 Java三大版本 JavaSE:标准版 ...
- format UTF-8 BOM by AX
#File CommaTextIo commaTextIo; FileIOPermission permission; CustTable custTable; str fileName = @&qu ...
- 关于安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的问题
安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的信息. 经过排查后发现,主要问题出在系统环境变量上. 安装了wind金融终端后,用户系统环境变量PATH里多了两个wind相关 ...
- python读取i3dm数据
path = r'D:\data\1.i3dm'f = open(path, 'rb')f.seek(4)print('version:%d' % struct.unpack('I', f.read( ...
- logrotate linux 系统日志管理
logrotatelogrotate简介 logrorare一定程度上可以简化对会生成大量日志文件的系统的管理.logrotate可以实现自动轮替.删除.压缩和mail日志的功能. 执行命令logro ...
- 搬运工 - Appium Python API 中文版
Appium_Python_Api文档 1.contextscontexts(self): Returns the contexts within the current session. 返回当前会 ...
- ASP.NET Web应用程序(.NET Framework)开发网站
1.创建项目 2.控制器脚本说明 [FromBody]JObject value:JObject此类型默认为string,但是string无法正常解析复杂类型的Json数据,所以修改为JObject类 ...
- ElasticSearch 实现分词全文检索 - 测试数据准备
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...