摘要:地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4834题意:一个有向图,从1出发,到n,初始分数是位置1的分数,每走一步,分数变为之前分数跟当前位置分数的最小公倍数,题目规定每走一步分数必须变化。求多少种方案走到n达到分数k。mark:用bfs做的。正在处于学习STL阶段,写了很长时间。代码:#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <iostream
阅读全文
摘要:地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4439题意:一个有向带权连通图连着n个商店,每个商店里面有一种商品,每个商品有一个体积和价值。有一个背包,当背包里面装m的东西,每走一米消耗m精力,求最多的价值的情况下最少的消耗。mark:学习大牛的思路http://blog.csdn.net/woshi250hua/article/details/7824773 这题用拓扑排序的好处是,可以确定背包的顺序,因为是图,边很多,直接背包,完全没法做。排好序后,可以每个点先根据父亲节点更新一次,然后再完全背包一次。 ...
阅读全文
摘要:地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4769题意:输入n,l,n代表有n种船可以造,l代表怪物的血量。再输入n行,每行两个数,分别代表造船的时间和船的攻击力,船造好之后可以一直攻击敌人,求打死敌人的最短时间。mark:这居然是个完全背包的题。真的是没想到,看解题报告看了好久才看懂。 把每条船时间当成体积,攻击力当成价值,dp[j]存放时间j最多能打敌人多少血。dp[j] = max(dp[j], dp[j-v[i]]+(j-v[i])*w[i]); 分析:这个转换的时候可以这样理解,后面加的(j-v...
阅读全文
摘要:地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3471题意:n种气体,每两种碰在一起会产生能量,然后后者消失。自己不能跟自己撞。求产生的最大能量。mark:状态压缩dp。自己写的时候很忐忑,最后看解体报告发现跟自己思路一样,嘿嘿~代码:#include <stdio.h>#include <string.h>#include <stdlib.h>#define J1 (k|(1<<j))#define J2 (k&(1<<j))#define I
阅读全文