首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
51nod1693
】的更多相关文章
51nod1693 水群
题目链接:51nod1693 水群 题解参考大神的博客:http://www.cnblogs.com/fighting-to-the-end/p/5874763.html 这题时限0.4秒,真的够狠的..我用优化过的dij狂交一直TLE,最后还是死在四百多毫秒上,应该是姿势不对orz.后来看别人用spfa,然后一改就过了,这里我想收藏一下记忆化搜索的解法,真心服了. #include<cstdio> #include<cstring> #include<algorithm&g…
51nod1693 水群 最短路
若A=K*B,若仅通过操作二:将B变换为A需要K步, 由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复) 那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步,以此类推,将B转化为A需要(p1+p2+....pn)步 因为(p1*p2*p3...*pn) < (p1+p2+p3+...pn),故而若仅通过操作二将B转化为A至少需要(p1+p2+p3...+pn)步 因存在删除操作,我们将问题转化为图论:点i和点k*i之间存在单向边,点i和点i-1之间存在…
51nod1693
题解: 首先将问题转化,可以发现操作改为两种 一种是s*=k,代价为k,一种是s--,代价为1 转化成图论,spfa跑最短路 然后更据一些证明,代价1的k<=13且为质数,并且不可能操作2连续5次 所以就可以优化 代码: #include<bits/stdc++.h> using namespace std; ,M=; int n,a[N],b[M],f[N],in[N],dis[N]; int main() { scanf("%d",&n); f[]=; f…