图论
lcc_cat
呵呵
展开
-
planar
题目描述给出一个无向图(保证存在哈密顿回路),问能否把它画在一个平面上且任意两条无重合顶点的边不相交(称为平面图)。 最大数据:T=100 N=500 M=10000样例2 691 41 51 62 42 52 63 43 53 61 4 2 5 3 65 51 22 33 44 55 11 2 3 4 5输出NOYES解题思路由于最近学2sat学得疯狂,原创 2017-09-16 16:03:10 · 1440 阅读 · 0 评论 -
Codeforces 804F Fake bullions
题意有N个帮派,每个帮派有Si个人,其中一些人有真金条给出一张竞赛图,若图上存在一条边u->v,那么如果u中一人i,v中一人j,满足i mod Su=j mod Svi\ mod \ S_u=j\ mod \ S_vi mod Su=j mod Sv且i有金条(无论真假)且j无金条,i就会给j一个假金条...原创 2018-12-27 13:44:19 · 409 阅读 · 0 评论 -
AGC011 C Squared Graph
题意定义两个图的乘法是:点数为它们的乘积,新图中(x,y)到(z,w)有边,当且仅当第一个图(x,z)有边,第二个图(y,w)有边给出一个无向图G,求它的平方的连通分量个数题解我们考虑相对一般点的情形:图A乘上图B首先考虑那些孤点(即度数为0),设AB孤点个数为I由于孤点不和任何点有连接,所以在新图中,它所对应的那一行(列)就肯定是独立的也就是说,跟孤点有关的就是IAIB+IA(NB...原创 2018-09-26 18:28:14 · 147 阅读 · 0 评论 -
AGC005 C Tree Restoring
题意给出N个数字,表示树上离i号节点最远点离他的距离,问是否存在这样的树题解首先,这些数中最大的数肯定是直径我们设这个长度为K那么,这些数中最小的数(设为M)必须是⌈K2⌉\lceil\frac{K}{2}\rceil⌈2K⌉而且呢,若K为偶数则M出现1次,为奇数则出现2次。说白了就是直径中点取得然后从M+1到K,每个都必须出现至少2次,因为直径是对称的考虑完了这么多之后,可...原创 2018-09-20 15:51:23 · 164 阅读 · 0 评论 -
AGC005 E Sugigma: The Showdown
股票买卖描述最近越来越多的人都投身股市,阿福也有点心动了。谨记着“股市有风险,入市需谨慎”,阿福决定先来研究一下简化版的股票买卖问题。假设阿福已经准确预测出了某只股票在未来 N 天的价格,他希望买卖两次,使得获得的利润最高。为了计算简单起见,利润的计算方式为卖出的价格减去买入的价格。同一天可以进行多次买卖。但是在第一次买入之后,必须要先卖出,然后才可以第二次买入。现在,阿福想知原创 2018-09-20 08:20:38 · 225 阅读 · 0 评论 -
AGC010 C cleaning
题意这棵树有n个节点,节点i有ai个石头每次操作选择两个叶子节点(u,v)(u不能等于v),移除u到v路径上的每一个节点的一块石头(包括u,v).注意:如果这条路径上有一个节点没有石头,则不能进行操作.能否通过上述操作将树上的石头移完此处的叶子节点为度数为1的节点.题解对于非叶子节点,可以发现如果我们计算直接相连的边上经过的次数,这些次数加起来应该恰好是2*ai;而叶子结点,则是ai...原创 2018-09-25 17:04:24 · 126 阅读 · 0 评论 -
AGC001 C Shorten Diameter
题意给出一棵树,你可以删掉一些点,保证剩下的仍是棵树。然后询问使这棵树直径小于等于K最少要删掉多少点题解由于N<=2000,所以我们大体上可以往O(N2)O(N^2)O(N2)的角度上想考虑K的奇偶性若K为偶数,我们可以枚举每一个点作为新树的重心,那么深度大于k/2的就是要被删的若K为奇数,我们可以枚举每一条边作为直径的中间那条边,然后分别以两个端点为根找深度,深度大于k/2的就...原创 2018-09-18 07:34:37 · 332 阅读 · 0 评论 -
CodeForces - 668E Little Artem and 2-SAT
题意给出两个2-sat,如果存在使其中一组成立,另一组不成立的变量取值,输出之,否则输出SIMILAR题解按照2-sat的正常操作建边 我们可以跑一发floyd 注意一定要连一个自己到自己的边 (前来更新,根据某dalao指出https://blog.csdn.net/qq_34454069,其实可以不用,后面判断的时候看一下i、j相不相等就可以了) 然而,有的时候,某个变...原创 2018-04-07 11:50:10 · 294 阅读 · 0 评论 -
二分图匹配学习小结
二分图当这个图可以被分成两个集合(一般称为X部和Y部),且所有边的两个端点分别在X部和Y部时,此为二分图引题:SGU172题意:给出一个图,判断其是否是二分图,如果是,输出其中一部 其实就是搜索染色#include<cstdio>#include<cstring>#include<vector>#include<algori...原创 2018-02-17 10:00:19 · 186 阅读 · 0 评论 -
最短路学习小结
To be continued…最短路算法dijkstra算法适用范围:无负权边 时间复杂度:O(N2)O(N2)O(N^2)(无优化时) 然而…优先队列优化的dijkstra的均摊时间复杂度是多少? 斐波那契堆优化的dijkstra的复杂度(大约)是O(MlogN)O(MlogN)O(M logN),尽管优先队列优化没有堆优化那么强,但姑且当做这么多吧 无优化的dij...原创 2018-02-14 08:55:42 · 226 阅读 · 0 评论 -
2-sat学习小结
To be continued…你问我2-sat的定义??? 一口血喷出来 总之我们就开始做吧 其实我们只需要把能推出的关系连边 比如a存在时b一定存在,则连边a->b a存在时b一定不存在,则连边a->┐b 然后强连通分量缩点,拓扑排序 这个时候呢我们就要安利一波Korasaju算法了 http://blog.csdn.net/qq_35541672/ar...原创 2018-02-13 12:08:41 · 206 阅读 · 0 评论 -
强连通分量、割边、割点、双连通分量学习小结
To be continued…强连通分量在有向图G中,如果任意两个不同的顶点相互可达,则称该有向图是强连通的。Korasaju算法求有向图强连通分量现在才知道叫这个名字 1.深度优先遍历G,算出每个结点u的结束时间f[u],起 点如何选择无所谓。 2.将G中所有边反向,选择深度优先遍历的起点时,按照结点的结束时间从大到小进行。(用个栈就可以了)。同时进行标记 3. 第...原创 2018-02-12 21:21:09 · 288 阅读 · 0 评论 -
最小生成树学习小结
To be continued…一个图的生成树,即找出这个无向连通图的某个边集为一棵树 最小生成树,即使边权和最小(最大生成树同理)Prim算法设已加入最小生成树的点集为T 算法思路:每次寻找T所连向的不在T中的点的边中最小的边,将此边和点加入T 实现int Prim(){ memset(cost,-1,sizeof cost); cost[1]=0;//...原创 2018-02-12 20:11:47 · 831 阅读 · 0 评论 -
LCA(倍增)学习小结
To be continued…LCA问题,即Lowest Common Ancestor 最近公共祖先 LCA问题有很多解法,比如 ·暴力解法 分块解法 ·倍增算法 ·Tarjan算法 ·LCT算法 在这里呢,我们只讨论倍增 倍增算法其实是一种类似于dp的实现 pa[i][j]pa[i][j]pa[i][j]表示I号节点的2j2j2^j个父亲 pa[i][j]=fa[i]...原创 2018-02-14 18:18:41 · 155 阅读 · 0 评论 -
CEOI2012 Network
题目大意:给出一个有向图,有N个结点,M条边。 如果从p到q有一条有向边组成的路径,则称结点p可以到达结点q。 输入数据保证初始状态时,每对可达结点之间存在唯一路径。 图中有一个中心点R,它可以到达所有结点。 任务: (1)求出每个顶点能够到达的顶点数量(包括自身) (2)最少加多少条边,使得所有顶点之间均可以相互到达,且是唯一路径。 样例11 12 3 3 2 2 1 2 4原创 2017-09-15 21:07:13 · 341 阅读 · 0 评论