_xiaobai_

导航

2011年8月18日

zoj1163 The Staircases(DP)

摘要: /*01背包:整数拆分问题 */View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstring> 4 5 using namespace std; 6 7 long long dp[ 501 ]; 8 9 int main()10 {11 memset( dp, 0, sizeof( dp ) );12 dp[ 0 ]= 1;13 for ( int i = 1 ; i <= 500 ; ++ i )14 for ( int j = 500 ; j >= i ; - 阅读全文

posted @ 2011-08-18 01:58 _xiaobai_ 阅读(183) 评论(0) 推荐(0) 编辑

zoj1134 Strategic Game(DP/图论)

摘要: /*简单的树形DP:利用搜索正向求解。 0的孩子必须是1,1的孩子任意,取最小的。 */View Code 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 #define min(x,y) ((x)<(y)?(x):(y)) 6 7 typedef struct node 8 { 9 int Count;10 int Value;11 int Next[ 10 ];12 }node;13 node Node[ 1510 ];14 int Root;15 16 ty 阅读全文

posted @ 2011-08-18 01:55 _xiaobai_ 阅读(211) 评论(0) 推荐(0) 编辑

zoj1094 Matrix Chain Multiplication(模拟)

摘要: /*简单的模拟:可以用栈,也可以用递归实现*/View Code 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 struct node 7 { 8 int L,R; 9 long long V;10 }Matrix[ 27 ],Error;11 12 bool Flag;13 14 node Calculate( char* Data, int s, int e )15 {16 int count = 0;17 node Save[ 2 ];18 for ( int i = 阅读全文

posted @ 2011-08-18 01:48 _xiaobai_ 阅读(269) 评论(0) 推荐(0) 编辑

zoj1027 Human Gene Functions(DP)

摘要: /*经典模型:最长公共子序列 */View Code 1 #include <iostream> 2 #include <cstdlib> 3 4 using namespace std; 5 6 int Geno[ 210 ][ 210 ]; 7 int Matr[ 5 ][ 5 ] = { 8 { 5,-1,-2,-1,-3}, 9 {-1, 5,-3,-2,-4},10 {-2,-3, 5,-2,-2},11 {-1,-2,-2, 5,-1},12 {-3,-4,-2,-1, 0}};13 14 int V( char C )15 {16 switch( C ) 阅读全文

posted @ 2011-08-18 01:46 _xiaobai_ 阅读(177) 评论(0) 推荐(0) 编辑

zoj1558 Euro Efficiency(DP)

摘要: /*背包变形:如果按照完全背包计算会有后效性,所以用01背包计算注意两点:1.数据的范围,因为要做差,所以数据要超过100 2.背包时物品的顺序,本题的解会受到顺序影响, 所以先对所有数据01背包,然后再次01背包。补充:忽然发现bfs是DP,按广度为阶段,并且每个值最求一次#24*/View Code 1 #include <stdio.h> 2 #include <iostream> 3 4 using namespace std; 5 6 int F[ 205 ]; 7 int C[ 7 ]; 8 9 int main()10 {11 int T;12 while 阅读全文

posted @ 2011-08-18 01:06 _xiaobai_ 阅读(320) 评论(0) 推荐(0) 编辑

2011年8月17日

zoj2972 Hurdles of 110m(DP)

摘要: /*背包类似物:关键是阶段的划分,昨天阶段想错了,其实阶段很明显了,今天调了一段时间,发现数据看错了,╮(╯▽╰)╭按照题目给出的阶段DP。转移方程 : F(i,j) = min( F(i-F1,j)+T1, F( i-1,j )+T2, F(i+F2,j)+T3 ) */View Code 1 #include <iostream> 2 #include <cstdlib> 3 4 using namespace std; 5 6 int F[ 111 ][ 111 ]; 7 int T1[ 111 ]; 8 int T2[ 111 ]; 9 int T3[ 111 阅读全文

posted @ 2011-08-17 22:35 _xiaobai_ 阅读(238) 评论(0) 推荐(0) 编辑

zoj3321 Circle(搜索)

摘要: /* 简单的搜索,欧拉回路的判断*/View Code 1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 6 bool maps[ 11 ][ 11 ]; 7 bool used[ 11 ]; 8 9 bool dfs( int n, int s, int d )10 {11 if ( d == n ) return true;12 bool value = false;13 for ( int i = 1 ; i <= n ; ++ i )14 if ( !used[ i 阅读全文

posted @ 2011-08-17 14:31 _xiaobai_ 阅读(207) 评论(0) 推荐(0) 编辑

zoj3141 nie's Dog Biscuits(DP)

摘要: /*简单的DP:区间动态规划,对于一个m*n的蛋糕只有横竖两类切法 f( m, n ) = min{ f( m, i ) + f( m, n-i ), f( j, n ) + f( m-j, n ) } */View Code 1 #include <stdio.h> 2 3 short F[ 201 ][ 201 ]; 4 5 int main() 6 { 7 for ( int i = 0 ; i <= 200 ; ++ i ) 8 for ( int j = 0 ; j <= 200 ; ++ j ) 9 F[ i ][ j ]= i*j;10 11 for ( 阅读全文

posted @ 2011-08-17 14:29 _xiaobai_ 阅读(219) 评论(0) 推荐(0) 编辑

zoj2778 Triangular N-Queens Problem(找规律)

摘要: /*分析:三角N皇后问题,找规律题目,按照题目的输出,可以看出构造法则,先填奇数,后填偶数。下面我们只要证明这种构造的存在性即可。解法:先给出集体构造方法,从(1,n-f(n)+1) 开始填充奇数点,填充所有的(1+2k,n-f(n)+1+k){其中f(n)就是最大填充数,1+2k<=n-f(n)+1+k} 之后开始从(2,n-f(n)+1+k+1)开始填充偶数点,由于奇数点只能攻击奇数点,偶数点只能攻击偶数点,所以只要保证每行一个皇后就可以了。 证明: 我们只需要证明从第n-f(n)+1行开始,每行都可以放一个皇后就可以了。 首先,按照上面的构造可知,如此构造,皇后是不可以互相攻击的。 阅读全文

posted @ 2011-08-17 14:28 _xiaobai_ 阅读(255) 评论(0) 推荐(0) 编辑

zoj2771 Get Out of the Glass(DP)

摘要: /*简单DP:分成奇偶两种状况考虑奇数情况:每个面的光线等于上次的本平面以上的点的反射偶数情况:每个面的光线等于上次的本平面以下的点的反射 */View Code 1 #include <stdio.h> 2 #include <string.h> 3 4 long long F[ 61 ][ 4 ]; 5 6 int main() 7 { 8 int i,j,k,n; 9 memset( F, 0L, sizeof( F ) );10 F[ 0 ][ 0 ] = 1L;11 12 for ( i = 1 ; i <= 60 ; ++ i )13 for ( j 阅读全文

posted @ 2011-08-17 14:27 _xiaobai_ 阅读(243) 评论(1) 推荐(0) 编辑