上一页 1 2 3 4 5 6 7 8 ··· 34 下一页
摘要: 题意:有n批人,m艘船,每艘船的容量为K, 让第i 批人上船可获利bi,但是会占据ai+1个船位,而且,整批人都在必须在同一艘船上,而且,优先级别高的那批人必须在优先级别低的人前面(包括船的所在编号,hint里面有提示)分析:参照大牛的思路,太牛逼了,dp[i]表示获得价值i需要最少的代价(占据的船位,同时保证同一批人在同一艘船上)就是一个类似01背包的过程了(同时也保证了优先级别),不过每一批人花费的代价要重新计算(根据前一个状态下剩余的船位)View Code #include<iostream>#include<algorithm>#include<stri 阅读全文
posted @ 2012-04-13 14:30 枕边梦 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 分析:当N为奇数时奇偶同性可互达,N为偶数时,逆序数之和sum加上空格所在行距目标空格行的距离dis之和要和终点状态逆序数同奇偶View Code #include<iostream>#include<algorithm>#include<string>using namespace std;const int N = 300+10;int s[N*N],g[N*N];#define _cp(a,b) ((a)<=(b))int _tmp[N*N];int inv(int n,int* a){ int l=n>>1,r=n-l,i,j; i 阅读全文
posted @ 2012-04-13 09:45 枕边梦 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 二分距离,求最大团,看是否>=KView Code #include<iostream>#include<algorithm>#include<string>#include<math.h>using namespace std;const int N = 50+10;int dis[N][N],dd[N*N];int dp[N];bool inset[N],g[N][N];int n,best,ord[N],deg[N];bool found;inline void Memcpy(bool *d,bool *s){ for(int i=0 阅读全文
posted @ 2012-04-13 09:24 枕边梦 阅读(435) 评论(0) 推荐(0) 编辑
摘要: View Code #include <iostream>#include <string>#include <cmath>using namespace std;const int maxn = 105;int equ, var; // 有equ个方程,var个变元。增广阵行数为equ, 分别为0到equ - 1,列数为var + 1,分别为0到var.int a[maxn][maxn];int x[maxn]; // 解集.bool free_x[maxn]; // 判断是否是不确定的变元.int free_num;void Debug(void){ i 阅读全文
posted @ 2012-04-12 15:33 枕边梦 阅读(635) 评论(0) 推荐(0) 编辑
摘要: /*================================================================================================*\| Gauss消元算法求解开关灯问题\*================================================================================================*/开关问题:有N个相同的开关,每个开关都与某些开关有着联系,每当你打开或者关闭某个开关的时候,其他的与 此开关相关联的开关也会相应地发生变化,即这些相联系的开关的状态 阅读全文
posted @ 2012-04-12 15:31 枕边梦 阅读(810) 评论(0) 推荐(0) 编辑
摘要: 前天做题遇到hdu2121 时一点思路都没有,于是往后面一道题去了,结果做了hdu2122(求最小生成树)之后受到启发,hdu2121分明就是一道求有向图的生成树,也就是最小树形图。。。。于是搜了很久,啃了很久,终于……主要在这下面三个博客上学习的:很赞的图,http://hi.baidu.com/bin183/blog/item/45c37950ece4475f1138c273.html很牛逼的理论http://www.zlinkin.com/?p=63很好的模板+题目http://www.notonlysuccess.com/index.php/mst/#more-315pku3164 C 阅读全文
posted @ 2012-04-11 09:01 枕边梦 阅读(3498) 评论(0) 推荐(0) 编辑
摘要: 题意:数独游戏,不过只能用给定的多米诺骨牌填数独,而且每一个牌只能用一次,有唯一解分析:对一个未填的方格枚举三十六个牌,每一个牌有俩种摆放方式,……关键在于有没有好一点的判断方法,判断当前的放置方法是否符合数独的要求用三个数字st[3][9]表示st[0]数组表示九行的放置状态,比如,st[0][0]的每一个位表示第一行对应选了哪一个数字以此类推,st[1]表示列,st[2]表示3*3的方格代码有点冗长了,好挫…………View Code #include<iostream>#include<algorithm>#include<string>using na 阅读全文
posted @ 2012-04-10 15:26 枕边梦 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 给定N个物种的基因序列,若俩个序列s1和s2的最长公共子串长度len满足 |s1|*p<len && |s2|*p<len (p是题目给定的百分比),则俩个物种属于同一类,问这N个物种可以分为几类分析:额,LCS+并查集View Code #include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;const int N = 100+10;int n,f[N];double p;char str[N][ 阅读全文
posted @ 2012-04-09 19:18 枕边梦 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 最近又重新过了一遍二分匹配,发现了一些之前理解上的误区,这几天的纠结还是很值得的hdu1281 棋盘游戏//分别以行和列为单位,那么确定的和行和列唯一确定一个格子//行向列连边,求最多的可放置的格子,也就是求最大匹配//求重要点数,删除已匹配的边,判断是否存在最大匹配View Code #include<iostream>#include<algorithm>using namespace std;const int N = 101;int n,m,my[N],mx[N];bool vis[N],mat[N][N];//分别以行和列为单位,那么确定的和行和列唯一确定一个 阅读全文
posted @ 2012-04-02 10:32 枕边梦 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意:抽象出模型: 用1*2的木板覆盖矩阵中的‘#’,(木板要覆盖的只能是‘#’),问最多能用几个木板覆盖分析:很典型的二分匹配问题,将矩阵中的点分成俩种,下标i+j为奇数和偶数俩种,即把矩阵当成一个黑白棋盘,那么,一个木板只能覆盖一个黑色和一个白色格子,将黑色格子(并且是‘#’的格子)跟相邻的白色(并且是‘#’)的格子连一条边,则变成了一个求最大匹配的问题了点数太多,可以将棋盘上的点hash一下View Code #include<iostream>#include<algorithm>#include<vector>using namespace std 阅读全文
posted @ 2012-03-31 21:31 枕边梦 阅读(652) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 34 下一页