上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 原题传送:http://poj.org/problem?id=2236 并查集。本来看到N是10^3级别,操作数P是10^6级别,那么N*P就是O(10^9)级别,一阵后怕,不停寻找Plog(N)算法,后来实在想不出,看看时间限制是10s,直接上O(10^9)碰碰运气,没想到1Y,800多ms。 这样的话实现就很容易了,但是1Y后又交了几次,用C++编译器有时ac,有时wa;而用G++虽然时间会慢一点,但是一直都是AC,神马情况?!View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define N 1002 阅读全文
posted @ 2012-09-13 17:49 芒果布丁 阅读(217) 评论(0) 推荐(0)
摘要: 原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=3697 贪心算法。起始点可能是0,1,2,3,4,枚举这5个起始点,后面的点选择可选策略是:选择符合该时刻且结束时间最早的。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define N 305 4 struct course 5 { 6 int s, t; 7 }e[N]; 8 9 int n;10 bool vis[N];11 12 void work()13 {14 int ans, i, j, k, . 阅读全文
posted @ 2012-09-13 11:59 芒果布丁 阅读(281) 评论(0) 推荐(0)
摘要: 原题传送:http://acm.hdu.edu.cn/showproblem.php?pid=3694 题意很简单,求平面四个点的费马点。 这道题直接枚举所有情况: 1.四个点独立不重叠,这种情况又分为两种情况: a.四个点构成凸四边形,那么对角线交点就是费马点 b.四个点构成凹四边形,那么费马点肯定是凹的那个点 (因为漏了这个情况wa了10多次) 2.四个点中有重复的点,费马点就是重复的那个点View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include 阅读全文
posted @ 2012-09-13 10:10 芒果布丁 阅读(252) 评论(0) 推荐(0)
摘要: 以前在墨尔本的一个室友,突然打电话给我,在我这里马上要凌晨3点的时候。他让我猜他现在在哪里,我说不是在墨尔本嘛,你还能去哪。他很神秘地说,不是哦,我现在在西班牙。然后我一下子就愣住了。因为很久之前我在一个人人相册里看到有关西班牙的照片的时候,曾经跟他说,西班牙那么漂亮自己将来一定要去一 次。 我没有想到的是,在我就要把自己曾经一闪而过的想法忘记的时候,他的电话就这么来了。到最后,站在我最想去的地方的人,却不是我。 挂了电话之后酷我音乐盒正好放到阿姆的lose yourself,依旧是那熟悉的节奏,和他的那段:look, if you had, one shot, or one oppor... 阅读全文
posted @ 2012-09-12 22:57 芒果布丁 阅读(168) 评论(0) 推荐(0)
摘要: 原题传送:http://poj.org/problem?id=1988 一开始的想法是把下堆连到上堆去(这很符合树的结构思想),然后另外开一个数组标记录节点的值,递归的时候字节点加上这个标记的值与根节点的差值,但是发现,这样做在某些union_set时会使同一个根的所有节点标记的值错乱。 这道题需要对并查集有比较深刻的理解,多开一个数组记录堆总数。把上堆union到下堆上去,这样,总的根就是下堆的根,最上堆总是在最下层,find_set的时候就很方便求出答案。View Code 1 #include <stdio.h> 2 #define N 30001 3 4 int a[N], 阅读全文
posted @ 2012-09-12 20:29 芒果布丁 阅读(212) 评论(0) 推荐(0)
摘要: 【原题传送】HDU4310 Hero 原本以为根据DPS排序个序就可以了,经过几次wa后,想起POJ上的一道题类似的题,贪心算法,根据DPS/HP从大到小排序,具体证明写出下面的式子推导一下就可以了。 (A.DPS + B.DPS) * A.HP + B.DPS * B.HP > (A.DPS + B.DPS) * B.HP + A.DPS * A.HP <=> A.DPS / A.HP > B.DPS / B.HP 官方解题报告说的状态压缩DP。View Code 1 #include <stdio.h> 2 #include <string.h&g 阅读全文
posted @ 2012-09-11 17:10 芒果布丁 阅读(147) 评论(0) 推荐(0)
摘要: 这次装系统,不得不吐槽啊。 首先,想把ubuntu12.04这个最新版本装到电脑上和windows一起双飞,好,就用最简单2B的wubi安装,进入ubuntu安装界面,却出现:没有定义根文件系统!哎哟我去,wubi怎么没有自动帮我分配根目录呢?特么wubi你安装系统怎么自己不开个目录呢?wubi安装失败告终。 后来,把从官网下的iso刻到光盘上去,从光盘安装一般来说都是最保险的。把空白盘放入光驱后,在菜单里面有“刻录”选项,特高兴,选中iso,点刻录,完成。重启,boot with DVD,怎么?为什么还是直接进入到了windows,不是已经设置为从光驱启动了吗?后来我一直以为光驱坏了,... 阅读全文
posted @ 2012-09-11 10:49 芒果布丁 阅读(274) 评论(0) 推荐(0)
摘要: 原题传送:http://poj.org/problem?id=1160 动态规划。 用dp[i][j]记录把前i个邮局建到前j个村庄中的最优解,用cost[i][j]记录所有在i到j村庄中,建1个邮局的最小代价。显然邮局应该设到中点。让前i个邮局覆盖前j个村庄,第i+1个邮局覆盖第j+1至j+k个村庄(j+k<=n),则状态转移方程为dp[i+1][j+k]=min{dp[i][j]+cost[j+1][j+k];}(k+j<=n) cost数组存放从i到j中有一个邮局的最小代价,显然该邮局应该放在中间。 dp[i][j]表示前i个邮局覆盖前j个村庄的最小代价,对于i=1来说,dp 阅读全文
posted @ 2012-09-10 12:40 芒果布丁 阅读(272) 评论(0) 推荐(0)
摘要: 原题传送:http://poj.org/problem?id=1984 并查集。 首先,以为k个询问中的I是乱序的,直接被吓傻了,后来看讨论版才发现I是升序的…… 这道题让我对并查集有一个新的认识:根的代表性是非常强的!并查集里如果某个节点的改动会影响到整个并查集的所有节点,那么,在union_set的时候只需要改动根节点就可以了,当然,在find_set函数里要对所有节点进行更新(这相当于一种延时标记)。我们知道,find_set函数走了两条路,一条是前往根的路,一条是从跟返回的路,那么,如果发现根已经被改动,必须在从根返回的路上更新经过的所有节点。这在find_set函数里是可以... 阅读全文
posted @ 2012-09-07 15:20 芒果布丁 阅读(620) 评论(0) 推荐(1)
摘要: 原题传送:http://poj.org/problem?id=1703 并查集。 这题更加深了对并查集的理解,以前做过差不多的类似“朋友传递”的题。这道题核心的一句话是:敌人的敌人是朋友。那么假设每个x总有一个敌人(编号为x+n),那么可以把a加入到b的敌人b+n代表的并查集中,把b加入到a的敌人a+n的并查集中。如果find(a)==find(b),那么a和b是同gang;如果find(a)==find(b+n)或者find(b)==find(a+n),那么a和b是不同的gangs;否则,not sure。View Code 1 #include <iostream> 2 #in 阅读全文
posted @ 2012-09-07 09:53 芒果布丁 阅读(144) 评论(0) 推荐(0)
摘要: 原题链接:http://poj.org/problem?id=1611 并查集。在每个group中,最开始的出发点是以该group中最小编号的学生为根的(这个是根据题意编号为0的学生是suspect来决定的),如果该group中有某个学生的父亲节点(或祖父节点)编号大于该group最小编号,则将最小编号union到上述的父亲节点(或祖父节点)上,那么在处理完成后,可以构造出一颗以编号0学生为根的树(并查集)。对所有节点询问其祖先节点,如果其祖先节点编号为0,那么计数加1。View Code 1 #include <stdio.h> 2 #include <algorithm& 阅读全文
posted @ 2012-09-06 11:50 芒果布丁 阅读(177) 评论(0) 推荐(0)
摘要: 【题目链接】HDU3641Treasure Hunting 对ai进行质因子分解,然后在long long范围内二分找出题目所求最小x。 通过这道题学到了快速求阶乘包含某个因子的个数,下面是简要证明: 出处:http://www.cnblogs.com/cxiaojia/archive/2011/04/12/jiechengyinshifenjie.html 给定两个数m,n 求m!分解质因数后因子n的个数。 这道题涉及到了大数问题,如果相乘直接求的话会超出数据类型的范围。 下面给出一种效率比较高的算法,我们一步一步来。 m!=1*2*3*……*(m-2)*(m-1)*m... 阅读全文
posted @ 2012-09-05 16:06 芒果布丁 阅读(327) 评论(0) 推荐(0)
摘要: 原题链接:http://poj.org/problem?id=1730 很恶心的一道题,首先被精度搞得wa爆,然后很2B以为在int范围内 -(-2^31) = 2^31,额滴神啊,2^31次方还在int范围吗!!!#include <stdio.h>#include <stdlib.h>#include <math.h>const double eps = 1e-12;int main(){ long long n, i; double j; bool flag; while(scanf("%lld", &n), n) { fl 阅读全文
posted @ 2012-09-04 22:04 芒果布丁 阅读(145) 评论(0) 推荐(0)
摘要: HDU4300 Clairewd’s message解题报告: 这道题问的就是将1个串如何变为stringA+stringB的形式,使得stringA是stringB经过映射得到相同的串。映射那步其实没有什么价值,假设str为原串s经过 映射后得到的串,我们可以以str为模式串,以s为原串做一次扩展KMP,得到extend数组,extend[i]表示原串以第i开始与模式串的前缀的最长匹配。经过O(n) 的枚举,我们可以得到: 若extend[i]+i=len且i>=extend[i]时,表示stringB即为该点之前的s串,stringA即为该点之前的str串,最后输出即可。 扩展kmp 阅读全文
posted @ 2012-09-04 17:50 芒果布丁 阅读(209) 评论(0) 推荐(0)
摘要: 原文链接:http://www.cnblogs.com/CSGrandeur/archive/2012/08/27/2659120.html2010那些事2010年是中南ACM有史以来最辉煌的一年,省赛的冠军队,差一道题Final的福州赛区,伴随着07级一代大神崛起与消失,和我们08级这一代默默无闻的成长。大一没人告诉我ACM是什么,大二参加校赛0题收场,还把组队来帮忙翻译的女生急哭了。2010暑期集训,也算是有尹zw大哥的帮忙才算是进了集训队。那个时候也没人告诉我该怎么入门,什么是EOF,什么是__int64。或许当时要是能百度到刘汝佳大神的《算法竞赛入门经典》(白书),历史也会不一样吧.. 阅读全文
posted @ 2012-09-03 23:17 芒果布丁 阅读(236) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 下一页