http://blog.csdn.net/logic_nut/archive/2009/08/10/4428460.aspx

http://www.cnblogs.com/asuran/archive/2009/10/11/1580773.html

http://blog.csdn.net/clearriver/archive/2009/10/09/4647639.aspx

http://hi.baidu.com/__%D2%E5__/blog/item/632fbbed7499d12f63d09fe1.html

直接枚举,不就是 N 个节点么?考虑一个从 0 到 2^N -1 的整数,对应二进制的 N 位,某一位为 1,则对应节点属于一个集合,为 0 的属于另外一个集合,然后看是否满足要求。一共也就这么多种状态。全部给遍历一遍,一定可以得到一个结果。也可以使用随机化的思想,循环一定次数,每次随机选择一个节点,改变其所属集合。
Read the rest of this entry »



http://hi.baidu.com/forverlin1204/blog/item/053a0737b61b89d5a3cc2b95.html

把一个序列维护成非递减的最小代价。
对数组从小到大排序,记录下之前的 id,对于枚举第 j 个高度,那么就是从1,到j-1个前一个位置高度的最优解中找一个最小的,如果每次都做同样的工作,那将会是 n^3,这里可以利用前面获取的信息来降低维数,接下来就是老老实实的DP了 。
dp[i][j] 表示对于第 i 个元素取其 j 高的值时对应的最小代价。



February 20th, 2010POJ 1185 —— 炮兵阵地

所谓的状态压缩 DP。
用状态dp来做。用一个整数x表示该行的状态,
二进制中1表示该处放了炮兵,0表示没有。

这样,我们经过前两行的状态就能推到下面一行每个状态的最大个数。
令dp[i][j][k] 表示第i行状态为k,第i-1状态为j时的最大炮兵个数。
依次推至dp[i+1][k][t];
Read the rest of this entry »



February 20th, 2010POJ 1041 —— John’s trip

http://blog.sina.com.cn/s/blog_48e3f9cd010002un.html

一个无向图存在欧拉回路的充要条件是每个顶点的度是偶数, 对于有向图存在欧拉回路的条件是每个顶点的出度等于入度(就是出去的边数等于进来的边数)。
看下面路径遍历问题的总结:

http://bchine.com/mjmjmtl/?p=241



February 20th, 2010POJ 1158 —— TRAFFIC LIGHTS

http://hi.baidu.com/archersfate/blog/item/7325e31e921f63c1a686692f.html

http://blog.sina.com.cn/s/blog_5c95cb070100cxtr.html

题目太长,懒得看了。



February 19th, 2010projecteuler

来,有空做做数学题。
欧拉工程。

http://projecteuler.net/index.php?section=problems

http://adn.cn/blog/article.asp?id=87



February 18th, 2010POJ 1679 —— The Unique MST

http://hi.baidu.com/yxdark/blog/item/15ed442573cf853bc89559ab.html

求出最小生成树,然后枚举最小生成树中的边,尝试在删掉其中的边之后再求最小生成树,如果此时求出的最小生成树和原来的权值一样,就说明重复了。

http://hi.baidu.com/archersfate/blog/item/dc563eddac93fdabcc11666e.html

或者利用 Prim 算法。。。
看看是否有要加入的边和权值和已加入的边的权值相等。。。



给定 n 个集合 S1, S2, ..., Sn,每个集合 4 个元素,问存在多少个四元组 ∈ S1 x S2 x S3 x ... x Sn,使得其和为 0。
这种题目貌似很多啊。
参考:

http://hi.baidu.com/rpsproblem/blog/item/5854dc4fed90abc0d1c86a9e.html

Read the rest of this entry »



February 11th, 2010POJ 3264 —— Balanced Lineup

给定一个序列,求一个给定区间的最大最小值之差。尤其是在存在多次查询的情况下。
这种题目需要重视,倍增算法,也叫 Sparse Table 算法。

http://blog.csdn.net/logic_nut/archive/2009/08/30/4499467.aspx

或者线段树:

http://xuchao7.ycool.com/post.3248341.html

Read the rest of this entry »



February 10th, 2010POJ 1195 —— Mobile phones

标准的二维树状数组。



February 10th, 2010POJ 2976 —— Dropping tests

设有 n 个数对 a[i], b[i],其和的比值是 sum(a[i])/sum(b[i]);现在要从其中删掉一些数对,使得剩余数对的比值最大,问该把谁删掉。
Read the rest of this entry »



February 10th, 2010POJ 2348 —— Euclid’s Game

对于任意一个局面(a,b),它是必胜局还是必败局这是确定的。
对于局面(m,n)(m>n),两人一直往下取,必然会到局面(m%n,n)。
如果m/n<2,则此时只有一种往下走的方法,下一步必然是(m%n,n)。
如果m/n>2,则局面(m,n)的先取者就可以决定由谁去面对局面(m%n,n),因为这个先取者足够聪明可以判断(m%n,n)是必胜还是必败,因此我们也已经可以确定(m,n)的先取者已经胜了。



一棵树,有些节点有一些石头,现在要把石头分摊大盘每个节点,使得每个节点放置一个石头,每次将有石头的节点移动一颗石头到其它节点,问最小的移动次数是多少?
DFS,每个节点两个属性:left 和 move。
Read the rest of this entry »



题意:输入n和n条线段的长度seg[i](1 < = i <= n <= 40)由这些线段组成的三角形的面积最大为多少?
样例输入:
5 1 1 3 3 4

样例输出:
692

枚举第一条边的长度,我们需要快速知道第二条边和第三条边的取值的可能的组合。因为如果知道第二条边的长度,我们可以根据周长求到第三条边的长度,所以问题就变成了已知一条边,如何快速求另外一条边长度可能的取值,其实也就是子集和的问题。
Read the rest of this entry »



February 10th, 2010POJ 1950 —— Dessert

题意:输入 n(1 < = n <= 15),由 1 到 n 的数经加减乘(+, -, .)三种运算后值为 0 为一组答案,输出前20组答案,若不足20组,输出全部.最后输出答案总数cnt.
直接 dfs 暴力搜索。强烈推荐这种基础题目。
参考:http://blog.csdn.net/logic_nut/archive/2009/12/05/4946906.aspx
Read the rest of this entry »




© 2008 - 2012 道阻且长 | iKon Wordpress Theme | Powered by Wordpress 3.3.2