摘要: 一开始理解错题意了,以为是走过的砖不能再重复走,最多能走多少个黑砖,结果写的递归陷入死循环。。。后来才明白原来可以重复走,问可以到达的磁砖数。#include #include #include #include #include using namespace std;int w,h,num,ans;int f[22][22];//存储地图的信息,为0代表是黑砖,为1代表红砖,2代表已走过该砖void search(int row,int col){ if(rowh||colw){ return; } if(f[row][col]==1||f[row][col... 阅读全文
posted @ 2013-09-14 21:17 辰曦~文若 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 题意:起点与终点相隔4500米。现Charley 需要从起点骑车到终点。但是,他有个习惯,沿途需要有人陪伴,即以相同的速度, 与另外一个人一起骑。而当他遇到以更快的速度骑车的人时,他会以相应的速度跟上这个更快的人。先给定所有与Charley 同 路的人各自的速度与出发时间,问Charley 以这种方式跟人,骑完4500米需要多少时间。得出的结果若是小数,则向上取整。思路;每次Charley选择的都是当前最快的单车,而且Charley最后一定是和那个最快到达Yanyuan的单车同时到达,因为最早到达的人,一定会赶上查理,而查理就会跟上他一起到达。 无视负时间出发的单车(因为Charley还没到. 阅读全文
posted @ 2013-09-14 14:59 辰曦~文若 阅读(1234) 评论(0) 推荐(0) 编辑
摘要: 记得第一次做这道题的时候,推关系感觉有点复杂,而且写完代码后一直WA,始终找不出错误。 在A了十几道并查集后,再做这道题,发现太小儿科了。发现原来之所以WA,就在于查找根节点时,没有同步更新子节点相对根节点的关系。现在对并查集的感觉就在于,并查集的精髓就在于如何更新子节点与父节点的相对关系。0:与根节点同类;1:被根节点吃;2:吃根节点如何更新:设x的根节点为fx,y的根节点为fy。1.若fx!=fy: 合并fx、fy(将fy的父亲设为fx),那么要更新fy相对fx的关系。 fy相对y的关系为:3-rel[y],y相对x的关系为d-1(d即为数据中的d),x相对fx的关系为rel[x... 阅读全文
posted @ 2013-09-13 15:38 辰曦~文若 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7题意:有N个人玩剪刀石头布,其中有个人是裁判,其他人分为3组。 这3组中每个组分别出剪刀,石头和布。 裁判可以任意出3个中的一个。 现在有M个回合,每个回合从N个人中任意选出两个人来玩,并给出结果。 要求输出最早找出裁判的回合数,以及裁判的编号! 还有可能无法确定,或者不可能出现这种结果。思路:利用并查集可以建立起相对关系,但是问题出在裁判可以任意出招,也就是说通过裁判建立起来的任何关系都是不可靠的。 所以不能通过裁判来建立任 阅读全文
posted @ 2013-09-13 13:41 辰曦~文若 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 离散化+带权并查集题意:长度为n的0和1组成的字符串,然后问第L和R位置之间有奇数个1还是偶数个1. 根据这些回答, 判断第几个是错误(和之前有矛盾)的。思路:此题同HDU 3038 差不多,询问L~R之间的1的奇偶性,相当于HDU 3038 的L~R之间的和。所以合并的时候,合并L-1和R(L-1为父亲)。 则R相对L-1的权值(不包括L-1)即为L~R之间1的个数(0代表有偶数个1,1代表有奇数个1). 之所以为什么合并的是L-1和R,举个例子: 1 2 even 3 4 odd 首先合并0、2,2相对0的权值为0,接着合并2、4,4相对2的权值为1。 那么之后在查找4的根节点时,会更新. 阅读全文
posted @ 2013-09-12 13:39 辰曦~文若 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 参考链接:http://www.cppblog.com/yuan1028/archive/2011/02/13/139990.html http://blog.csdn.net/roney_win/article/details/9473225题意:N个星球,编号从0到N-1。每个星球有一个战斗力power,且这N个星球之间建有一些通道,可以相互联系,在星球大战中,一些星球要向和自己联通的星球中power最强且大于自己的星球求救,且在星球大战中会有一些通道被损坏。 两种操作:破坏a和b之间的通道;a星球该向谁求救。逆向并查集: 与并查集不同,给出一个图中原有的一些边,然后给出操作,操作不... 阅读全文
posted @ 2013-09-05 15:55 辰曦~文若 阅读(427) 评论(2) 推荐(0) 编辑
摘要: 参考链接:http://www.cnblogs.com/jiaohuang/archive/2010/11/13/1876418.html题意:地图上某些点有金子,有些点有房子,还有一些带权路径,问把所有金子运到房子里所要经过最小的最大相邻路是多少。 也就是如果光用比“最小的最大相邻路”那条路更小的路是无法运完所有金子的,那么可以先对路径排序,然后一条一条取, 看看是否满足条件:即是否所有并查集的根节点的权值f[i]为非负。思路:首先想到的是,要能运完所有的金子,那么必须任意一个连通器中的储藏室的总容量V大于等于所含有的金子的总量C,也就是V-C>=0。那么就想到用一个数组存储该镇的状态 阅读全文
posted @ 2013-09-04 20:08 辰曦~文若 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一共有p1+p2个人,分成两组,一组p1,一组p2。给出N个条件,格式如下:x y yes表示x和y分到同一组,即同是好人或者同是坏人。x y no表示x和y分到不同组,一个为好人,一个为坏人这个可以自己分析一下, 很简单。问分组情况是否唯一,若唯一则输出p1的成员,否则输出no。保证不存在矛盾条件,但是有可能出现x=y的情况。思路:参考链接:http://www.cnblogs.com/kuangbin/archive/2013/04/06/3002498.html用rel[i]表示i结点与根结点的关系,0为相同集合,1为不同集合。(可以举类验证一下,假如1、2、3,前者分别是后者 阅读全文
posted @ 2013-09-03 15:12 辰曦~文若 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 看了题目后,没自己做,直接看别人题解了,这里转一下。看了之后,突然想起scanf还可以按照自己写的格式输入数据啊,差点连这个都忘记了啊。注意输入中时间可能有重复的。http://www.cnblogs.com/symons1992/archive/2013/03/22/2976146.html不过代码中的那条判断事情开始时间、结束时间的好像可以不需要,题目中有范围说明。 阅读全文
posted @ 2013-09-03 09:11 辰曦~文若 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 太坑人了啊,读入数据a,b,s的时候,我刚开始s用的%lld,给我WA。 实在找不到错误啊,后来不知怎么地突然有个想法,改成%I64d,竟然AC了思路:我建立一个sum数组,设i的父亲为fa,sum[i]表示(fa,i]中的数的和(不包括fa,包括i), 合并的时候,不是合并a,b,而是合并a-1,b。这样做的目是因为s是[a,b]的和,如果直接合并a,b,那么按照我数组的定义应该是(a,b]的和,这样不符合题意。 接下来,每次读入a,b,只要根据他们父节点的不同情况分类讨论即可。#include #include #include #include using namespace s... 阅读全文
posted @ 2013-09-02 20:25 辰曦~文若 阅读(163) 评论(0) 推荐(0) 编辑