P4962 朋也与光玉题解
光坂小镇是一个由 n 个点(编号为 1 ~ n),m 条有向边构成的图,每个节点上都有一个光玉,光玉共有 k 种,编号为 0 ~ k−1。
为了使一切改变,朋也需要找齐全部的 k种光玉。他可以从任意一个节点出发,在图上任意行走,但不会经过同一个节点两次,每碰到一个光玉便会将其收集,收集到 k个光玉后,即经过了 k 个节点后,便不会继续收集。请设计一种方案,使得朋也能够收集全部的 k 种光玉,且走过的路径长度最短。
换句话说,每个点一个颜色,找到一条最短的点数为 k 、恰好经过全部 k种颜色的路径。你需要求出这条路径的长度。
大意:不解释
思路:由于n极小,k也小,考虑状压后迭代乱搞.设状态dis[i][j]表示终点为i状态为j的最小路径长,将每个点的初始态扔进队列里迭代更新即可.
代码:
#include <iostream>
#include <cstdio>
#include <memory.h>
#include <queue>
#define r(x) x=read()
#define MAXX 105
#define MAX(a,b) (a>b?a:b)
#define MIN(a,b) (a<b?a:b)
using namespace std;
typedef long long ll;
typedef pair<int,int> node;
int read()
{
char ch=;int w=,ff=;
while(ch<''||ch>''){if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<=''){w=w*+ch-'';ch=getchar();}
return ff*w;
}
int h[MAXX],cnt;
struct edge{int to,nex,w;}e[];
void add(int u,int to,int w){e[++cnt]=(edge){to,h[u],w},h[u]=cnt;}
int map2[MAXX][<<],val[MAXX];
int dis[MAXX][<<],ans;
int n,m,k;
void spfa()
{
memset(dis,0x3f,sizeof(dis));
memset(map2,,sizeof(map2));
ans=dis[][];
int S=(<<k)-;
queue<node>que;
for(int i=;i<=n;++i){que.push(node(i,<<val[i])),dis[i][<<val[i]]=,map2[i][<<val[i]]=;}
while(!que.empty())
{
node p=que.front();que.pop();
map2[p.first][p.second]=;
for(int i=h[p.first];i;i=e[i].nex)
{
if((<<val[e[i].to])&p.second) continue;
int goal=(p.second|(<<val[e[i].to]));
if(dis[e[i].to][goal]>dis[p.first][p.second]+e[i].w)
{
dis[e[i].to][goal]=dis[p.first][p.second]+e[i].w;
if(!map2[e[i].to][goal])
map2[e[i].to][goal]=,que.push(node(e[i].to,goal));
}
}
}
for(int i=;i<=n;++i)
ans=MIN(dis[i][S],ans);
}
int u,to,w;
int main()
{
r(n),r(m),r(k);
for(int i=;i<=n;++i)
r(val[i]);
for(int i=;i<=m;++i)
r(u),r(to),r(w),add(u,to,w);
spfa();
if(ans!=dis[][]) printf("%d",ans);
else printf("Ushio!");
return ;
}
P4962 朋也与光玉题解的更多相关文章
- [洛谷P4962]朋也与光玉
题目大意:有一张$n(n\leqslant100)$个点$m(m\leqslant n(n-1)$条边的有向图,每个点有一个颜色,需要找到一条长度为$k(k\leqslant13)$,恰好经过全部$k ...
- AtCoder Grand Contest
一句话题解 QwQ主要是因为这篇文章写的有点长……有时候要找某一个题可能不是很好找,所以写了这个东西. 具体的题意.题解和代码可以再往下翻._(:з」∠)_ AGC 001 C:枚举中点/中边. D: ...
- BestCoder8 1002 Revenge of Nim(hdu 4994) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4994 题目意思:有 n 个 heap(假设从左至右编号为1-n),每个 heap 上有一些 objec ...
- 【Codeforces Round #431 (Div. 1) B】
[链接]h在这里写链接 [题意] 场上有 n 个点,它们分别向上与向右在不同时刻开始运动,相遇则改变移动方向,求最终这些点到达的坐标. [题解] 先把每个点的坐标都往它本该移动的方向相反的方向退ti个 ...
- [leetcode] 106. Construct Binary Tree from Inorder and Postorder Traversal(medium)
原题地址 思路: 和leetcode105题差不多,这道题是给中序和后序,求出二叉树. 解法一: 思路和105题差不多,只是pos是从后往前遍历,生成树顺序也是先右后左. class Solution ...
- [BZOJ 3039&洛谷P4147]玉蟾宫 题解(单调栈)
[BZOJ 3039&洛谷P4147]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. ...
- 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...
- 【题解】Luogu P5313 僕たちはひとつの光([Ynoi2012]D2T2)
原题传送门 lovelive好评 比赛时只拿到了60pts,还是自己太菜了 这题的思想实际有点像Luogu P3674 小清新人渣的本愿与Luogu P5071 [Ynoi2015]此时此刻的光辉 这 ...
- P4147 玉蟾宫 题解
原题链接 简要题意: 求最大 \(0\) 矩阵.(将字符转化为数字) 本题是模板题,可以用来爆踩.??? 悬线法 来了! 其中绿色是 \(0\),红色是 \(1\). 下面以这个图为例讲一下算法流程. ...
随机推荐
- 【杂题】[AGC034F] RNG and XOR【集合幂级数】【FWT】【DP】
Description 你有一个随机数生成器,它会以一定的概率生成[0,2^N-1]中的数,每一个数的概率是由序列A给定的,Pi=Ai/sum(Ai) 现在有一个初始为0的数X,每一轮随机生成一个数v ...
- 深度学习笔记(十)Augmentation for small object detection(翻译)
一. abstract 这些年来,目标检测取得了令人瞩目的成就.尽管改进很大,但对于小目标和大目标的检测性能差异还是蛮大的.我们在 MS COCO 数据集上分析了如今一个比较先进的算法,Mask-RC ...
- DVWA--Brute Force
这次我们尝试的内容是DVWA的暴力破解 --lower 先抓取一个登陆的包 然后发送到后在Position选项中设置需要破解的变量.Burpsuite会自动设置许多变量,单击“Clear”按钮,把默认 ...
- 使用宝塔面板 配置nginx 访问ftp服务器下面的图片
如果 你在服务器上 运行war项目 可以在tomcat 配置访问的: tomcat 也贴出来吧! 一.tomca配置访问,需要更改配置文件server.xml ,如果找不到,自己好好找一下 一般在 ...
- Spring的jsp标签库
1,主要有两个 一个用于渲染HTML表单标签, 这些标签会绑定model中的某个属性 另一个包换了一些工具类标签 2,将表单绑定到模型上 包含了14个标签,海报一个人为用户展现错误的标签,它会将错误信 ...
- 第五次实验报告&学习总结
一.实验目的 (1) 理解抽象类与接口的使用; (2)了 解包的作用,掌握包的设计方法. 二.实验要求 (1)掌 握使用抽象类的方法. (2)掌 握使用系统接口的技术和创建自定义接口的方法. (3) ...
- Ajax学习--理解 Ajax 及其工作原理
Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 下面是 Ajax 应用程序所用到的基本技术:• HTML 用于建立 Web 表单并确定应用 ...
- viewpager标签栏之PagerTab
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; impor ...
- json -- fastjson如何序列化@Transient的字段
今天把fastjson包改成了1.2.58,发现@Transient标注的字段序列化后不见了,但是项目需要把@Transient字段序列化,处理方法: 原文:https://github.com/al ...
- 47全排列II
题目:给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入:[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]] 来源:https://leetcode-cn.com ...