上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 原题链接: 非常不错的一道题。以前做过一道水题与这道题类似,是一个从左往右的一个平均分配。而这道题是一个环状。 要点:列出方程组,消元变为单变量极值问题,利用中位数求出最短距离。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define N 1000005 5 typedef long long LL; 6 7 LL a[N], c[N]; 8 9 LL Labs(LL v){return v > 0 ? v : -v;}10 11 int 阅读全文
posted @ 2012-11-01 19:16 芒果布丁 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2829 贪心。因为交代任务的时间Bi是不能减少的,所以首先交代完成时间Ji最长的部下。过程中更新最短所需时间。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define INF 10000000 5 #define N 100 阅读全文
posted @ 2012-11-01 13:25 芒果布丁 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2267 谨以此水题标志开始《算法竞赛入门经典——训练指南》的学习。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define N 20005 5 6 int a[N], b[N]; 7 8 int main() 9 {10 i 阅读全文
posted @ 2012-11-01 10:48 芒果布丁 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://poj.org/problem?id=2826 这道题要的思路很容易,但把代码写丑也很容易。 接到的水的截面体积为0的情况有: 1. 两条线段不相交; 2. 其中任意一条线段水平; 3. 两条线段重合; 4. 相交的情况下,最高的端点遮住了次高的端点 这道题断断续续搞了一周才搞定,POJ上wa了几个版面。几何题,同样的功能不同的写法是wa与ac的鸿沟,唉~~~View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include < 阅读全文
posted @ 2012-10-31 18:39 芒果布丁 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 关于2-SAT(2-Satisfiability)资料的话就是伍昱的《由对称性解2-SAT问题》PPT和赵爽的《2-SAT 解法浅析》PDF。关于2-SAT的模板可参考[1]、[2]简要意思就是给定N个组(每个组2个元素)、M个互斥关系,从每个组里挑1个使得给定的不满足任何互斥关系。但是解决这类问题的关键还是在于建模,基本建模就是对于两个不相容的点i、j,构图方式为:i->j'(i和j冲突,选i只能选j')和j->i'(i和j冲突,选j只能选i')。解2-SAT方法是,对原图求一次强连通分量,然后看每组中的两个点是否属于同一个强连通分量,如果存在这种 阅读全文
posted @ 2012-10-28 09:25 芒果布丁 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?我想说下我的理解。很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,我们训练的目的是什么?我觉得有四点1、提高编程能力2、学习算法,(读书,读论文,包括做一些题目验证)3、准备好面临将到来的挑战(熟悉题型,调整心态)4、启发思维。这里四个目的,从训练的角度上,重要性逐次递减;为什么呢?因为 阅读全文
posted @ 2012-10-25 22:27 芒果布丁 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://poj.org/problem?id=1066 不用管“门要在墙壁中央”这个条件,直接枚举每个分割区间的中点为进入点,然后再求该进入点与藏宝点的线段与所有线段的最少交点数(不管路线怎么折,这个贪心策略都是正确的)。注意n=0的情况,注意线段相交精度(去除在端点相交的情况)。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #include <vector> 5 #define eps 1e-10 6 using nam 阅读全文
posted @ 2012-10-20 21:02 芒果布丁 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://poj.org/problem?id=2653 线段相交。 从后往前筛TLE,从前往后却AC了,数据坑爹。View Code 1 #include <cstdio> 2 #define maxn 100005 3 const double eps = 1e-8; 4 struct segment 5 { 6 double x1, y1, x2, y2; 7 }seg[maxn]; 8 9 double min(double a, double b)10 {11 return a < b ? a : b;12 }13 14 double max... 阅读全文
posted @ 2012-10-20 18:25 芒果布丁 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://poj.org/problem?id=2155 楼教神题,二维树状数组。 弄懂一维树状数组,二维的也不难懂。可以参考NOCOW。 需要注意的是,修改的四个点分别是(x1, y1), (x2+1, y1), (x1, y2+1), (x2+1, y2+1),而不是(x1, y1), (x2, y1), (x1, y2), (x2, y2),因为如果是后者的话,(x2, y2)会被4次覆盖(也就是点(x2, y2)不会被改变)。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define 阅读全文
posted @ 2012-10-18 14:56 芒果布丁 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2688 这题在武森的论文《浅谈信息学竞赛中的“0”和“1”》中有很精彩的讲解。 这道题暴力枚举肯定TLE,转而想到消去绝对值符号,式子前面加上“+”和“-”两个符号,有5维,则一共有25种情况,而总的最大值是这25种情况的最大值减最小值。对于每种情况,都可以O(n)求出最大值和最小值。总复杂度为O(n*2k ),可以承受了。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #de 阅读全文
posted @ 2012-10-18 11:03 芒果布丁 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=3474 单调队列。 这题的模型可以这样描述:给一个只由1和-1组成的循环序列,求以每个点为起点且长度最长为n的子串的最小值。到这一步,应该能想到单调队列的解法了。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #define N 2000005 5 6 int sum[N], a[N], q[N], n, ok1[N], ok2[N]; 7 8 void c 阅读全文
posted @ 2012-10-17 21:04 芒果布丁 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=3415 【题目分析】 因为序列是环状的,所以可以在序列后面复制一段(或者复制前 k 个数字)。如果用 s[i]来表示复制过后的序列的前 i 个数的和,那么任意一个子序列[i..j]的和就等于[j]-s[i-1]。对于每一个 j,用 s[j]减去最小的一个 s[i](i>=j-k+1)就可以得到以 j 为终点长度不大于 k 的和最大的序列了。将原问题转化为这样一个问题后,就可以用单调队列解决了。View Code 1 #include <stdio.h> 2 #include < 阅读全文
posted @ 2012-10-17 17:48 芒果布丁 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 原题传送:http://poj.org/problem?id=2823 单调队列练手题。(不怕麻烦也可以用线段树) 程序运行了5000+ms,不明白几百ms的是什么算法,如果读者您知道请留个言,感激不尽。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define N 1000005 4 int a[N]; 5 6 struct node 7 { 8 int key, val; 9 }e[1000005];10 11 12 int main()13 {14 int n, k, i, head, tail.. 阅读全文
posted @ 2012-10-17 12:44 芒果布丁 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://poj.org/problem?id=3009 暴力DFS + 回溯。注意行和列不要搞反,并且当搜索深度大于10的时候直接返回。View Code 1 #include <stdio.h> 2 #include <string.h> 3 4 int r, c, ans; 5 int g[25][25]; 6 7 inline int min(int x, int y){return x < y ? x : y;} 8 9 int checkup(int x, int y) 10 { 11 if(y - 1 > 0 && 阅读全文
posted @ 2012-10-16 21:00 芒果布丁 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 到http://www.rarlab.com/download.htm下载RAR 4.20 for Linux。 得到的tar.gz包,解压缩,如果里面有makefile文件,那么就不用编译,否则手动编译一下,然后到该目录下执行:sudo make install 就可以了。 阅读全文
posted @ 2012-10-15 20:16 芒果布丁 阅读(237) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页