洛谷 U78696 图书馆馆长的考验 题解
1. 图书馆馆长的考验(library)
红魔馆的拥有者蕾米莉亚的好友帕秋莉是红魔馆的大图书馆的馆长。擅长操纵五行,名言是“万物都有属性。所谓的属性,和弱点是一样的”。
一天,因为魔理沙看了神之右大臣的视频却不投硬币不点收藏不加关注导致受到了幽幽子的追杀。在博丽灵梦的引荐下,魔理沙来到红魔馆去向帕秋莉学习暗黑魔法来打败幽幽子。
但帕秋莉不想这么轻易的教她,所以身为图书馆馆长的她发动了禁术,改变了图书馆的结构,让其变为了一个巨大的迷宫。这个迷宫一共有n个房间,m条通道。开始时魔理沙在1号房间,帕秋莉在n号房间。有的房间之间存在一个通道(双向),表示可以从ui号房间到达vi号房间(反过来也可以)。如果想通过该通道,魔理沙就需要使用一个消耗魔法值为wi的魔法来抵抗该通道的攻击。
为了能够提高魔理沙到达n号房间的可能性,帕秋莉将改变后的图书馆地图发送给了魔理沙。
魔理沙懒得不像样,直接把地图递给了你,让你告诉她如何前进才能到达。(任意一条路线都可以)。
这太简单了!身为要AK noip的你一看就已经知道了一条路径,但魔理沙接下来又说,“既然看都看了,就直接告诉我到那最轻松(消耗魔法值最少)的路吧 DA☆ZE!”
那也很简单啊!你刚打算说答案,帕秋莉的声音从你的脑中响起:“原来的图书馆中含有p个暗道,如今这些暗道依然存在。这些暗道在地图上没有体现,现在告诉你,这或许会影响你的答案。但如果要走从a到b的暗道(双向),不仅要消耗ti的魔法值来维持传送,而且一定要到c房间去读一本书(不消耗魔法值)来找到打开这个暗道的机关,不同暗道所需读的书不同且可能不在同一房间。”
这还是很简单啊!!!你经过少许计算后得出了结果,告诉了魔理沙。
为了简便,你只告诉她该方案所消耗的魔法值(答案在int范围内)。
输入格式:
第一行输入n,m,p;
接下来m行每行格式为ui,vi,wi;
接下来p行每行输入ci,ai,bi,ti;
输出格式:
输出一行:消耗魔法值最少的路所消耗的魔法值。
数据范围:
对于10%的数据,n<=300,m<=500且p=0。
对于另20%的数据,仅保证p=0;
对于另20%的数据,保证n<=300,m<=500,且该图是一棵树;wi>0,ti>0
对于100%的数据,n<=1000,m<=2000,p<=10;(普遍情况下n比m要小得多)
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
输入样例1:
10 9 0
1 2 2
2 3 29
3 4 3
4 5 124
5 6 123
6 7 45
7 8 21
8 9 211
9 10 48
输出样例1:
606
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:"Times New Roman","serif";}
输入样例2:
10 11 1
1 2 213
2 3 134
2 4 112
4 3 113
3 9 145
9 5 311
4 5 421
4 6 112
6 7 341
7 8 121
8 10 461
4 9 10 121
输出样例2:
704
题解:

