自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个蒟蒻的博客

努力学习成为大佬

  • 博客(75)
  • 收藏
  • 关注

原创 什么是双调排序?(双调归并/双调排序整理)

双调序列:例如: 1,2,5,8,7,6,4,31,2,5,8, 7, 6, 4, 31,2,5,8,7,6,4,3(先增后减或先减后增或全增/全减)Batcher比较器Batcher 定理通过该定理,一个长度为nnn的双调序列可以变成两个n2\frac{n}{2}2n​的双调序列。每次取出序列第iii个和i+n2i + \frac{n}{2}i+2n​,进行比较,其中小的放入MinMinMin,大的放入MaxMaxMax获得的新MinMinMin按顺序仍为一个双调序列,而MaxMaxMax也同

2021-05-13 21:43:20 2278

原创 网络编程 —— Epoll/Select的使用

这个blog日常记录一下(之前写计网实验的时候,有一个问题是做聊天软件(类似QQ))?不讨论一些花里胡哨的功能(历史记录保存之类的)单单考虑多链接的问题。一个问题是多个链接的时候该如何处理?刚好也是学OS —— 第一个想法是多线程/多进程,当一个Client请求服务器链接时,就创建一个Thread分配给客户端,让Thread处理每一个客户端。但是又想到一个问题是这个Thread一直While死循环监听处理感觉不是很优美(感觉网上的很多网络编程教学好像都用了while)实际来说应该是有一个类似监

2021-05-09 11:46:26 365 3

原创 2021ICPC 昆明区域赛 B.Chessboard(上下界最小费用最大流)

