--------连通性
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj4784 Map
这个题意很简单,就是问你连一条边会增加多少双联通点对按照一般的方法,先用Tarjan缩点化为一颗树,每次连起来就在树上找路径统计答案答案的统计方法,设树上节点i(原图的一个双联通块)的大小为v[i]那么一条路径[x,y]的端点被连接起来,贡献应该是(Σv[i])^2-Σv[i]^2,其中i∈x~y的路径这样的话可以用倍增或者树剖求lca来解决码量比较大#pragma G原创 2017-10-25 19:00:49 · 322 阅读 · 0 评论 -
Jzoj3176 蜘蛛侠
话说世界上有很多超级英雄:蝙蝠侠,蜘蛛侠,超人,名字都写不出来的人等等。在他们之中有一个叫Kickass。今天他想模仿蜘蛛侠,所以他选择了一排高楼来跳。具体来说,他选择了一列N幢高楼,从左到右标号为1到N。一开始他在第K幢高楼。不幸的是,Kickass能力非常有限,只能跳到向左或向右相邻的高楼,而且他要跳到的楼的高度必须不能大于他现在处在的楼的高度。Kickass不想自己看起来很渣渣,所以原创 2018-01-07 22:06:42 · 445 阅读 · 0 评论 -
Jzoj4729 道路修建
给你一个联通无向图,问你要修建几条边使得该图是一个边双连通图无比经典,肯定是一个tarjan求桥,删掉后缩点,变成一颗树,看看有几个叶子结点,叶子结点一对对连起来即可#include#include#include#includeusing namespace std;struct Edge{ int u,v,nt; } G[1000010];int c=1,h[50001原创 2017-10-18 20:01:17 · 386 阅读 · 0 评论 -
Jzoj4771 爬山
国家一级爬山运动员h10今天获得了一张有着密密麻麻标记的地图,在好奇心的驱使下,他又踏上了去爬山的路。对于爬山,h10有一个原则,那就是不走回头路,于是他把地图上的所有边都标记成了有向边。他决定从点S出发,每到达一个新的节点他就可以获得一定的成就值。同时h10又是一个很珍惜时间的运动员,他不希望这次爬山的成就值白白浪费,所以最后他一定要在一个存档点停下,保存自己的成就值。请你计算出在此次爬原创 2017-11-24 20:26:30 · 633 阅读 · 0 评论 -
Jzoj3486 道路改建
人称不死将军的林登·万,与他的兄弟林登·图两人的足迹踏遍了地球的每一寸土地。他们曾将战火燃遍了世界。即使是lifei888这样的强悍人物也从来没有将他彻底击败。这一次,林登·万在N个城市做好了暴动的策划。然而,在起事的前一天,将军得知计划已经泄漏,决定更改计划,集中力量掌握一部分城市。具体来说,有M条单向边连接着这N座城市。对于两座城市A,B,如果它们能够通过单向边直接或间接的互相到达,那原创 2017-12-03 20:32:02 · 280 阅读 · 0 评论 -
Jzoj5452【NOIP2017提高A组冲刺11.5】轰炸
战狂也在玩《魔方王国》。他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸。小奇有n 座城市,城市之间建立了m 条有向的地下通道。战狂会发起若干轮轰炸,每轮可以轰炸任意多个城市。每座城市里都有战狂部署的间谍,在城市遭遇轰炸时,它们会通过地下通道撤离至其它城市。非常不幸的是,在地道里无法得知其它城市是否被轰炸,如果存在两个不同的城市i,j,它们在同一轮被轰炸,并且可以通过地道从城市i 到原创 2017-11-06 16:28:11 · 467 阅读 · 0 评论 -
Jzoj5446 高考是不可能高考的
Snuke 喜欢旗子.Snuke 正在将N 个旗子摆在一条线上.第i 个旗子可以被放在位置xi 或yi 上.Snuke 认为两个旗子间的最小距离越大越好. 请你求出最大值.今天这都是些集训队作业啊!这个题本来以为一眼能做结果死磕磕不动二分答案肯定是要的,问题是怎么判定解1.dp肯定不行了2.数据结构,也不行3.图的最大独立集,比较靠谱但是。。。复杂度原创 2017-11-03 21:03:56 · 403 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin原创 2017-10-25 22:05:58 · 3734 阅读 · 0 评论 -
Jzoj4736 漆黑列车载运数个谎言(GOSICK系列)
最近的题目都太难了啊,于是在oj上面瞎找题目来切正好这一套题目名都比较优雅于是就选了这一套这个看起来十分像并查集没错,我们发现,如果两个结论互为逆反命题,那么这两个结论等价而且一个逆命题的逆命题或者是反命题的反命题就是自己所以我们发现,1和2是等价的,这就如同敌人的敌人是朋友一般(一道很经典的题了)我们将0视为两个人是朋友,1,2表示两个人是敌人询问就等价于两个原创 2017-10-22 22:36:07 · 498 阅读 · 0 评论 -
Jzoj4437 线性代数与逻辑
不要被标题迷惑了,这是个图论题目。我们发现,若Ai,j=1那么显然Xi,j=1,所以y[i]!=y[j]这时候就变成了一个类似二分图的图,若Ai,j=1我们将节点i,j连一条边表示i和j不能相等我们先对每个节点i拆点成i和i+n,跑一次2sat,若i和i+n可以互达,那么显然无解,否则我们要将所有的点分入两个集合并且使得两个集合大小的乘积尽可能大这时候就可以对于每个节点i,dfs一原创 2017-10-06 19:53:51 · 425 阅读 · 0 评论 -
Jzoj3899 逻辑的连通性
题意:给你一个图,求出每个节点所在的联通快的大小总和显然就是tarjan找强连通分量了,没啥好说//#pragma GCC optimize("O3")//#pragma G++ optimize("O3")#include#include#include#includeusing namespace std;struct Edge{ int v,nt; } G[6000原创 2017-10-03 19:44:11 · 335 阅读 · 0 评论 -
Jzoj3934【NOIP2014day2官方数据】寻找道路
先从终点跑一次dijk得到哪几个点是可以连接到终点,让后再跑一次dijk注意不能经过没被标记的点即可#include#include#include#includeusing namespace std;struct node{ int v,id; };inline bool operator return a.v>b.v; }inline bool min(int& a,i原创 2017-10-05 21:07:28 · 574 阅读 · 0 评论 -
Jzoj4822 完美标号
题意:给定M个二元组(A_i, B_i),求X_1, ..., X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立。我们发现,如果有解,那么一定存在一组解只有0,1构成证明:对于一个可行的解X,显然解集Y(Yi=Xi%2)也是这个问题的一个解于是我们将这些二元组连接成一张图,进行一次dfs标号即可,标号时用一条边连接起来的两个点不能同为0或1原创 2017-10-27 21:36:38 · 368 阅读 · 0 评论 -
LOJ 6495~6497「雅礼集训 2018 Day1」
.真是看懂std就秒的三道题,但是看懂就很难啊(感谢superguymj和memset0两个大佬的代码)稍微说一下题解-------------------------------------------------------- 「雅礼集训 2018 Day1」树这道题的正解被superguymj大佬吊打了,原来O(n⋅2n)O(n·2^n)O(n⋅2n)变成了O(n4)O(n^4)...原创 2019-01-04 08:47:08 · 1357 阅读 · 1 评论