- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 ZOJ 3946(单源最短路)
//题意:给定n个点,m条路,每条路的花费为d,消耗的时间为c// 求从起点到各个点的时间之和最小且花费最小//方法:spfa跑一遍并维护cost 答案会爆int 有点坑#include #include #include #include #define error 999999999using namespace std;int fir[100100], vis
2016-04-27 23:00:33 532
原创 HDU 5666
//题解BC上有 Round #80 1002#include #include #include #include #include using namespace std;long long multi(long long a, long long b, long long p) //快速乘法 因为long long会爆{ long long sum = 0;
2016-04-17 22:26:54 421
原创 SGU 131(状压压缩+dp)
// 题意:一个n*m的矩阵,求用I型(1 * 2)和L型的两种方块进行填满有多少种方法// 方法:这题和poj2411有点类似 做过方块填充的应该都认得出来要用状压// 但是要比poj2411复杂 思路也是类似 不过因为要考虑L型 情况也复杂的多// 语文有点不太好 可能有点说不清楚// 利用两个参数 b1 表示前面的放置方式对now(当前行状态)的当前列的影响,b2 表示对pre(上
2016-04-14 23:14:35 615
原创 SGU 223(状压+dp)
// 题意:在一个n * n的棋盘上,放k个棋子使得每个棋子的周围八个区域都不得有其他棋子,问这样放置共有多少种// 方法:状压+dp的水题 这几天都要被状压弄疯了// dp[i][j][k] 代表第i行状态为j棋盘上总共放了k个棋子的方案数// 然后由此行的状态j推出下一行不冲突的状态l就好了// 巧妙利用 位运算和与运算来判断冲突 又快又方便#include "iostream"#
2016-04-14 21:22:05 533
原创 poj 2411 (状态压缩dp)
//题意:一个n*m的矩形用 1* 2 的卡牌填满 问共有多少种方法//方法:状态压缩+动规的思想 dp[i][j] 表示前i -1行全部填满 第i行状态为j的方法总和// 状态J的二进制状态 0 表示该位被占用了 1 代表 该为是空的//状态转移方程:dp[i][j] = sum(dp[i - 1][k]) (状态j可由状态k推出)//起初有一个地方我有点模棱两可
2016-04-07 13:47:53 511
原创 poj 3254(状态压缩dp)
// 题意:有一个n*m的矩阵 0代表不能种 1代表能种 求共有多少种种植方式// dfs肯定超时 用状态压缩dp// 最开始觉得状压dp也不是很省时 看别人博客优化// 利用st数组来优化 st[i]表示第i行可以达到的最大状态 比如这一行为111 那么对应的二进制数就是 1+2+4 = 7// 学习了别人的思路 dp[i][j] 表示第i行,状态为j的种植方式有多少种// dp[i]
2016-04-06 17:30:40 402
原创 zoj 3777(状态压缩dp)
// 题意:求一个长度为n的序列 所有的排列组成的疲劳值大于m的数量// 也就是求一个矩阵每行每列只能取一个得到的所有数字大于m共有多少种// n最大为12 m最大为500 所以采用状态压缩// 学习了别人的思路 dp[i][j] 表示状态为i,疲劳值大于等于j的排列有多少种// 接着就是由dp[i][j]推导出 dp[(1<<n) - 1][m] 即可#include #includ
2016-04-05 17:59:59 750
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人