![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
板子
Alex Panda
已不更新博客。
B站搜:BingPanda
展开
-
P1196 [NOI2002]银河英雄传说 并查集
并查集好题,维护两个值,一个是所处队列大小,一个是每个结点队列前面还有几个数。第二个维护需要巧妙的搞一搞,见find函数#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;++i)#define for1(i,n) fo...原创 2019-11-11 14:04:13 · 124 阅读 · 0 评论 -
CF 1245F Daniel and Spring Cleaning 数位dp
题意:给你一个二元组(l,r),问在[l,r]内有多少组二元组(a,b)满足a+b==a^b。(1,2)和(2,1)算两组。思路:1. 很容易想到当且仅当两数每一位同为1才会出问题,也就是说异或是没有进位的。所以a+b==a^b的条件是a&b==1。2. cal(a,b)函数为[0,a]与[0,b]内符合条件的二元组数。那么求[l,r]区间内的二元组数等价于cal(b,b)-2...原创 2019-11-05 15:06:00 · 200 阅读 · 0 评论 -
Codeforces Round #227 (Div. 2) George and Interesting Graph
题意:有向图500个点,1000条边,删除和添加一些边使得除了一个点以外每个点的入度和出度为2,剩下那一个点跟所有点都有连边,问最小操作数。思路:枚举中心点,然后将剩下的点拆成2个点,入度和出度(精神分裂)。然后二分图跑最大匹配,这样就好搞了。代码:#include <bits/stdc++.h>using namespace std;#define ll long long...原创 2019-10-07 22:26:57 · 117 阅读 · 0 评论 -
cf 600f Educational Codeforces Round 2 F Edge coloring of bipartite graph 匈牙利板子理解
题意:一个二分图,两边各1e3个点,1e5条边。求最小染色种类(染色边)方案使得同一个点相连的边没有相同染色。思路:二分图没有奇环1000个点n*m的时间刚好够考虑匈牙利算法,我们每次更新一条边,然后强行配偶,被绿的那个点再去找新欢。那我们染边也一样,因为没有奇环。我们每次找两个点所能连出的最小染色序号,然后强行配偶选择一个最小序号,被绿的那个点再去新点匹配新的最小序号找新欢,0 1 0...原创 2019-10-07 15:13:13 · 265 阅读 · 0 评论 -
cf527 E Data Center Drama
题意:无向图,让你定向每条边,有必要可以加一些边,使得图中每个点的入度和出度%2==0,输出最小加边的构造方式。思路:奇度相连。a-b-c-d-e改为a->b<-c->d<-e,边为奇数任意一个点连一个自环,之后跑欧拉回路。代码:#include <bits/stdc++.h>using namespace std;#define ll long lo...原创 2019-10-05 15:12:55 · 242 阅读 · 0 评论 -
cf 723e One-Way Reform
题意:给你一个无向图,使其变为有向,让入度==出度的点最多。思路:想通一个点:只有度数为偶数的点可以满足条件。想通这一点之后可以跟奇点建立一些虚边,跑欧拉回路。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++...原创 2019-10-05 03:05:02 · 115 阅读 · 0 评论 -
Luogu P2731 骑马修栅栏 Riding the Fences
圈套圈板子题,详解推荐看这位大佬的博客:https://www.cnblogs.com/acxblog/p/7390301.html#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n) ...原创 2019-10-04 20:20:27 · 123 阅读 · 0 评论 -
CF1076D 最短路树
题意:n个点m条边,最多可以删除m-k条边,使得剩下的边为构成原图的最短路树。思路:dij之后跑一边dfs最短路树。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n) for...原创 2019-09-27 14:48:11 · 189 阅读 · 0 评论 -
cf 510c Fox And Names 拓扑排序
题意: n(100)个字符串长度不超过100,按照题目给出的顺序能否重新定义一下字典序。如果可以输出这26个字母思路:拓扑排序代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n...原创 2019-09-22 17:05:02 · 141 阅读 · 0 评论 -
19上海icpc网络赛 G Substring哈希好题
这道题乍一看不能hash实际上最多sqrt(1e5)种长度,所以1e4*sqrt(1e5)就可以了但这种hash第一次见#include <bits/stdc++.h>using namespace std;#define ull unsigned long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(...原创 2019-09-20 03:05:45 · 180 阅读 · 0 评论 -
Poj3237 树刨+线段树(边权转点权)
题意:在树上操作,每次将两点路径值全变负和单点修改。每次求两点间路径的最大值。思路:边权转点权的话,每次把一条边的儿子点作为该边的权值。想起来挺好想,很容易出问题。查询修改的话,要将多算的那条lca去掉就可以了。剩下的就是板子。总结:去掉lca,只需要判断top[x]==top[y]时,x和y是否相等,不等把deep浅的点+1即可。边权转点权,因为你不知道谁是谁的父亲,所以要树刨完或...原创 2019-08-22 19:09:16 · 208 阅读 · 0 评论 -
bzoj 2342-manacher板子理解O(n)
题意:给一个5e5的字符串,求最长满足双回文的子串的长度。双回文的定义为:一个字符串长度为4,回文,且前半段和后半段单独为回文串。思路:若已知条件的回文边界超过覆盖了新统计点,且该点的回文半径可以达到上一次的点,那么统计一次答案。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#defin...原创 2019-08-17 20:26:56 · 175 阅读 · 0 评论 -
bzoj2243 树刨+线段树区间合并
题意:区间修改树上两点间的颜色种类,区间查询树上两点间的线段数。思路:树刨+线段树,区间合并是第一次写。思路为线段树维护左端点和右端点的颜色,合并时相同就–。具体实现不太好写。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i&l...原创 2019-08-21 22:24:14 · 144 阅读 · 0 评论 -
HDU4622 hash做法
题意:给一个2e4长的字符串 ,1e4次询问,每次询问一个区间内字符串的子串有多少种。思路:字符串hash用来判重,之后dp预处理出每个区间的权值。复杂度On^2值得总结的两点是:为了使判重近似O1,可以如下不影响复杂度,通过%来解决,并且建链表。dp的预处理#include <bits/stdc++.h>using namespace std;#define ull...原创 2019-08-16 17:00:55 · 173 阅读 · 0 评论 -
hdu2222-AC自动机板子
Aho板子代码:#include <bits/stdc++.h>using namespace std;#define ll long long #define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n) for(int i=1;i<=n;i++)#define IO ios::sync_with_stdio...原创 2019-08-06 04:09:44 · 92 阅读 · 0 评论