
图论
文章平均质量分 50
sancpp
这个作者很懒,什么都没留下…
展开
-
HDU1815 (二分+2-SAT+建图)
#include <bits/stdc++.h>using namespace std;//-----pre_def----const double PI = acos(-1.0);const int INF = 0x3f3f3f3f;typedef long long LL;typedef unsigned long long ULL;typedef pair<int, int> PII;typedef pair<double, double> PDD原创 2021-08-18 21:46:58 · 113 阅读 · 0 评论 -
2017ACM/ICPC亚洲区沈阳站 Tree(思维+dfs)
传送门题意一个n点的树,将树上点染成k(k<=500)种颜色。将染成第i中颜色的点连起来(类似生成树)的边集为EiE_iEi求k个边集的交集最大边的个数分析什么样的边不符合条件?如果这条边所连接的两颗子树的大小有一个小于k,说明一端不能被染成k种颜色。(抽屉原理)反之:如果这条边所连接的两颗子树的大小都大于等于k,则一定可以并且,边与边之间是没有相互制约的。(反证法)所以,dfs一遍,如果这条边所连接的两棵子树大小都大于等于k,ans++。...原创 2021-08-17 15:03:53 · 116 阅读 · 0 评论 -
Bomb Game(二分 2-SAT)
传送门题意略分析要求最大的合法半径。可以考虑二分,每次check重新建图跑tarjan判断是否合法。小于ans的半径一定合法,本题是有二分性质的。(数组开小了一直T调了好久)代码#include <bits/stdc++.h>using namespace std;//-----pre_def----const double PI = acos(-1.0);const int INF = 0x3f3f3f3f;typedef long long LL;typede原创 2021-08-05 17:29:04 · 107 阅读 · 0 评论 -
K-TV Show Game(2-SAT)
传送门题意题目要求n个灯(R,B),给出m组赋值方式,每一组有三个赋值,至少有两个是正确的,问是否能找到一组正确的赋值方式.(摘自此博客)分析如何转化为2_SAT?设3 B 4 R 5 R:如果3为R,则4比为R,5比为R如果3为B,则3比为B,5比为R如果5为B,则3比为B,4比为R如此转化,每一组赋值可以建立6个约束关系(单向边)最后套板子输出可行解就行了代码#include <bits/stdc++.h>using namespace std;//-----p原创 2021-08-03 16:08:01 · 181 阅读 · 0 评论 -
牛客练习赛67 牛妹游历城市(二进制优化建图最短路)
传送门题意最近,牛妹天天宅在家里,真是憋死人了。他决定出去旅游。牛妹现在正在1号点(自己家里),他决定前往n号点(牛妹想去的地方),中途可以多次经过1~n号点。现在,已知每个点都有个权值a_i如果a_i & a_j ≠0则i号点和j号点之间连有一条双向边,权值为lowbit(a_i & a_j)。他想要最小化自己的行走距离,但是他计算不出来qaq。相信全牛客最聪明的你一定会吧!输入描述:本题有多组数据。第一行,输入一个数T,表示数据组数。接下来2*T行,先输入一个数n,再输入原创 2021-08-02 21:31:47 · 156 阅读 · 0 评论 -
2019CCPC-江西省赛 Cotree(树的重心 并查集)
传送门题意给两棵树,在两棵树中连一条边,使∑i=1n∑j=i+1ndis(i,j)\sum_{i=1}^{n}\sum^n_{j=i+1}dis(i,j)∑i=1n∑j=i+1ndis(i,j)最小。分析需要找到两棵树的重心,将两棵树的重心连起来,再统计每条边对答案的贡献。对于输入的处理用并查集即可。代码#include <bits/stdc++.h>using namespace std;//-----pre_def----const double PI = ac原创 2021-07-30 11:35:12 · 153 阅读 · 0 评论 -
2-SAT模板整理
给定 n 个还未赋值的布尔变量 x1∼xn。现在有 m 个条件,每个条件的形式为 “xi 为 0/1 或 xj 为 0/1 至少有一项成立”,例如 “x1 为 1 或 x3 为 0”、“x8 为 0 或 x4 为 0” 等。现在,请你对这 n 个布尔变量进行赋值(0 或 1),使得所有 m 个条件能够成立。输入格式第一行包含两个整数 n,m。接下来 m 行,每行包含四个整数 i,a,j,b,用来描述一个条件,表示 “xi 为 a 或 xj 为 b”。输出格式如果问题有解,则第一行输出 POSS原创 2021-06-01 17:56:51 · 247 阅读 · 1 评论 -
P5764 [CQOI2005]新年好(最短路+暴搜)
传送门因为只有5个点,可以dfs访问顺序。先预处理出一号起点+五个点的单源最短路,再暴搜。在语法上,二维数组作为函数参数的用法。。#include <bits/stdc++.h>using namespace std;//-----pre_def----const double PI = acos(-1.0);const int INF = 0x3f3f3f3f;typedef long long LL;typedef unsigned long long ULL;typ原创 2021-05-25 16:56:35 · 182 阅读 · 0 评论 -
点分治模板、例题整理
传送门1.题意求一个树中距离小于等于k的点对的个数。1≤N≤1041≤N≤10^41≤N≤1042.分析点分治算法:树的重心树的重心是指:删除该点后,最大子树(的点数)最小的点。关于重心的结论:删除重心之后,最大子树的点数小于等于总点数/2。于是:我们可以将一个树上问题删去重心点之后分解成若干个子树内部的问题和子树之间的问题。这样可以保证是log级的时间复杂度。(边分治则不行,会被菊花图卡成n)关于本题我们先将重心找出来,然后路径小于等于k的点对可以分成如下:1.两点在同一颗子树中。原创 2021-05-02 20:58:19 · 666 阅读 · 2 评论 -
Acwing.379 捉迷藏(最小路径重复点覆盖)
传送门1.前置知识1.最小路径点覆盖DAG中选出最小数量的不相交路径(无公共点),将所有点覆盖。求法:将DAG中的点拆成出点和入点,构成一个二分图。则原图的最小路径点覆盖转化到新图中:1.无公共点->每个点最多只有一个出度一个入度 ->…->新图中的任意两条边之间不相交-> 新图中的边都是匹配边。小结论:每个路径终点 对应 一个左侧非匹配点<=> 让左侧非匹配点最少 n-m<=> 让左侧匹配点最多 m<=> 找最大匹配边数 m原创 2021-04-22 20:32:35 · 2723 阅读 · 4 评论