摘要:
这是一道比较简单的DP,通过分析可以设最后拿走的牌为i,则所求的最优解就是i左边和右边子列的最小连乘积再加上x[a]*x[i]*x[b],因为i将原来的序列划分为两个子列,这两个子列符合“最优子结构”和“重叠子问题”的dp特点,他们的最优解互相之间没有影响,只会影响全局问题的最优解,在POJ discuss中的解析比较经典,摘录如下,以后做题可以常常看看discuss,就当学习,但是还是要独立思考为主对于整个牌的序列,最左端和最右端的牌是不能被取走的,除这两张以外的所有牌> ,必然有一张最后取走。取走这最后一张牌有一个仅与它本身以及最左端和最右端的> 牌的值有关的得分,这个分值与其 阅读全文
摘要:
参考了slayer 的解答http://www.slyar.com/blog/poj-1029-cpp.html 与POJ 1013类比模拟题,抓两点,其一在等式中出现的硬币一定不是假币,其二在不等式中每次都出现即在不等式中出现的次数等于它出现的次数,一定是假币其他情况无法判断输出0#include <iostream>#include <string>using namespace std;const int MAX = 1001;int main(){ int i,n,k,p,count,pos,total = 0;//total标记不等式出现的次数,不等式中假币一 阅读全文
摘要:
题意描述: john现有h个小时的空闲时间,他打算去钓鱼。john钓鱼的地方共有n个湖,所有的湖沿着一条单向路顺序排列(john每在一个湖钓完鱼后,他只能走到下一个湖继续钓), john必须从1号湖开始钓起,但是他可以在任何一个湖结束他此次钓鱼的行程。john在每个湖中每5分钟钓的鱼数(此题中以5分钟作为单位时间),随时间的增长而线性递减。而每个湖中头5分钟可以钓到的鱼数以及每个湖中相邻5分钟钓鱼数的减少量,input中均会给出。并且John从任意一个湖走到它下一个湖的时间input中也都给出。问题: 求一种方案,使得john在有限的h小时中可以钓到尽可能多的鱼。 output中需包... 阅读全文