本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! 题目链接:AGC012B Splatter Painting 正解:逆序暴力 解题报告: 逆序染色,每次暴力做,每个点记录一下从这个点出发染色的最大的$d$,如果当前的$d<maxd[x]$,那么没必要再往下走下去. 把没染色的点染上色就好了. 每个点最多…
题意: 有一个含有n个点的无向图,所有的点最初颜色均为0.有q次操作,每次操作将v[i]周围的距离小于等于d[i]的点全部都染成颜色c[i].最后输出每个点的最终的颜色. 数据范围: 1<=n,m,q<=10^5 0<=d[i]<=10 1<=c[i]<=10^5 思路: 看见1<=d[i]<=10,这个条件,第一反应当然是暴力啦.但是如果从一个点总是能够访问所有的节点,那么这就变成O(n^2)了.那么我们应当考虑时间复杂度更加稳定的算法. 然后开始考虑如何…
Time limit : 2sec / Memory limit : 256MB Score : 700 points Problem Statement Squid loves painting vertices in graphs. There is a simple undirected graph consisting of N vertices numbered 1 through N, and M edges. Initially, all the vertices are pain…
题目链接  agc012 Problem B 题意  给定一个$n$个点$m$条边的无向图,现在有$q$个操作.对距离$v$不超过$d$的所有点染色,颜色编号为$c$. 求每个点最后的颜色状态. 倒过来处理. 记忆化搜索,用$f[x][d]$表示已经对以$x$为中心距离不超过$d$的点进行了染色. 这样保证了对以$x$为中心距离不超过$d$的点进行染色这个行为最多出现一次. 每次对$x$点染色的时候判断是否已经染过色,如果染过就不再染色了. 时间复杂度$O(nd)$ #include <bits…
题意: 给一个包含N个顶点,M条边,无自环和重边的简单无向图,初始每个点颜色都为0,每条边的长度为1,连接着ai,bi两个节点.经过若干个操作, 每次将与某个点vi距离不超过di的所有点染成某种颜色ci,求最终每个点的颜色. 1 <= N, M, Q <= 1e5, 1 <= ai, bi, vi <= N, ai != bi. 0 <= di <= 10, 1 <= ci <= 1e5. 分析: 考虑对操作逆向,f[k][d]表示以k点为中心,dist=d…
题解: 实际上一个可行解即选取长和宽的一个,使得最后每一组选第一维的数值都不同 在此基础上,使得另一维的和最大. 然后建立图论模型 对于每一个方块,在a和b之间连边. 对于选择的方案,如果选择a->b,那么就是以a为底,b为高 所以最后的图一定要满足所有点的出度为1(出度为2就有重复了) 基于这个我们发现只有两种情况. 1.图中含有环,实际上所有边的方向都是固定的,答案就是每个点的入度*每个点的值加起来. 2.图中不含环(树的结构),那么实际上可以选取一个点为根,根的答案可以额外计算.所以就选取…
大意: 给定无向图, 求是否能删除一条边后使图无环 直接枚举边判环复杂度过大, 实际上删除一条边可以看做将该边从一个顶点上拿开, 直接枚举顶点即可 复杂度$O(n(n+m))$ #include <iostream> #include <algorithm> #include <string.h> #include <math.h> #include <cstdio> #include <queue> #define REP(i,a,…
题意: 每个人有两个积分CC和TF 第i个人能战胜第j个人的条件满足下面两个条件中的一个即可 1.CCi > CCj 或 TFi > TFj 2.i能战胜k,k能战胜j. 题解: 先按CCi的积分排序,然后连接相邻的两个人a->b,代表a能战胜b 再按TFi的积分排序,做同样的处理. 最后我们按TFi的排序做dfs,只需要dfs一遍就可以得到所有的答案 #include <algorithm> #include <iostream> #include <ve…
题面在这里! (显然首先想到反着做比较简单,每个点取第一次被覆盖到的颜色) 发现d非常小,那么是否可以暴力覆盖呢??? 考虑一个稠密图..暴力肯定就gg了啊... 不过我们可以对每一个点 i 记一个max[i],表示之前到i的时候还能再往外走多少. 之后如果再到这个点并且再往外能走的距离<=max[i]的话就直接返回了,因为这样从这个点就不可能扩展出新的没有染色的点了. 一开始设 max[i]=-1就好啦... 显然每次到i,max至少+1,复杂度O(N * max(d)) #include<…
AGC012 A - AtCoder Group Contest 从最后开始间隔着取就行 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('\n') #define eps 1e-…