![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 76
&*^*&
这个作者很懒,什么都没留下…
展开
-
acm-(欧拉路径、构造)Educational Codeforces Round 105 (Rated for Div. 2) F. Delete The Edges
传送门经过一番思索可发现如果要存在一种合法方案,图必须可以被划分成两个部分:G1G_1G1和G2G_2G2。其中G1G_1G1要求具有一条欧拉路径或欧拉回路,并且在欧拉路径(回路)的终点ttt处有一个以ttt为中心的菊花图G2G_2G2,G1G_1G1和G2G_2G2共同构成GGG。关键是如何找到G1G_1G1和G2G_2G2。考虑枚举ttt,对于每个ttt我们先考虑那些非临接点中有几个点的度数是奇数:若有两个及以上,那么显然ttt是不能作为G2G_2G2的菊花图中心点;若有一个.原创 2021-03-15 08:22:40 · 138 阅读 · 0 评论 -
acm-(好题、网络流思想、spfa、负环判定、分数规划)LuoGu P3288 [SCOI2014]方伯伯运椰子
传送门本题是一道分数规划题目。建立新图,对于u,v,a,b,c,du,v,a,b,c,du,v,a,b,c,d,考虑从uuu到vvv连一条权值为b+db+db+d的边,代表扩大流量的额外花费,从vvv到uuu连一条权值为a−da-da−d的边,代表缩小流量的额外花费。注意到新图中的一个环恰好代表一组满足流量平衡的扩大/缩小扩大/缩小扩大/缩小操作。为什么流量平衡呢,我们考虑原图中环上的每个节点的情况,情况一如下:红色代表我们要操作的环的一部分,容易发现与这个节点关联的环上的这两条边都是扩流操作,满.原创 2021-02-02 20:49:15 · 125 阅读 · 0 评论 -
acm-无向图三元环、四元环计数
三元环计数考虑对无向图的边进行定向,度数小的点连向度数大的点,如果度数相同则编号小的点连向编号大的点。然后再这张新图(有向图)中我们枚举所有点uuu,对于每个点uuu我们枚举它的出边对应的端点vvv,先给这些点打上标记,然后再枚举uuu的出边对应的端点vvv,枚举vvv的出边对应的端点www,如果www是标记点的话就找到一个三元环,每个三元环都一定只会被恰好枚举一次,因此找到一个三元环就++ans++ans++ans即可,注意枚举下一个uuu之前需要清空标记数组。考虑正确性,经过重定向后新图一定是一张原创 2021-02-02 15:20:25 · 1438 阅读 · 0 评论 -
acm-(欧拉回路、思维、好题)2020 ECNU Campus Online Invitational Contest E. Even Degree
cf传送门vj传送门容易发现跟欧拉回路有关联,考虑先求出每个连通块的欧拉回路,并记录在队列中,然后考虑将队首的边依次放入答案序列中,并与此同时记录每个点的度数变化,如果当前边的两个端点的度数都是奇数,那么从队尾取边,直到队列中只有一条边的时候,就停止,然后考虑下一个连通块的删边顺序。欧拉回路如何求解呢?考虑从任意一个点开始dfs,遍历过的边都删除掉(用前向星),删除的方式就是改变h[u]h[u]h[u]的值即可,注意同一个点在dfs的过程中可能会多次访问,因此如果不删边会导致复杂度爆炸。#incl.原创 2021-01-22 23:05:11 · 188 阅读 · 0 评论 -
acm-(图论、环、暴力、集合哈希)Codeforces Round #664 (Div. 1) B. Boboniu Walks on Graph
传送门可以发现当每个点都只有一个入度的时候恰好满足条件,这时候图由若干个环组成,也可以认为是从每个点出发到达的点构成的集合恰好是1∼n1\sim n1∼n的时候就满足了条件。注意到kkk很小,因此可以暴力k!k!k!枚举所有情况,对于每种情况考虑当前集合的哈希值是否与1∼n1\sim n1∼n构成的集合的哈希值相同,相同的话答案加加。那么问题在于如何快速获得当前的集合哈希值,由于哈希可以进行加减操作,我们考虑预处理出度数为iii的点在cic_ici由preprepre变成xxx的时候哈希值对应的该.原创 2020-12-18 20:48:49 · 121 阅读 · 1 评论 -
acm-(好题、拓扑序、并查集)Educational Codeforces Round 100 (Rated for Div. 2) E. Plan of Lectures
传送门首先这kkk对两元组可以形成若干条链或者环,当然如果形成了环就不合法了,特别地,我们把所有不在这kkk对二元组中的点也看成是长度为1的链。要输出一个合法的解就得保证链条按照拓扑序被一条条输出。首先利用并查集将同一条链的所有点放入并查集。然后写一个checkcheckcheck函数来检查链条的合法性,合法性即不能拥有环以及链条上不能出现违背拓扑序的情况(具体实现的时候,checkcheckcheck函数只检查链条的每个连通块中是否存在违背拓扑序的情况,块与块之间违背拓扑序的情况则会在下一部分自.原创 2020-12-18 11:56:02 · 317 阅读 · 0 评论 -
acm-(dp、最小树形图)Sichuan State Programming Contest 2011 I.Smart Typist
传送门首先容易发现把字符串xxx通过替换方式变成字符串yyy会有一个代价w[x][y]w[x][y]w[x][y],这个可以利用dp来计算,如果新建字符串来产生字符串xxx,则会有个代价w[x]w[x]w[x],由于顺序是任意安排的,并且要求代价总和最小,不妨考虑对任意i,ji,ji,j字符串建立i→ji\rightarrow ji→j和j→ij\rightarrow ij→i边,权值分别为w[i][j],w[j][i]w[i][j],w[j][i]w[i][j],w[j][i],然后考虑新建一个源点..原创 2020-12-14 17:56:52 · 103 阅读 · 0 评论 -
acm-(最短路、暴力)Codeforces Round #677 (Div. 3) G. Reducing Delivery Cost
传送门考虑用DijkstraDijkstraDijkstra预处理出d[i][j]d[i][j]d[i][j]数组,代表从iii到jjj的最短路,复杂度O(n(m+n)logm)O(n(m+n)logm)O(n(m+n)logm),然后枚举要置0的边,暴力更新答案即可,具体更新的话见代码,这一部分复杂度为O(mk)O(mk)O(mk)。#include <bits/stdc++.h>using namespace std;const int maxn = 1005;const in.原创 2020-12-14 09:22:31 · 86 阅读 · 0 评论 -
acm-(好题、分层图bfs)2020 China Collegiate Programming Contest - Mianyang Site E. Escape from the Island
传送门本题让求解最坏情况下的最短路,首先这个最坏情况非常难理解,我们假设dis[i][j]dis[i][j]dis[i][j]表示位于点iii还剩jjj步的时候在最坏情况下到达终点的最短路。如果没有这个最坏情况,并且没有step2step2step2这个转移,那么我们就相当于再无向图的分层图上跑一次bfsbfsbfs即可。加入step2step2step2这个转移后,并且要求最坏情况,那么我们其实只能让step2step2step2转移达到最坏。那么当j=kj=kj=k的时候,我们发现dis[i].原创 2020-12-11 11:24:00 · 202 阅读 · 0 评论 -
acm-(最短路、有向图、思维)Codeforces Round #669 (Div. 2) E. Egor in the Republic of Dagestan
传送门本题让给出一个状态分配方案使得从111到nnn的最短路最大。考虑设dis[i][j]dis[i][j]dis[i][j]为从第iii个城市处于状态jjj(j=0,1j=0,1j=0,1)出发到达nnn城市的最短路的最大值,那么有方程dis[i][j]=minw[i][k]=j{max{dis[k][0],dis[k][1]}+1}dis[i][j]=min_{w[i][k]=j}\{max\{dis[k][0],dis[k][1]\}+1\}dis[i][j]=minw[i][k]=j{max.原创 2020-12-01 23:45:08 · 87 阅读 · 0 评论 -
acm-(lca,期望、树)2020 China Collegiate Programming Contest, Weihai Site C. Rencontre
传送门首先,三个点a,b,ca,b,ca,b,c到它们的中心点的距离之和其实就是d(a,b)+d(a,c)+d(b,c)2\frac{d(a,b)+d(a,c)+d(b,c)}{2}2d(a,b)+d(a,c)+d(b,c),d(x,y)d(x,y)d(x,y)表示xxx到yyy的最短路,这个结论很关键,证明很显然就不多说。于是我们分别求解每一项的期望即可,那么如何求解E(d(a,b))E(d(a,b))E(d(a,b))呢,考虑先求出所有点对的距离和,再除以点对总数即可,点对总数就是两个集合大小之.原创 2020-11-23 15:08:35 · 101 阅读 · 0 评论 -
acm-(bfs、思维)2020 China Collegiate Programming Contest, Weihai Site B.Labyrinth
传送门本题要求处理qqq次询问,每次求解任意两点之间距离。注意到障碍物其实非常少,只有42个,当起点和终点形成的矩形中没有障碍物的时候,最短路距离一定是∣xs−xt∣+∣ys−yt∣|x_s-x_t|+|y_s-y_t|∣xs−xt∣+∣ys−yt∣。当矩形中存在障碍物的时候,一定有一条最短路能够经过障碍物周围然后再到达终点,因此不妨预处理出所有障碍物周围四个位置到其它所有点的最短路,那么我们枚举这些位置作为起点到终点的中间位置,那么最短路就是dist(s,i)+dist(i,t)dist(s.原创 2020-11-23 15:01:14 · 153 阅读 · 0 评论 -
acm- (完全子图、团、暴力)Codeforces Round #684 (Div. 2) D. Graph Subset Problem
传送门首先,如果存在度数小于kkk的点,如果这个点的度数为k−1k-1k−1,那么它有机会成为一个大小为kkk的完全子图的一个顶点,于是我们不妨暴力遍历跟这个点相连的所有点,如果这些点的对应的边集的另一个顶点都能找到彼此,那么就找到了完全子图了。可以用binary_searchbinary\_searchbinary_search函数快速查找某个元素是否存在于某个有序数组中。如果发现不满足条件,那么这个点肯定不会成为大小为kkk的完全子图的某一个顶点,因此可以将这个点以及它连接的边从整个图中删除。度数.原创 2020-11-19 16:44:43 · 188 阅读 · 0 评论 -
acm-(最小生成树)Grakn Forces 2020 E. Avoid Rainbow Cycles
传送门本题难在建图上,也就是思维转化这一步挺难想。题意说所有的环必须满足同色,然后我们先手算几个样例就很容易发现如果一个集合中存在至少三个元素,那么必定会形成同色环,可以认为同一个集合中所有的元素形成了一个连通分量,还是一个完全图。这有什么用呢,每当出现完全图的时候我们就需要注意完全图其实不能很好的服务于我们解题的思路,它只是一个表象,事实上这里的完全图可以等价于一颗树,我们将该集合中所有的元素直接与一个该集合的代表点相连即可,假设集合i的代表点是n+i\mathbf{n+i}n+i,那么我们把集合中所.原创 2020-10-02 23:57:35 · 85 阅读 · 0 评论