CF1065D Three Pieces (多元最短路)】的更多相关文章

题目大意:给你一个棋盘,你需要控制棋子依次经过编号为1~n的所有点,棋子的可以是车,马,象,都依照国际象棋的行棋方式,每走一步消耗1单位时间,但每次更换棋子都需要额外1单位时间,求经过所有点需要的最少时间 ,如果多种方案需要的最少时间相同,输出更换棋子次数最少的那个 有的机房老人用了记忆化搜索,但写起来好像很蛋疼.神仙学弟phy想了一个多元最短路,简洁好写 每个点有三种状态,先暴力建边. 然后根据点的编号从小到大,以每个点为源点跑一次两元最短路 注意,不能在每个点都记录超级源点/汇点,因为这样做…
题目链接:Buy a Ticket 题意: 给出n个点m条边,每个点每条边都有各自的权值,对于每个点i,求一个任意j,使得2×d[i][j] + a[j]最小. 题解: 这题其实就是要我们求任意两点的最短路,但是从点的个数上就知道这题不可以用floyd算法,其实多元最短路可以用dijkstra算.@.@!把所有的点的权值和点放到结构体里面,放入优先队列,其实这样就能保证每次拓展到的点就是这个点的最短路(因为是优先队列,保证拓展到的点这时候的值是最小的),其实就是这个点想通就很简单. #inclu…
题目描述:给出一个n*n的棋盘,棋盘上每个格子有一个值.你有一个子,要求将这个子从1移到n*n(去k时可以经过比k大的点). 开局时它可以作为车,马,相(国际象棋).每走一步耗费时间1.你也可以中途将它换为车,马,相(国际象棋),耗费时间1. 求最短时间,以及保证最短时间的最少替换次数. 题解: 一道恶心人的搜索题.对于每个点分为n*n*3种状态,表示当前已经经过1 ~ k,当前是车 / 马 / 相. 对于每个状态讨论做车 / 马 / 相怎么走,以及将它换成另外两种的情况. 代码(已经不想再写一…
//代码: //方法1:Dijkstra's Algorithm #include<stdio.h> #include<math.h> #include<string.h> #define INF 0xfffffff #define N 110 #define min(a, b)(a < b ? a : b) int maps[N][N]; int d[N], visit[N]; int n, m; void Init() { int i, j; memset(v…
题目:http://poj.org/problem?id=1125 题意:给出一个社交网络,每个人有几个别人可以传播谣言,传播谣言需要时间.问要使得谣言传播的最快,应该从那个人开始传播谣言以及使得所有人都知道这个谣言需要多少时间,. 时间的定义是使得最后一个人知道这个谣言的时间.多元最短路 #include <iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<…
一.多元最短路求法 多元都求出来了,单源的肯定也能求. 思想是动态规划的思想:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设Dis(AB)为节点A到节点B的最短路径的距离,对于每一个节点X,我们易写出状态转移方程Dis(AB) =min(Dis(AX) + Dis(XB) ,Dis(AB))这样一来,当我们遍历完所有节点X,Dis(AB)中记录的便是A到B的最短路径的距离. memset(Dis,0x3f,sizeof(Dis);…
NOIP2016复赛参赛总结 noip2016终于结束了,对于这次的比赛我只想说,死得好惨.(画风突变) 赛前趁着期中考浪到常州去培训,一天两套模拟的训练真的是心力交瘁(好吧没这么严重),不过那些模拟下来对比赛的状态调整好了许多.感觉常中的题对思维的训练还是很有效的,然而我感觉还是没利用好.(毕竟难)之后回校还是停课在练,所以说赛前状态还是不错的. 直接跳到day1,一开始看T1,哦豁出题人很不正经啊,什么mogician啊,mengbier啊...说白了就是水题,只要方向不搞错应该都是满分吧.…
Opening Portals 我们先考虑如果所有点都是特殊点, 那么就是对整个图求个MST. 想在如果不是所有点是特殊点的话, 我们能不能也 转换成求MST的问题呢? 相当于我们把特殊点扣出来, 然后求出两两之间的最短路, 然后求MST, 但直接这样暴力做 肯定不行. 我们先跑个多元最短路, 找到离 i 最近的特殊点 p[ i ], 并且距离为d[ i ]. 对于每两个特殊点a, b之间的最短路 我们都能找到一条边(u, v, w)对应它, 并且p[ u ]  = a, p[ v ] = b,…
看标题您一定以为考得很好.. Bad ending.想看美好结局的出门右转其他大佬博客. Day0 早上去车站的时候心情挺好.倒不是因为自己做足了准备,也不是因为预感到有好事发生,而是心情不好也没有用. 老妈走之前跟我说,她对我的担忧是基于对未知的恐惧.我觉得未知是要笑脸相迎的,毕竟欢乐地迎接困难的愉悦值应该是大于发现自己的不好预感成真时对自己当时的明智感到自豪的快感. 一路上过了一下博客.感觉棒棒哒(因为博客里啥都没有)! 到酒店,过了几个平时少写的板子.去一中熟悉了下环境,吃了个饭.然后看了…
sub1:ans=a*b%c,龟速乘即可. #include <stdio.h> #include <stdlib.h> unsigned long long a, b, c, d; unsigned long long mul(unsigned long long a,unsigned long long b) { unsigned ; while(b) { )x=(x+a)%c; b>>=,a=(a+a)%c; } return x; } void _() { sc…