上一页 1 2 3 4 5 6 ··· 11 下一页
摘要: 原题链接:http://122.207.68.93/OnlineJudge/problem.php?id=1116 由于n比较小,直接枚举,然后对于每一个状态用最小生成树算法验证即可,感觉是水过去的,复杂度O(2n*n*m)。(有状压DP做法?)#include #include #include using namespace std;#define N 20struct Node{ int u, v, w;}e[105];int n, m, k, p[N], ans, f[N];bool cmp(Node a, Node b){ return a.w >e[i].u)&1.. 阅读全文
posted @ 2013-11-18 11:48 芒果布丁 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://www.spoj.pl/problems/SQRBR 动态规划。 设f[i][j]表示前i个位置在合法情况下缺少j个右括号的方案数。 转移方程为: f[i][j] = f[i-1][j-1] (第i个地方必须为'[') f[i][j] = f[i-1][j-1] + f[i-1][j+1] (分第i个位置放左括号和右括号的情况) 写的第一份代码不是很严谨,j-1变为负值,但spoj判ac了。 1 #include 2 #include 3 #define N 205 4 5 int f[N][N], n, k; 6 bool h[N]; 7 8 ... 阅读全文
posted @ 2013-11-12 19:26 芒果布丁 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 如果不出什么意外,历经1年半的ACM生涯结束了。 阅读全文
posted @ 2013-11-08 21:41 芒果布丁 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://www.spoj.com/problems/SUPPER/ 这道题n())或降序查找(greater())。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #define N 100005 9 10 int a[N], L[N], R[N], n, m, d[N];11 vector vt;12 13 int main()14 {15 for(int cas = 1; cas ()) - vt.begin();24 ... 阅读全文
posted @ 2013-11-01 17:41 芒果布丁 阅读(238) 评论(0) 推荐(0) 编辑
摘要: HDU 1068 Girls and Boys 男生和女生构成二分图,根据题目男女直接的暧昧关系求出最大匹配m,根据二分图的性质容易知道答案为n-m/2。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include ... 阅读全文
posted @ 2013-10-23 12:44 芒果布丁 阅读(580) 评论(0) 推荐(0) 编辑
摘要: 各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言。对于我来说,这是我第一次正式参加ACM的比赛。不过我跟ACM之间的缘分,大概在很早的时候就已经存在了。 我还依稀记得,在我初三的时候,晚上我的一个好朋友在用手机跟妹子聊天,而我在用手机看OI和ACM的题目。自习课上我的那个朋友跟妹子一起学习,而我则翘课想去机房,有时候机房老师不让我去,我就跑去天台用草稿纸想题目。中午的时候我的那个朋友去跟妹子一起吃饭了,而我在机房里啃泡面。周末他们出去看电影逛公园,我就在电脑前面刷出一整版的WA。就这样日子悠悠的过去,我的朋友如今跟妹子过的很幸福... 阅读全文
posted @ 2013-10-19 19:38 芒果布丁 阅读(1532) 评论(0) 推荐(1) 编辑
摘要: DLX用于优化精确覆盖问题,由于普通的DFS暴力搜索会超时,DLX是一个很强有力的优化手段,其实DLX的原理很简单,就是利用十字链表的快速删除和恢复特点,在DFS时删除一些行和列以减小查找规模,使得搜索深度越深而越小,然后回溯继续查找。具体资料可【点击这里】。 精确覆盖问题(补充):具体一点儿就是给你一个0-1矩阵,要你找出一些行,使得每一列都有且只有一个1。HUST 1017Exact cover 入门必做,测试模板。 1 #include 2 #include 3 4 const int N = 1005; 5 const int M = 1000005; 6 c... 阅读全文
posted @ 2013-10-18 15:00 芒果布丁 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 最近也参加了一些公司去笔试,发现很多公司都喜爱考查“堆排序”这玩意儿,特地花一点儿时间学习并自己亲自写代码去实现。 这里的堆结构是二叉堆,是一种完全二叉树的数据结构,堆排序分为两部分,第一部分是建堆,可以根据要求建成大根堆或小根堆;第二部分就是排序了。堆排序是用数组模拟树的结构来进行排序的。 建堆过程:从编号更大的节点开始更新,取其左右孩子大者交换位置不断更新直到当前节点的值大于左右孩子节点权值或更新到了叶子节点。 排序过程:不断取出根节点元素,每取出一个根节点元素就将尾节点元素放到根并更新堆。/* 堆排序实现*/#include #include #include #incl... 阅读全文
posted @ 2013-10-08 15:43 芒果布丁 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 以前一直用Codeblocks写C++,eclipse写Java,再在eclipse里面集成PyDev写Python,首先无法忍受代码自动补全功能(这个功能也许你万分喜欢),也无法忍受如此重量级的IDE导致运行起来感觉很笨重。后来发现EditPlus完全符合我自己的要求,不过要自己配置一下编译运行环境而已,这也不过几分钟的事儿,而且我喜欢自定义的代码高亮颜色(用Vim的时候就喜欢这么做了)。下面介绍EditPlus配置C++、Python、Java三种语言的编译运行环境,这三种语言也是我经常用的而且经常要切换的。首先,进入【工具】->【配置用户工具】,选择一个组,点击【组名】另命名一个组 阅读全文
posted @ 2013-10-04 23:53 芒果布丁 阅读(452) 评论(0) 推荐(0) 编辑
摘要: POJ 1458 LCS。View Code #include #include #define N 1001char a[N], b[N];int dp[N][N];int max(int x, int y){return x > y ? x : y;}int solve(){ int n = strlen(a), m = strlen(b); int i, j; for(i = 0; i #include#includeusing namespace std;vector a,b;int c[101][101];short d[101][101];int lena,le... 阅读全文
posted @ 2013-10-04 13:11 芒果布丁 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 最大权闭包模型中源点与正收益的点连边,负收益的点与汇点连边,容量取绝对值,然后相关联的点之间之间连容量为无穷大的边。具体可参见胡伯涛:《最小割模型在信息学竞赛中的应用》HDU 3061Battle 应该是最裸的最大权闭包题了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 ... 阅读全文
posted @ 2013-10-02 19:09 芒果布丁 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 昨天参加了某公司的校园招聘的笔试题,做得惨不忍睹,其中就有这么一道算法设计题:求一个字符串的最长回文字串。我在ACM校队选拔赛上遇到过这道题,当时用的后缀数组AC的,但是模板忘了没写出代码来。 回头我把这道题目再次问了队友,他搞字符串的,说后缀数组求最长回文串是nlogn的,这个logn要大也大不到哪里去,所以这个做法可以过一般的题目的,但是他告诉我有O(n)的算法——manacher算法,当时我就惊呆了,估计笔试得挂了。 回头做了HDU3068,从这道题学会了manacher算法。 manacher算法资料请戳:http://pan.baidu.com/s/1dzWJq 阅读全文
posted @ 2013-09-29 22:10 芒果布丁 阅读(263) 评论(0) 推荐(0) 编辑
摘要: (说明:这个专题中有很多题目也可以运用KM匹配算法。)HDU 1533 Going Home 入门题,典型二分图最优权值匹配。 建图: 1. 超级源点与人连边,流量为1,花费为0; 2. 房子与超级汇点连边,流量为1,花费为0; 3. 每个人与每个房子连边,流量为1,花费为距离。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include ... 阅读全文
posted @ 2013-09-09 17:00 芒果布丁 阅读(649) 评论(0) 推荐(1) 编辑
摘要: HDU 3572Task Schedule 这种题一开始完全想不出模型,题目做多了之后就有感觉了。 对于这道题,求一次最大流,判断是否满流就可以了。 建图:添加超级源点和汇点,对于每个任务,从源点向其连一条边,权值为Pi,因为要保证每个任务做够Pi天,然后把时限区间 si ~ ei 拆成一天一天的,那么该任务对应到一天连权值为1的边,最后,对于某一天,因为有m台机器可以同时工作,那么这一天向汇点连一条边,权值为m,求最大流。/* HDU 3549 Flow Problem */#include #include #include #include #include #include #i... 阅读全文
posted @ 2013-09-05 23:29 芒果布丁 阅读(395) 评论(0) 推荐(0) 编辑
摘要: HDU 1878欧拉回路 最简单的欧拉回路了,如果结点的出度入度之和不是2的倍数,那么就不是欧拉回路。注意要判断图是否连通。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define pii pair#define clr(a) memset((a),0,sizeof (a))#defi... 阅读全文
posted @ 2013-09-04 21:50 芒果布丁 阅读(408) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 11 下一页