建图:1. 默认当前所有网格都为白色(方便处理),因为如果考虑当前网格都是空的话,那么行列一共有白黑两种选择,就不好处理上下界的流量限制了)。2. 按1处理后,将行列分别视为点 i,ji,ji,j: 行列建边:撤销白色的方块: 因为1中默认所有网格都为白色,所以需要有一条边进行撤销add(j,i,1,sw[i][j])add(j , i, 1, sw[i][j])add(j,i,1,sw[i][j])涂黑色的方块: 因为可以将方块变成黑色,所以需要有一条边用于涂黑add(i,j,1,sb[

2021-04-08 14:58:55 801 3

原创 图论算法模板整理

文章目录网络流Dinic(最大流/最小割)最小费用最大流有源汇的上下界网络流一些模型可以用网络流解决的最大权闭合子图、最大密度子图2-SAT2-SAT的判断存在性问题/给出一组合法解tarjan解的构造具有要求/字典序最小DFS判断2-SAT生成树问题最小生成树次小生成树Kruskal 重构树最短路K短路(A star 和可持久化左偏树维护)网络流Dinic(最大流/最小割)#include <iostream>#include <algorithm>#include &l

2021-03-23 15:15:40 366

原创 ICPC North Central NA Contest 2017 部分题解

文章目录H. Zebras and OcelotsG. Sheba's AmoebasI. Racing Around the AlphabetJ. Lost MapB. Pokemon Go GoE. Is-A? Has-A? Who Knowz-A?H. Zebras and Ocelots手推一下发现容易发现是二进制,每次操作是数字减一。G. Sheba's AmoebasDFS染色一下判断个数即可。I. Racing Around the Alphabet圆周计算,简单模拟一下即可。J

2021-03-20 20:05:08 121

原创 【最大权闭合子图、最大密度子图】最小割应用

最大权闭合子图闭合图有一点点序关系(?),例如要做这件事,必须先完成前面的事情(类似于拓扑序的结构?)例如 Luogu P2805 NOI 2009 植物大战僵尸,该题中僵尸攻击植物的次序具备一个拓扑序结构,即先攻击一些植物后才能攻击另外的一些植物,有点类似于闭合图。最大权闭合图一般用网络流求解:​ 建图的思路:​ 统计出正权点,负权点,源点向正权点uuu链接s→u,f=w[u]s \rightarrow u,f = w[u]s→u,f=w[u],负权点vvv链接v→t,f=−w[v

2021-03-02 21:48:19 167

原创 上下界网络流 HihoCoder 1424 (C) Asa‘s Chess Problem

题意: 棋盘上有黑白棋子,给出一些限制行列黑色棋子数量,棋盘中有一些<u,v><u,v><u,v>对可以进行交换(其中这些u,vu,vu,v对,一定保证有行相同或者列相同)因为数据范围+限制条件,其实蛮容易想到使用网络流的(上下界网络流),然后把行列分别看成点,行列连汇点的流量限制为最终行列的黑色棋子的限制。源点连向行列就是一开始行列所拥有的黑色棋子数量,最后就是考虑交换的问题了。如果颜色相同,则没必要考虑交换,因为没有影响。如果颜色不同,交换会对行列黑色棋子数量进

2021-03-02 21:06:57 102

原创 图(刷题记录)自用

文章目录HDU 55211408E - Avoid Rainbow CyclesHDU 5521难点: 集合内的点1408E - Avoid Rainbow Cycles

2020-11-06 10:04:39 117

原创 Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)解题报告

文章目录A.Array RearrangmentB . EliminationE - Team-Building带权并查集维护二分图:可撤销并查集:A.Array Rearrangment思路: 将数组A和数组B排序一下,遍历整个数组,check头尾相加是否大于x(是则No)B . Elimination思路: 比较a+b,c+d,取最值E - Team-Building思路: 如果不考虑矛盾的情况,则一共有Ck2/2C_k^2/2Ck2​/2种可能性:现在考虑矛盾的情况,显然如果能够分成两个

2020-11-02 21:07:48 165

原创 Codeforces Round #672 (Div.2) 解题报告

Codeforces Round #672 (Div.2)A. 冒泡排序最差情况是逆序,交换操作为n(n−1)/2n(n-1)/2n(n−1)/2 次,因此该题判断一下是否完全逆序即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e5+5;int arr[maxn];int main(){ ios::sync_with_stdio(false);

2020-09-25 11:50:51 426

原创 Codeforces Educational Round 95 解题报告

Codeforces Educational Round 95 解题报告A. 题解:​ 计算出所需要的棍子数量 sticks = k * ( y + 1),然后答案是(stick−1)/(x−1)+((stick−1)mod  (x−1)==0?1:0)+k(stick - 1)/(x - 1) + ((stick-1)\mod (x-1) == 0 ? 1 : 0) + k(stick−1)/(x−1)+((stick−1)mod(x−1)==0?1:0)+kB. 题解:​ 将unlocke

2020-09-15 09:47:06 242

原创 Codeforces Educational#29 A-E题解

A. 题解: 把后缀0去掉后判断是否为回文串即可#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int x; cin >> x; string str; bool isok = false; while(x){ if(isok || x%10

2020-09-04 14:20:58 133

原创 Codeforces #430 A-E 题解

A.题意很简单,给出两个区间[l,r][l,r][l,r],[x,y][x,y][x,y],问是否存在两个数aaa,bbb,满足aaa在第一个区间,而bbb在第二个区间,且a/b=ka/b = ka/b=k。数据范围1e7,暴力遍历区间[x,y][x,y][x,y],计算b∗kb*kb∗k能否落在区间一即可。#include <bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(false);

2020-08-30 11:49:02 160 1

原创 红黑树(RBTree) (Update 12.30 仅实现插入)

/** * Tree-Insert(T,x) * color[x] <- red * while x != root[T] and color[x] == Red * 1. p[x] = left[p[p[x]]] // 父节点是不是祖父结点的左儿子 - A class * 2. p[x] = right[p[p[x]]] // 父节点是不是...

2020-01-14 23:57:02 132

原创 杂题

1285B Just Eat It!最大子段和(dp O(n))#include <bits/stdc++.h>using namespace std;const int maxn = 2e5 + 5;long long dp[maxn];int arr[maxn];int main(){ ios::sync_with_stdio(false); cin....

2020-01-14 22:40:53 111

原创 Codeforces Regular Forestation(树的重心+树的同构)

题意:给出一个树,让你选择一个Node−uNode-uNode−u删掉(根据树的定义,我们可以知道,只要删去的该节点的度≥2\geq2≥2,那么就可以得到degreeudegree_udegreeu​个子树。)对于剩下的子树中,如果存在TreesTree_sTrees​和TreetTree_tTreet​,对于TreesTree_sTrees​中的 结点对(sis_isi​,sjs_jsj​)...

2019-11-13 21:34:29 170

原创 uva11354-最小生成树+无根树转有根树+LCA

#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+5;int pre[maxn];int Findpre(int x){return pre[x]==x? x : Findpre(pre[x]);}struct MSTEdge{ int u,v,w; bool operator &...

2019-11-11 19:42:58 221

原创 差分约束系统

差分约束系统概念: 差分约束系统是特殊的n元一次不等式组,它包含NNN个变量,x1−xnx_1 - x_nx1​−xn​以及mmm个约束条件,每一个约束条件由两个变量作差构成的,类似于xi−xj≤akx_i-x_j \leq a_kxi​−xj​≤ak​,需要解决的问题是找到一组解,使得给出的约束条件得到满足。如何解决差分约束系统 -> 最短路算法现在已知B−A≤cB - A \le...

2019-10-23 19:52:50 172

原创 【图论算法】 最短路,次短路,k短路总结

在图论里,最短路,次短路,k短路的问题很常见。这里总结一下。存图技巧数据小,稠密图的一般用邻接矩阵稀疏图,数据大一般用邻接表(vector,链式前向星都可)邻接矩阵const int maxn = 1e5+5;int Graph[maxn][maxn]; // 正权图可以初始化成-1来判断是否连通,负权图可以再考虑开个数组或者用一个很大的值。链式前向星const int max...

2019-10-11 19:17:21 1344 2

原创 P1967 货车运输( 最大生成树+LCA or Kruskal重构树)

至于为什么要用最大生成树!?理由:因为问最大载重,如果要加大载重的话,对于选择的路肯定权重越大越好,所以贪心地想,得用到最大生成树。然后两点之间的最大载重用LCA去寻找就可以了。最大生成树+LCA:#include <bits/stdc++.h>using namespace std;const int maxn = 5e5+5;const int inf = 0x3f3f...

2019-10-10 11:02:52 164

原创 【模板】2-sat问题的讨论与分析(包含一些2-sat题目)

2-SAT定义:即给定一些布尔方程,每个变量只能为truetruetrue or falsefalsefalse要求对这些变量进行赋值,满足布尔方程。简单来说就是离散数学中的布尔方程例如: (¬a∨b∨¬c)∧(a∨b∨¬c)∧(¬a∨¬b∨c)(¬a∨b∨¬c)∧(a∨b∨¬c)∧(¬a∨¬b∨c)(¬a∨b∨¬c)∧(a∨b∨¬c)∧(¬a∨¬b∨c)现在要做的是,为 ABC 三个变量...

2019-10-10 10:46:32 259

原创 一些思维题记(长期更新)

A. Prime Subtraction Codeforces 1238A题意: 给出两个数A,BA,BA,B,询问 ∣A−B∣|A-B|∣A−B∣是否是素数的倍数。思路:这题涉及一点小数论,每个数都能进行质因数分解(除了1),所以只要A-B不为1就输出YES,否则输出NOB. Kill 'Em All 1238B题意:在坐标xxx的地方扔炸弹,位于xxx的地方的怪会直接去世,若不位于...

2019-10-10 10:44:58 210

原创 tarjan算法题目练习(长期更新)

P2002 消息扩散题目描述有n个城市,中间有单向道路连接,消息会沿着道路扩散,现在给出n个城市及其之间的道路,问至少需要在几个城市发布消息才能让这所有n个城市都得到消息。tarjan缩点(因为一个强连通分量内的点只要又一个传到了其他点都传到了,所以可以缩成一个点),然后重新建图,统计out[i]为0的点的数量#include <iostream>#include <a...

2019-09-26 18:17:22 547

原创 【算法学习】 tarjan算法以及图论的一些应用(强连通分量/割点/桥/缩点)

学习了tarjan算法,觉得这个算法真的是挺强大的,然而蒟蒻并不会用 ,先学习着写一篇博客作为记录。学习tarjan的点觉得主要在于两个数组的理解—— dfn,lowdfn,lowdfn,low数组dfndfndfn数组,用于记录dfsdfsdfs序,也就是这个点最早什么时候被dfs搜索到。lowlowlow数组,用于记录其及其子树中的点能回溯到的点的最小dfsdfsdfs序这两个数组引出...

2019-09-25 18:12:50 219

原创 后缀数组

#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;const int maxn = 1e5+5;class SuffixArray{ char str[maxn]; // 储存字符串 int n,m...

2019-09-11 15:47:47 70

原创 [DAG算法] 拓扑排序

有向无环图 DAG(directed acycline graph)相比较无向图来说,有向图比较特殊。看这幅图,所有的边都带上了方向,也就是说 从节点1可以到节点2,但是节点2不能通过那条边到达节点1一般来说,有向无环图可以用来作为表示流程图的一种工具(想想流程图,是不是也是从一个任务到另一个任务或多个任务)于是判断一个流程图是不是很够顺利进行,就有了拓扑排序。...

2019-09-11 14:46:31 2901 1

原创 最短路问题专题(Luogu训练场及各种总结)

P1462 通往奥格瑞玛的道路题目:找最短路径中点权的最大值的最小值最大值的最小值,最小值的最大值,一般这种题目都会想到二分答案去解决。所以我们先把所有点权排个序(二分需满足有序性),然后二分点权,跑一遍最短路确认该方案是否可行(走的路径时,边权损失的HP要尽量的小,这样才可能到达最终的点...

2019-09-10 12:37:26 325

原创 树状数组/分治求逆序对

#include <iostream>#include <algorithm>#include <vector>using namespace std;const int maxn = 1e5+5;struct data{ int val,id; bool operator <(const data &h)const{ retur...

2019-09-10 12:36:57 117

原创 Codeforces Round #569 (Div. 2)

A. Alex and a Rhombus(找规律水题)这题…找一下规律就很容易得到 f(1) = 1,f(n) = f(n-1) + 4*(n-1),先打表,然后直接输出即可#include <iostream>using namespace std;typedef long long ll;int f[105];int main(){ f[1] = 1; for...

2019-09-05 13:18:03 124

原创 Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises)

A. Optimal Currency Exchange就是汇率问题,不难发现,我们其实只要换dollardollardollar或euroeuroeuro的最小面值即可,也就是1,和5,其他面值可以通过这两个比例得到,所以问题就简化了。于是暴力即可#include <iostream>using namespace std;int main(){ int n; ...

2019-09-05 13:11:29 237

原创 带权并查集 [POJ-1733] [HDU 3038]

[POJ - 1733]每次给出一个区间内1个数的奇偶性,判断什么时候与之前的奇偶性相矛盾将区间两个端点取出,离散化之后作为并查集中的点,赋予两点边权为奇偶性在压缩路径的时候,类似于距离一样去思考即可#include <iostream>#include <algorithm>#include <cstring>#include <vecto...

2019-08-30 10:15:03 96

原创 数位dp Bomb HDU - 3555

题目大意:在1~n的范围内,统计含有子序列49数的个数。看到题目很容易想到是数位dp,当时就直接搓dfs板子修改一下去找有49数的个数,但是后面TLE了,思考了很久,并且观察了自己的dfs找数过程,发现的确效率很慢,后面反过来考虑,找没有49数的个数,的确快了很多 #include <iostream> #include <cstring> #incl...

2019-08-28 01:18:17 110

原创 【数据结构】线性基(计算n个数的最大异或和)

最近训练老遇到异或的问题,例如 幸运数字 HYSBZ - 4568,CodeForces 1100F Ivan and Burgers搜索之后都是有关于 n个数的最大异或和问题 -> 线性基写一篇博客记录一下学习过程(参考其他人的博客所学)Definition:线性基: 对于一组数a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1​,a2​,a3​,...,an...

2019-08-28 01:12:02 1194

原创 Codeforces Round #563 (Div. 2)

A. Ehab Fails to Be Thanos题意:给一个长度为2n2n2n的数组,问是不是能否重排数组,使得数组前nnn个数之和和后nnn个数之和不同解:如果数组每个元素都相同,那么就肯定不能了,反之就直接一个sort即可#include <iostream>#include <algorithm>using namespace std;typedef ...

2019-06-10 22:29:24 90

原创 Codeforces Round #560 (Div. 3)D题Almost All Divisors

这题觉得挺有意思的,就写篇博客记录一下,主要还是学到了一些东西吧结论:1. 如果一个序列aaa中的数是 一个数xix_ixi​的除1和本身的所有因子,那么这个xix_ixi​的值将为 min(a)∗min(b)min(a)*min(b)min(a)∗min(b)2. 如何得到一个数的所有因子(2 <= i < x) for(int i = 2; i < x; ++i){...

2019-06-01 14:48:55 119

原创 codeforces #561补题

A.题意:第一个字母相同的的人放在一个教室会聊天,给出一些人的名字,问如何将他们分配到两个教室,使得聊天的pair对最少…挺水的一个题,只要将同名的人平均分到两个教室就可以了。#include <iostream>#include <cmath>using namespace std;int arr[30];int Cal(int n){ if(!n) ...

2019-05-28 15:18:00 168

原创 计系 chapter 9th Trap 程序和 子程序

仅为个人理解,可能有错误…9.1.2 Trap 机制服务程序集合:由操作系统提供的一些子程序(最多256个)起始地址表: 包含256个服务程序的起始地址。该表位于内存地址x0000~x00FF。TRAP指令(操作系统以用户程序执行某个特定的服务程序)链接(Linkage):通过链接回到用户程序。(从服务程序返回用户程序的机制)9.1.3 TRAP指令Two Things:根据...

2019-05-16 17:00:27 593

原创 莫队算法初

emmmm,上周的比赛遇到莫队了,然而只会线段树。特地学习一下。参考博文: 洛谷日报普通莫队(参考洛谷日报)莫队算法一般分为两类,一是莫队维护区间答案,二是维护区间内的数据结构。先看一个比较简单的问题: 给一个序列,m次询问,每次询问你区间[l,r][l,r][l,r]有多少种不同的颜色。 $ n,m \leq 100000 $最简单的暴力。最极致的超时?对于每一次询问query...

2019-05-15 17:24:11 198

原创 购物车(复合类)(szuoj)

#include <iostream>#include <cstring>#include <cstdio>#include <iomanip>using namespace std;class Item{ char *ItemNumber,*name,*color,*Size; double ItemUnitprice;...

2019-04-16 12:43:27 889

原创 数位dp hdu2089 luoguP2657

最近打训练赛遇到数位dp了,然而不会于是就去看了,先入手两道入门题。/*杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例如:62315 73418 88914都属于不吉利号码。...

2019-04-14 19:05:15 104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除