上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
摘要: 题意:有若干对夫妇参加婚礼。所有人坐在一张长桌子上妻子和丈夫必须坐在对面,然后给你若干个关系a,b 表示a,b不能做在同一边。问你是否能安排座位,若行输出方案的任意一种。思路:标准的2-sat的题,套以下lrj的模版然后再判断一下是否有解。代码如下: 1 //2-SAT 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_... 阅读全文
posted @ 2014-01-22 12:30 张小豪 阅读(225) 评论(0) 推荐(0) 编辑
摘要: Problem ACoder题意:水题代码如下: 1 //2014-01-20-23.26 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MP(a, b) make_pair(a, b)12 #define PB(a) push_back(a)13 14 using namespace std;15 16 typedef long long ll;17 typedef pair pii;18 typedef... 阅读全文
posted @ 2014-01-21 02:41 张小豪 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 题意:在一张无向图中去掉每一个点问你连通分支有几个?输出排序前m大的。排序规则是先按连通分支数降序,再按结点标号升序。思路:求割点的变通,我们知道在dfs树中除去根节点,若当前节点是割点,那么删去它所得到的连通分支数就是子树的数量+1,而对于根节点就等于子树的数量。所以我们在dfs求割点的时候一旦发现一个子树中的所有点都无法回溯到根节点以前的祖先我们就认为找到了删去它的一个连通分支cut[i]++就可以了。最后有序输出就行了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #incl... 阅读全文
posted @ 2014-01-19 21:39 张小豪 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 题意:这道题主要是定义了一个交叫爪子的图:然后他会给你一个每个结点度数都是三的无向图。问你能否能否拆成爪子图。(就是分成若干个子图,原图中的每条边都只能在一张子图中出现一次,点可以重复出现)。思路:这道题我们可以画几个推理一下,会发现一个结论当且仅当图是而分图的时候是可以的,然后剩下来的就是染色判定了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define MP(a, b) make_pair(a, b)... 阅读全文
posted @ 2014-01-19 14:05 张小豪 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 题意:每头牛都想成为牛群中的红人。给N头牛的的牛群和M个有序对(A,B)。(A,B)表示牛A认为B是红人。该关系具有传递性,所以如果牛A认为B是红人,牛B认为牛C是红人,那么牛A也认为牛C是红人。不过,给定的有序对中可能包含(A,B)和(B,C),但不包含(A,C)。求被其他牛认为是红人的总数。思路:方法是是找到拓扑排序最后的那个强连通分量在统计他是不是能访问到所有的结点就OK了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #inc... 阅读全文
posted @ 2014-01-19 13:16 张小豪 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题意:告诉你一张无向图,问你构造边双连通分支,需要加最小的边。思路:发现这两道题可以用一份代码过掉0.0。真是搞笑,题目意思基本相同。主要就是知道如何构造边双连通分支,原来的双连通分支数记为n那么ans = (n+1)/2这个结论是可以证明的。这里我们就把他记住就好了。至于题目的做法就是统计边双连通分支数,直接上模版。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MP(a... 阅读全文
posted @ 2014-01-19 11:35 张小豪 阅读(290) 评论(0) 推荐(0) 编辑
摘要: Problem AKsenia and Pan Scales题意:给你若干字母是你可以分配的, 在给你一个已经放好一些字母的天平。每个字母的重量为一,问你能不能用这些可分配的字母是天平平衡。若有解输出解决方案的任意一种。思路:直接暴力,先统计左右各有多少,在看一下一共有的字母总数,奇数是不可能平衡的,偶数的话再看左右两边绝对值之差,若大于可分配的字母也是不行的。剩下来把总字母数除二一边输出一半就行了。代码如下: 1 //2014-01-17-23.27 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include ... 阅读全文
posted @ 2014-01-18 10:56 张小豪 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题意:在一张图中,让你求割边。并按照顺序数出来,注意图并不是连通的。思路:对多个连通分支,每个执行一次dfs求割边。最后排序输出就好了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define MP(a, b) make_pair(a, b)11 #define PB(a) push_back(a)12 13 using namespace std;14 15 typedef long long ll;16... 阅读全文
posted @ 2014-01-16 19:17 张小豪 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一张无向图,求割点的个数。思路:输入稍微处理一下接着直接套模版。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #define MP(a, b) make_pair(a, b)13 #define PB(a) push_back(a)14 15 using namespace std;16 17 typedef long long ll;18 typedef pai... 阅读全文
posted @ 2014-01-15 15:33 张小豪 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目都比较简单这里只给题号和代码:uva 141, uva 11988, uva 10700, uva 10954, uva 10887, uva 10391, uva 10282, uva 673 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 set ocr;10 int n;11 12 string MS(int lc[][51])13 {14 string ret = "";15 for(int i=0; i> op;49 ... 阅读全文
posted @ 2014-01-14 22:09 张小豪 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 题意:一辆汽车在一张无向图中开告诉你每个城市加油的费用。每次给q个查询(起点,终点,油箱容量)问你最小花费是多少。思路:一道Dijkstra状态的题目。在这种最短路问题中一维的dis数组记录的信息往往不能很好的解决问题,所以我们要给dis数组增加维数来使每个状态唯一。这其实就是结合了动态规划的思想,然后我们在考虑每个状态能怎么转移(这其实就是单个结点从队列中弹出来的处理过程)这样一道题就做出来了。对于这道题,我们增加一维表示当前汽车的剩油量,然后每个状态有两种转移方式1.直接开去下一个节点2.加一格油。最后统计一下目标节点所有油量的花费最小值,就能得出答案了。代码如下: 1 #include 阅读全文
posted @ 2014-01-13 21:29 张小豪 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 积攒已久的题目了,果断前两星期怎么做做不对,隔一段时间一做就对了。题意:马里奥要求从结点1到a+b的最短路。前提是他有一种靴子能在任意距离小于l的结点之间飞(经过的路上必须为村庄,耗时为零),结点标号前a个为村庄,靴子只能用k次。思路:这道题用floyd初始化+Dijkstra+dp就搞定了。刷了一段时间最短路,这样的做法已经做过几遍了。floyd初始化任意两个可飞到的结点的距离。Dijkstra处理最短路只要在dis数组后加一维状态就可。每次转移的时候分两部分,一部分是不用靴子就和正常的Dij一样,在一种是根据初始化的距离判断能否用靴子。代码如下: 1 #include 2 #incl... 阅读全文
posted @ 2014-01-13 19:38 张小豪 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 这次只做出来两道水题,真是太糟糕了。先挖个坑,到时候再来填吧。Problem ASereja and Dima思路:每次都会从两边去找一个最大的。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define MP(a, b) make_pair(a, b)11 #define PB(a) push_back(a)12 13 using namespace std;14 15 typedef long long ... 阅读全文
posted @ 2014-01-13 02:05 张小豪 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 题意:在一张有重边的有向图中有若干城市,有若干个询问每次告诉你最多能经过q个城市,让你求最多经过q个城市从1号城市到n号城市的最短路是什么?思路:很容易想到用Dijkstra稍作变形就能解决这一题,只要在我们计算最短路的dis数组中再增加一维,表示最多经过的城市数,这样每次放进队列中的第二个状态变成两个,最后再遍历一下dis数组求一下最小值就能得出答案了。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #defi... 阅读全文
posted @ 2014-01-11 21:31 张小豪 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 这道题是world finals的热身赛第一题。弱菜花了两个小时在做出来-。-题意:给你一张无向图,然后给若干个查询,问你任意两个定点之间的最短路。最短路的定义是这样的:每个定点有权值,每个边也有权值,最短路等于路径上的所有边权值之和+所有定点的权值最大值。思路:这道题先分析一下测试数据,顶点最多只有80个边最多有1000条所以一定是有重边的,这道题又要用邻接矩阵存所以输入的时候注意一下就好了,然后看查询有6000+个所以还是会有很多重复的,因此我们就可以想到用floyd来做这道题了。那么定点的权值怎么处理呢?我们想到了floyd的dp过程是按定点顺序的,所以我们将顶点按照花费排个序,这样有序 阅读全文
posted @ 2014-01-11 17:08 张小豪 阅读(208) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页