Atcoder2167 Blackout】的更多相关文章

Atcoder2167 Blackout zjoi讲过的一道神题啊... 首先把每个黑点(a,b)看成一条有向边a->b,然后这个图就变成了一张有自环的有向图. 然后弱联通块就分开了,对于每个连通块搜一遍并且三染色(网上说就叫这个). 三染色:给每个点一个0-2的权值,使得对于每一条边u->v,都有\((w_u+1)\mod 3=w_v\) 如果无法成功染色的话,这个联通块每两个点之间都有边,包括自环. 否则如果没有三个颜色都出现,这个联通块并不会增加边. 否则就可以成功染色,这时所有权值为0…
[agc006f]Blackout(神仙题) 翻译 给定一个\(n*n\)的网格图,有些格子是黑色的.如果\((x,y),(y,z)\)都是黑色的,那么\((y,x)\)也会被染黑,求最终黑格子数量. 题解 网格图我们显然是存不下的,把它转化成图来考虑.于是题目变成了:给定一个\(n\)个点\(m\)条边的图,如果\(x\rightarrow y\),\(y\rightarrow z\)的边都存在,那么连边\(z\rightarrow x\),回答边的数量. 然后开始手动翻译题解. 首先,我们可…
ACM Contest and Blackout 题目链接:https://vjudge.net/problem/UVA-10600 Description: In order to prepare the “The First National ACM School Contest” (in 20??) the major of the city decided to provide all the schools with a reliable source of power. (The m…
2017国家集训队作业[agc006f]Blackout 题意: 有一个\(N*N\)的网格,一开始有\(M\)个格子被涂黑,给出这\(M\)个格子,和染色操作:如果有坐标为\((x,y),(y,z)\)的格子已被染黑,那么就可以染黑坐标为\((y,z)\)的格子.问操作到不能再操作的时候,网格里有多少个黑格子?(\(1\le N,M\le 10^5\),最开始给出的\(M\)个坐标互不相同) 题解: 在场上签到签了两个小时,看到这题一脸懵逼.= =!大概想到是把形如\((x,y),(y,z)\…
又是求次小生成树,就是求出最小生成树,然后枚举不在最小生成树上的每条边,求出包含着条边的最小生成树,然后取一个最小的 #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <string> #include <stack> #include <queue>…
[题意] n个点,m条边,求最小生成树的值和次小生成树的值. InputThe Input starts with the number of test cases, T (1 < T < 15) on a line. Then T test cases follow. Thefirst line of every test case contains two numbers, which are separated by a space, N (3 < N < 100)the n…
题意就是求最小生成树和次小生成树 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<string> #define cl(a,b) memset(a,b,sizeof(a)) #define debug(x) cerr<<#x<<"=="<…
题意: 求最小生成树和次小生成树的总权值. 思路: 第一种做法,适用于规模较小的时候,prim算法进行的时候维护在树中两点之间路径中边的最大值,复杂度O(n^2),枚举边O(m),总复杂度O(n^2): 第二种做法,倍增求lca,预处理复杂度O(nlog(n)),替换的时候log(n),总复杂度为O(mlog(n)). 代码: #include <stdio.h> #include <string.h> #include <algorithm> using namesp…
Description 题目链接 Solution 首先,把输入矩阵看成邻接矩阵,将问题转化到图上. 现在的问题变成:给定一个有向图,如果存在\((u,v)\)和\((v,w)\),则连边\((w,u)\),重复边不连.求最终状态下,整张图有多少条边. 第一个思路是各个弱联通块互不影响,既然初始时它们之间无边,则按照题目的操作方式,在之后也不会有连边.因此,我们对每个弱联通块分开考虑. 从连边数量级较大这一个方面看,猜想每个联通块的连边数量可能是结论相关.手玩一下图. 如果对每个弱联通块进行三色…
题目大意:给一张无向图,找出最小生成树和次小生成树. 题目分析:模板题...方法就是枚举所有的比最小生成树中两端点之间的最长边还要长的边,用它替换,再取一个最小的值便是次小生成树了. 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<cstring> using namespace std; # define REP(i,s,n) for(int i=s;i<…