摘要: 很不错的hash 优化有两个方面:1.根据题目换一个更优化的算法 2.在算法运行过程中优化 这题除了暴力好像没别的办法了吧? 但是暴力也是有策略的! 到第i只牛特征为j的总数为sum[i,j]; 找到最大的区间(l,r]使得sum[r,1]-sum[l,1]=sum[r,2]-sum[l,2]…=s 阅读全文
posted @ 2014-02-10 15:35 acphile 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 很容易想到dp,f[i,j,k]表示到第i根木棒所组成三条边中两条边长为j,k是否存在 之后找所有满足三角形形成条件的三条边,然后找最大; 但: 如果你朴素的写,很有可能超时,事实上,只要加一些常数优化,就能卡过去 1 var a,s:array[0..50] of longint; 2 f:arr 阅读全文
posted @ 2014-02-10 14:37 acphile 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 这两题都体现了dp的核心:状态 dp做多就发现,状态一设计出来,后面的什么都迎刃而解了(当然需要优化的还要动动脑筋); 先说比较简单的; poj2436 由题得知病毒种数<=15很小,于是我们就容易想到将病每个牛携带的病毒抽象成15位的二进制数 0表示这种病毒不存在,1表示病毒存在,于是设cowi携 阅读全文
posted @ 2014-02-10 12:22 acphile 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 竟然生日前一天poj破百,不错不错,加速前进! poj2437 由于泥泞不重叠,所以按其实左边排个序再统计一遍即可(如果不是刚好盖满就尽量往后盖) poj2435 细节bfs poj2230 求欧拉回路,dfs即可 poj1330 简单的LCA poj2458 傻×穷举 poj2459 模拟水题 p 阅读全文
posted @ 2014-02-10 11:40 acphile 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 首先按限制高度排序,然后按多重背包做dp 这里的背包只用知道每种状态是否可行,所以 这里的多重背包可以变成O(nm) 1 const max=30000001; 2 var f:array[0..1,0..1010,0..4] of longint; 3 a,b:array[0..1010] of 阅读全文
posted @ 2014-02-10 11:25 acphile 阅读(206) 评论(0) 推荐(0) 编辑