摘要: 题意:有N个砝码(1<=N<=1000),每个砝码的重量(0~2^31),这些砝码有一些特点,每一个砝码的重量大于等于前两个砝码的和,给出一个重量C,要求任选一些砝码组合,组合的重量不超过C而且尽量大,求组合的数值。因为砝码的特点 f[n]>=f[n-2]+f[n-1],由斐波那契数列知N最多45、46项,所以1000是唬人的,如果用背包10^9数组开不出来,而且10^9*45超时,用dfs所搜,但是2^46也超时,加强剪枝代码:#include<iostream>#include<cstdio>#include<cstring>#incl 阅读全文
posted @ 2012-08-16 11:48 快乐. 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 题意:N个牛排成一队,1~N每头牛的前后位置和序号一致(序号小的在前面),两头牛如果关系好,就希望离得近一点,关系不好就希望离得远一点,现在给出一系列关系(每行关系三个数),每行表示两头牛,以及他们之间距离最大(或距离最小)是多少,求1号到N号牛的最大距离是多少,如果根据题目给的数据,牛不能排成一排,输出-1,如果1到N的距离任意,输出-2否则输出最大距离分析:根据题目很容易列出一组不等式,有一个隐含条件,后一头牛的坐标一定大于等于钱一头牛(xi+1-xi>=0)求最大距离,所以就用spfa(或BellMan_Ford)求1~N的最短路,如果存在负环,说明不能排成一排,输出-1,如果di 阅读全文
posted @ 2012-08-16 11:37 快乐. 阅读(170) 评论(0) 推荐(0) 编辑