#include <iostream>
#include <cstdio>
#pragma GCC optimize(2)
using namespace std;
int n,m,p;
struct littlestar{
int to;
int nxt;
int w;
}star[];
int head[],cnt;
void add(int u,int v,int w)
{
star[++cnt].to=v;
star[cnt].w=w;
star[cnt].nxt=head[u];
head[u]=cnt;
}
int floor,tot;
int have[];
int ans=;
int dis[],vis[],q[];
void spfa()
{
for(register int i=;i<=tot;i++)
{
dis[i]=;
}
dis[]=;
vis[]=;
int h=,t=;
q[]=;
while(h<=t){
int u=q[h];
for(register int j=head[u];j;j=star[j].nxt){
int v=star[j].to;
if(dis[v]>dis[u]+star[j].w){
dis[v]=dis[u]+star[j].w;
if(!vis[v]){
q[++t]=v;
vis[v]=;
}
}
}
vis[u]=;
++h;
}
}
int main ()
{
//freopen("library.in","r",stdin);
cin>>n>>m>>p;
floor=<<p;
tot=n*floor;
for(register int i=;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
for(register int j=;j<floor;j++){
add(n*j+x,n*j+y,z);
add(n*j+y,n*j+x,z);
}
}
for(register int k=;k<=p;k++){
int x,u,v,w;
scanf("%d%d%d%d",&x,&u,&v,&w);
for(register int i=;i<floor;i++){
for(register int j=;j<=p;j++){
if(i&(<<(j-))){
have[j]=;
}
else have[j]=;
}
if(have[k]==){
add(n*i+u,n*i+v,w);
add(n*i+v,n*i+u,w);
}
int tmp=i^(<<(k-));
add(n*tmp+x,n*i+x,);
}
}
spfa();
for(register int i=;i<floor;i++){
ans=min(ans,dis[i*n+n]);
}
cout<<ans<<endl;
}
/*
10 11 1
1 2 213
2 3 134
2 4 112
4 3 113
3 9 145
9 5 311
4 5 421
4 6 112
6 7 341
7 8 121
8 10 461
4 9 10 121 10 9 0
1 2 2
2 3 29
3 4 3
4 5 124
5 6 123
6 7 45
7 8 21
8 9 211
9 10 48
*/

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
MicrosoftInternetExplorer4
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
洛谷 U78696 图书馆馆长的考验 题解的更多相关文章
- 洛谷P1854 花店橱窗布置 分析+题解代码
洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...
- HAOI2006 (洛谷P2341)受欢迎的牛 题解
HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...
- 【洛谷】P4883 mzf的考验
[洛谷]P4883 mzf的考验 最近忽然放弃治疗开始随机跳题了 感觉还行 就是必须吸氧感觉有点糟糕... 这题翻转和求和都是平衡树基本操作,那个异或可以通过维护树中\(2\)进制下第\(2^{i}\ ...
- 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)
洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...
- 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)
洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...
- BZOJ4946 & 洛谷3826 & UOJ318:[NOI2017]蔬菜——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 ht ...
- 洛谷1578:[WC2002]奶牛浴场——题解
https://www.luogu.org/problemnew/show/P1578#sub 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建 ...
- 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)
科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...
- 洛谷 P1146 【硬币翻转】题解
很久很久之前做过的一道题 翻n-1枚硬币,就是有一枚不翻,也可以理解为翻一枚 直接上程序,看程序说话 #include<iostream> using namespace std; ; b ...
随机推荐
- python 可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象. 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际 ...
- BZOJ 5084: hashit 后缀自动机(原理题)
比较考验对后缀自动机构建过程的理解. 之前看题解写的都是树链的并,但是想了想好像可以直接撤销,复杂度是线性的. 自己想出来的,感觉后缀自动机的题应该不太能难倒我~ 注意:一定要手画一下后缀自动机的构建 ...
- CodeForces 349B--Color the Fence(贪心)
B. Color the Fence time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- docker运行jpress
1.前提安装好docker mkdir docker//建立工作文件夹 cd docker 2.下载tomcat镜像和jpress开源项目 docker pull docker pull hub.c. ...
- 第七周课程总结&实验报告五
实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. ...
- Python对字典分别按键(key)和值(value)进行排序
使用sorted函数进行排序 sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数;其中iterable表示可以迭代的对象,例 ...
- 了解一下urlencode()函数
urlencode()函数 在PHP官方网站中的解释如下: 编码 URL 字符串——就是对特殊字符进行编码转移(. _ - 除外): string urlencode ( string $str ...
- 自定义View饼状图的绘制
package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...
- linux_Ubuntu相对路径和绝对路径
绝对路径 从/目录开始描述的路径为绝对路径,如: cd /home ls /usr 相对路径 从当前位置开始描述的路径为相对路径,如: cd ../../ ls abc/def .和.. 每个目录下都 ...
- 代码代码:输入两个正整数m和n,求其最大公约数和最小公倍数。15 20 5
import java.util.Scanner; //输入两个正整数m和n,求其最大公约数和最小公倍数.15 20 5 public class Test { public static void ...