上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 33 下一页
摘要: 题目大意:在一张无向图中,最大的节点集使得集合内任意两个节点都能到达对方。题目分析:找出所有的强连通分量,将每一个分量视作大节点,则原图变成了一张DAG。将每个分量中的节点个数作为节点权值,题目便转化为了在DAG中找一条有最大权值和的路径,可以DP解决。代码如下:# include# include... 阅读全文
posted @ 2015-10-21 21:29 20143605 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个命题,已知其中的m个推导,要证明n个命题全部等价(等价具有传递性),最少还需要做出几次推导。题目分析:由已知的推导可以建一张无向图,则问题变成了最少需要增加几条边能使图变成强连通图。找出所有的强连通分量,将每一个连通分量视作一个大节点,则整张图变成了一张DAG。设出度为0的大节点个数... 阅读全文
posted @ 2015-10-21 19:15 20143605 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 题目分析:在一张无向图中,将一些点涂上黑色,使得删掉图中任何一个点时,每个连通分量至少有一个黑点。问最少能涂几个黑点,并且在涂最少的情况下有几种方案。题目分析:显然,一定不能涂割点。对于每一个连通分量,如果有1个割点,则必须涂上分量内除割点之外的任意一个点,如果有多个(2个及以上)割点,则这个分量不... 阅读全文
posted @ 2015-10-21 12:06 20143605 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个骑士要在圆桌上开会,但是相互憎恶的两个骑士不能相邻,现在已知骑士们之间的憎恶关系,问有几个骑士一定不能参加会议。参会骑士至少有3个且有奇数个。题目分析:在可以相邻的骑士之间连一条无向边,构成一张图G。则问题变成了有几个节点不在奇圈(有奇数个节点的圈)内,并且一个点在圈内最多出现一次。... 阅读全文
posted @ 2015-10-20 22:28 20143605 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一个未知的整数序列,给出其任意一个区间和的正负,还原这个序列。任意一个满足条件的序列即可。题目分析:将连续区间和转化为前缀和之差,sumx-1与sumy的大小关系已知,以此建立一条有向边,做拓扑排序。根据sum0=0,可以构造出所有的前缀和,再取两前缀和之差便得答案。代码如下:# incl... 阅读全文
posted @ 2015-10-19 22:28 20143605 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 题目大意:有n个珠子,珠子两边的颜色已知,问能否连成一条项链。(两个珠子可以项链当且仅当一个珠子的一边颜色与另一个珠子的另一边颜色相同)。题目分析:欧拉回路。将颜色视作节点,珠子当做边,问题变成了找一条欧拉回路。欧拉回路存在的条件:无向图:1.图连通;2.无奇点; 有向图:1.忽略边的方向后,图连... 阅读全文
posted @ 2015-10-19 20:12 20143605 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一张图,问从起点到终点的最短时间是多少。方向转动也消耗时间。题目分析:图的广度优先遍历。。。代码如下:# include# include# include# include# includeusing namespace std;struct Node{ int x,y,f,l,t... 阅读全文
posted @ 2015-10-19 10:57 20143605 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题目大意:一张有向图,问从起点到终点的最快时间。不过边有点特殊,从u到v的边没开放a秒就关闭b秒。题目分析:dijkstra算法即可。在从u走到v的时候要注意一下时间。代码如下:# include# include# include# include# includeusing namespace ... 阅读全文
posted @ 2015-10-18 16:35 20143605 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目大意:在一个w*h的网格中,有n个点,找出一个最大的正方形,使得正方形内部没有点。题目分析:寻找正方形实质上等同于寻找矩形(只需令长宽同取较短的边长)。那么枚举出所有可能的长宽组合取最优答案即可,如何枚举长宽组合呢?通过两重循环枚举纵坐标来确定矩形的一条边长,枚举点的横坐标来完成对另一条边长的枚... 阅读全文
posted @ 2015-10-18 14:50 20143605 阅读(740) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给一个1~n的序列,每次操作可以把长度为偶数的序列交换前一半和后一半的位置。求出将这个序列变成升序的步骤。题目分析:构造求解。代码如下:# include# include# include# include# includeusing namespace std;int a[10005]... 阅读全文
posted @ 2015-10-18 13:13 20143605 阅读(192) 评论(0) 推荐(0) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 33 下一页