题目链接 题意 有\(n\)个信息中心,每个信息中心都有自己的维护时间\((0\leq t\lt h)\),在这个时刻里面的信息不能被获得. 每个用户的数据都有两份备份,放在两个相异的信息中心(维护时间也相异). 现要挑选出信息中心的一个尽量小的子集,使得将这个子集的维护时间向后推移一个小时后,不会导致问题(存在一个用户,其数据所在的两个信息中心维护时间相同). 思路 强连通分量 考虑每个用户的信息存放的两个信息中心,\(u,v\): 如果调整其中任何一个的时间不会导致与另外一个产生冲突,就说明…
题意 : 给出 n 个点,每个点有一个维护时间 a[i].m 个条件,每个条件有2个点(x,y)且 a[x] != a[y].选择最少的 k (最少一个)个点,使其值加1后,m个条件仍成立. 分析 :  发现改变某些数加一后可能产生联动效应 换句话说就是改变某些数则必须改变另一些数来维持 m 个条件的成立 这个可以用图来表示,对于给出来的每一个 (x, y) 如果改变 x 后等于 y 则连 x => y 边 表示要改变 x 则必须改变 y,然后对于 y 进行同样的判断是否连边 最后建完图后,若有…
首先转换图论模型,把某个客户一个终端的维修时间(+1)%h之后和另一个终端维修时间一样,这样的两个终端连一条有向边,表示推后一个终端就必须推后另一个 然后tarjan缩点,一个scc里的终端是要一起推迟的,scc内点数为新图点权 根据贪心的思想,在缩完点的DAG里,一定是出度为0的点能获得更小的值,因为出度不为零的点还要加上出边所能到的点的点权 直接在出度为0的点里取min,然后记一下更新答案的新点,最后把属于这个新点的点的编号输出即可 #include<iostream> #include&…
难度系数:1900 graphs 题意:有 n 个银行,m 个客户,每个客户都把自己的资料放在 2 个银行,一天总共有 h 小时,每个银行每天都要维护一小时,这一小时内银行无法工作,但是这一小时客户仍然可以在另一个银行提取资料,于是客户就可以一天 h 小时随时提取资料.现在要选择 k 个银行进行实验,每个进行实验的银行,它每天的维护时间都推迟一小时,如果原来的维护时间是 h−1 时,进行实验后银行的维护时间就为 0 时.问最少选择几个银行(至少一个)进行实验,才能仍然保证每一个客户随时都能提取到…
E. Data Center Maintenance time limit per test 1 second memory limit per test 512 megabytes input standard input output standard output BigData Inc. is a corporation that has n data centers indexed from 1 to n that are located all over the world. The…
题 OvO http://codeforces.com/contest/949/problem/C codeforces 949C 950E 解 建图,记原图为 G1,缩点,记缩完点后的新图为G2 缩完点后的图 G2 必定无环,求这个无环图 G2 中每个点的入度, 找出 的那些点,记这些点的集合为 S,然后把 S 中这些点映射到 G1 中,则这些点各自对应一个点集.S 的各点中,对应的最小集合即为所求集合 #include <iostream> #include <cstring>…
tarjan 题意: 有n个数据维护中心,每个在h小时中需要1个小时维护,有m个雇主,他们的中心分别为c1,c2,要求这两个数据中心不能同时维护. 现在要挑出一个数据中心的子集,把他们的维护时间都推后一个小时.问最小推几个?   建图,如果对于一个顾客,两个数据维护中心维护时间正好差一个小时,那么前者向后者连一条边.在一个强连通分量里面的所有点必须选..如果有连向其他的强连通分量,那么那个也必须选,这种情况肯定不是最优,所以舍弃所有有出度的强连通分量.   tarjan缩点,然后判一判. #in…
题意 有 n 个信息中心,第 i 个信息中心要在第 ti 个小时维护,维护期间信息不能被获得. 每个用户的数据都有两份备份,第 i 个用户的数据放在信息中心 c(i,1) 和 c(i,2). 现在要挑选一个尽量小的信息中心集合,使得将这个集合的维护时间推迟一个小时后,仍然能保证每个用户的数据在任意时刻都能获得. n≤100000 题解 对于每对 c(i,1),c(i,2),若调整 c(i,1) 后与 c(i,2) 的维护时间冲突,则连边 (c(i,1), c(i,2) ) 对于 c(i,2),c…
题目大意:$n$个点,每个点有一个值$w_i$.$m$个条件,每个条件给出$x,y$,要求$w_x\not =w_y$.选择最少的点,使其值加$1$后,所有条件成立(数据保证有解). 题解:对于每个条件,若$(w_x+1)\bmod h=w_y$,连上$x->y$:若$(w_y+1)\bmod h=w_x$,连上$y->x$.一条边的含义是,若起点加一,终点也要加一.缩点,强连通分量内的点要一起加.发现答案就是找最小的没有出边的点 卡点:无 C++ Code: #include <cst…
http://codeforces.com/contest/950/problem/E 贴一份板子 #include<cstdio> #include<vector> #include<algorithm> using namespace std; struct E { int to,nxt; }e[]; ],ne,a[],sccc,sccnum[],top,dfn[],low[],dfsc; ],n,m,h,ou[],anss=0x3f3f3f3f,ans1; vec…
题目链接 题目大意: 给一个图, n个点m条边, 某些边上面有权值. 一条边只能走一次, 给两个点s, t. 问你, 从s到t能否经过有权值的边. 首先肯定要缩点, 然后看同一个连通分量里面的边, 是否有有权值的边, 如果有, 那么这个联通块赋值为1. 看两个点s, t. 如果两个点在同一个联通分量里面, 看这个连通分量的值是否为1. 否则的话, 看从s到t路径上的边有没有边的权值为1, 或者是经过的连通分量有没有值为1的. 如果有就yes, 否则no. #include <iostream>…
题意: 有n个数据中心,m个客户,每天有h个小时,其中 n,m,h<=100000.每个数据中心i每天都会有一个数据维护的时间0<=u[i]<=h-1,在数据中心维护期间时不可以使用的.每个客户都选择两个不同的数据中心,以保证每天的数据使用不间断.保证初始时符合要求.找出最少的数据中心数,使每个数据中心的维护时间推迟一个小时(若u[i]<h-1推迟一小时变为u[i]+1,否则变为0),每个客户都能正常使用. 分析: 我们发现,只要每个客户选择的两个数据中心的维护时间不同就符合题目的…
题目:http://codeforces.com/contest/949/problem/C 可以想到可能是每组c有连边的可能. 但别直接给c1.c2连边,那样之后会变得很不好做. 可以把一些限制放在连边这个环节上. 也就是只有(c1+1)%h==c2才从c1向c2连边表示选了c1必须选c2!c2向c1也是一样. 然后缩个点找无出度的最小的点就行了. 边注意开成两倍——一组c也可能连两条边,%2之类的. #include<iostream> #include<cstdio> #in…
若推迟 \(u\) 必推迟 \(v\),则连边 <\(u,v\)>. 求强联通分量后缩点,答案显然是出度为 \(0\) 且 size 最小的 scc. #include <iostream> #include <cstdio> using namespace std; int n, m, h, a[100005], dfn[100005], uu, vv, loo[100005], bel[100005], scc, hav[100005], sta[100005],…
题目:http://codeforces.com/contest/949/problem/C 把一个点指向修改它会影响到的点就可以做了: 有取模,所以多出一些要注意的地方,首先是可能出现环,所以需要 tarjan 求边双: 其次,边集数组的大小应该开成两倍,因为取模可能导致一对 ci 互相连边: 然后找出不影响别的点的.最小的边双,输出即可: 而我竟然把 tarjan 都少写了一个 top-- !真是对自己无语了... 代码如下: #include<iostream> #include<…
题意: 给定一个无向图连通图,把这个的无向边变成有向边,并添加最少的有向边使这个图每个结点的出度为偶数. Solution: 题目很长,并且很多条件说的不太直接,确实不太好懂. 首先先看得到的无向图,是不是可以不加边就满足题目要求. 可以想到对于一个无向图,当所有点的度数为偶数时,图中存在欧拉回路.那么对于一个存在欧拉路的无向图似乎可以以某种方式构造出满足条件的有向边.假设图中有欧拉回路1 2 3 4 1, 可以构造边2->1,2->3,4->3,4->1满足条件. 而对于不存在欧…
题意和思路看这篇博客就行了:https://www.cnblogs.com/cjyyb/p/10507937.html 有个问题需要注意:对于每个scc,只需要考虑进入这个scc的时间即可,其实和从哪个点进没有关系,因为scc内每个点都可以互相到达,所以只需记录时间就囊括了所有的情况,比如时间3从1号点进和时间4从2号点进是等价的,这也是为什么可以随便选择一颗生成树的原因.对于scc的出边,边的长度是val[u] + val[v] - 1,因为假设从scc x的根 到点scc y的点v,时间是v…
D. Data Center Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/560/problem/B Description The startup "Booble" has shown explosive growth and now it needs a new data center with the capacity of m petabytes. Booble can b…
题目:http://codeforces.com/problemset/problem/427/C 题意:给你n座城市,m条有向道路,然后有一个机制,你在某一个城市设置检查点,那么被设置的检查点受保护还有通过这个点所连着的边走出去后面还能走回来的点,也就是这两个点能互相到达,那么 那个点也受到保护,每个城市设置检查点有一个权值,问你权值最小,并输出那个方案的个数有多少个 思路:我们既然是求两个点能互相到达,这其实有个名词叫强连通,如果两个点满足强连通的话,那么他们之间就只用选一个点即可,所以我们…
Codeforces Round #296 (Div. 1)C. Data Center Drama Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx  Solved: 2xx 题目连接 http://codeforces.com/contest/528/problem/C Description The project of a data center of a Big Software Company consists of n compu…
题目链接:http://codeforces.com/contest/711/problem/D 题目大意:Udayland有一些小镇,小镇和小镇之间连接着路,在某些区域内,如果从小镇Ai开始,找到一个环,环中每个小镇只经过一次,最终回到了Ai,那么认为这个环是混乱的,现在需要治理这种混乱.可以做的操作是改变环上某个小镇Ak到小镇Aj路的方向,使得无法从Ai开始绕这个环再次回到Ai,那么可以认为混乱被治理,问需有多少种改变路径方向的方案可以使得整个Udayland不混乱?求出方案数. 题解思路:…
题目描述: Ice Skating time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Bajtek is learning to skate on ice. He's a beginner, so his only mode of transportation is pushing off from a snow drift t…
用十字链表结构写的,根据数据结构书上的描述和自己的理解实现.但理解的不透彻,所以不知道有没有错误.但实验了几个都ok. #include <iostream> #include <vector> using namespace std; //有向图十字链表表示 #define MAX_VERTEX_NUM 20 typedef struct ArcBox{ int tailvex, headvex; //该弧尾和头顶点的位置 struct ArcBox *hlink, *tlink…
Episode N-th: The Jedi Tournament Time limit: 1.0 secondMemory limit: 64 MB Decided several Jedi Knights to organize a tournament once. To know, accumulates who the largest amount of Force. Brought each Jedi his lightsaber with him to the tournament.…
题目链接:http://poj.org/problem?id=2762 题意是 有t组样例,n个点m条有向边,取任意两个点u和v,问u能不能到v 或者v能不能到u,要是可以就输出Yes,否则输出No.注意一点,条件是或者!所以不是判断双连通图的问题. 我一开始没看到'or'这个条件,所以直接tarjan判断是否只有一个强连通分量,果断WA. 所以需要给原图缩点,用tarjan把图变成一个有向无环图,要是只有一个scc,那就直接输出Yes.那接下来讨论多个scc,要是新图中有两个及以上的点的入度为…
题目链接:http://poj.org/problem?id=3177 题目大意是一个无向图给你n个点m条边,让你求出最少加多少条边 可以让任意两个点相通两条及以上的路线(每条路线点可以重复,但是每条路径上不能有重边),简单来说就是让你加最少的边使这个图变成一个双连通图. 首先用tarjan来缩点,可以得到一个新的无环图,要是只有一个强连通分量,那本身就是一个双连通图.要是多个强连通分量,那我们可以考虑缩点后度数为1的点(肯定是由这个点开始连新边最优),那我们假设数出度数为1的点的个数为cnt,…
题目链接 题意: 给定一张有向图.找出全部强连通分量,并输出. 思路:有向图的强连通分量用Tarjan算法,然后用map映射,便于输出,注意输出格式. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <map> #include <algorithm> using namespace std; const int MAXN = 2000; const in…
题目大意: 例如:A跟B打电话,B跟C打电话,C跟A打电话..D跟E打电话,E跟D不打电话.则A,B,C属于同一个电话圈,D,E分别属于一个电话圈,问有多少个电话圈. 分析 就是裸的求强连通分量,直接用Tarjan解决 代码 #include <set> #include <queue> #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #…
https://www.byvoid.com/blog/scc-tarjan 主要思想 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树.搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量. 定义DFN(u)为节点u搜索的次序编号(时间戳),Low(u)为u或u的子树能够追溯到的最早的栈中节点的次序号.由定义可以得出, Low(u)=Min { DFN(u), Low(v),(u,v)为树枝边,u为v的父节点 DFN…
有个安全性有下面几种概念: Threat:威胁 Vulnerability: 安全隐患 Attack: 攻击 有关Threat 常见的威胁有下面几种 DoS(Denial of Service拒绝服务攻击) Breach of confidential information 破解机密信息 Data theft or alteration 数据盗用和篡改 Unauthorized use of compute resources 未授权访问 Identity theft 身份盗用 有关安全隐患…