自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 树套树(模板?)

代码用于解决二维待修改RMQ问题UVA-11297算是写的第一个树套树的题目吧实际上这种数据结构套数据结构,也就是在一种熟知的数据结构的每一个节点,注意是每一个节点,而不是底层的节点重新写一套结构。本质上其实也就是普通线段树,就是对每个节点的pushup操作都必须重新构建,并且要严格注意调用的先后顺序。int a[600][600];int tree_maxx[2050][2050];int tree_minn[2050][2050];int n,m;void build_y(int id

2021-10-13 21:18:32 98

原创 蔡勒公式(日期计算)模板

string dayOfWeek[]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Suday"};int DateToInt (int m, int d, int y)//年月日转int型数{ return 1461*(y+4800+(m-14)/12)/4+367*(m-2-(m-14)/12*12)/12-3*((y+4900+(m-14)/12)/100)/4+d-32075;}void IntToD.

2021-04-26 14:28:08 108

原创 2021寒假集训(1)动态规划

(1)区间DP基本模板for(int len=2;len<=n;len++){ for(int i=1;i<n;i++) { int j=i+len-1; if(j>n) break; for(int k=i;k<=j;k++) { dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]); } }}(

2021-01-22 20:29:59 128

原创 HDU-2196 树的直径性质

HDU-2196本题大意是求取一颗无根树上每一个节点,到树上其余任意节点的最远距离其实我们可以考虑利用树的直径的性质,我们假设树的直径的两个端点为 A 与 B那么,树上任意节点C到树上其余任何节点的最远距离一定是C->A或者是C->B利用这个性质,我们只需利用3次dfs,第一次是为了求取直径的A端点第二次是为了求取其余所有点到A端点的距离,顺便可以求取B端点最后我们可以再求取一次所有点到B端点的距离对于每一个节点我们可以记录一个 ans[i]=max(ans[i],sum[i])

2021-01-19 20:38:16 294

原创 Swust 2019级第9次周赛-赛后总结及反思

A-AtCoder - arc098_b思考异或操作,仅有1^ 1=1^ 1=0时与二进制的加法1+1=10不同所以只需要判断当前区间和与下一个数取值是否有二进制位上的1的重合即可尺取判断,每次找到符合条件的区间,答案就加上区间长度为什么是区间长度呢?考虑序列0 0 0你跑一遍尺取,当r=2时,实际可行的区间有(1,2)和(2,2)两个,刚好是等于区间长度,而在下一步r++的操作后,r就再不会等于2,如果每次尺取可行ans++,那么(2,2)这个区间就会被遗漏所以ans+=(r-l+1)

2020-11-29 21:30:22 147

原创 Swust 2019级第8次周赛-赛后总结及反思

A-POJ1797开始想着跑一颗最大生成树,写一半发现不会写了后面写完F题又回来看了一眼,发现好像这是F的简化版。。二分答案,每次查询mid都跑一遍最短路(原边权取负)#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>

2020-11-23 20:56:08 89

原创 线段判交模板

struct Point { double x, y; Point(){} Point(double a, double b): x(a), y(b){}};typedef Point Vector;Vector operator + (Vector a, Vector b) { return Vector( a.x + b.x, a.y + b.y ); }Vector operator - (Vector a, Vector b) { return Vector( a.x -.

2020-11-20 16:32:34 123

原创 HDU4126(最小生成树+离线处理)

好题最小生成树+离线处理对于生成树上的u->v这条边,我们考虑删去u->v后,u和v会构成两棵树,我们从v开始遍历v这棵树,每次更新记录dp[u][v]即可离线处理的复杂度为O(n2)O(n^2)O(n2)代码部分挺乱的,有时间再整理#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#in

2020-11-19 13:14:47 115

原创 Swust 2019级第7次周赛-赛后总结及反思

A-POJ3414一开始看到这题往贪心方向考虑,然后向后推导推出了一个类似约瑟夫环的问题,有点处理不了,最后放弃了这题,浪费了一个多小时的时间这道题的正解是BFS+路径记忆回溯,对于当前状态可以考虑所有可以向后延伸的状态,即FILL(1), FILL(2) ,DROP(1), DROP(2) ,POUR(1,2), POUR(2,1)是否具有可行性,可行即送入队列,并记录其上一状态情况。路径的输出需要从终点开始回溯,逐级向上寻找上一状态。#include <iostream>#incl

2020-11-16 22:22:37 114

原创 Swust 2019级第6次周赛-赛后总结及反思

A-CodeForces-20C最短路Dijkstra模板题 注意堆优化和inf取值#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <ve

2020-11-08 12:35:01 87

原创 POJ1128-拓扑排序+DFS

题目链接:POJ-1128看到题应该很容易想到利用拓扑排序来判断相框之间的关系,对于每一个相框,我们遍历一遍可以找到他的 上下左右 四条边的位置,再搜索这几条边上是否有其他字母,有的话就添加一个类似于A<B的关系,为后面进行拓扑排序做准备然后就是我个人认为的这道题的难点,怎么按照字典序输出所有可能答案,最开始我想的是利用bfs跑拓扑,确定每个点的层级,再对相同层级的点利用next_permutationh函数进行排列,最后发现可能出现一个点属于多个层级的情况,如下图此时是无法确定D的层级的

2020-11-04 18:20:11 146

原创 Codeforces Round #679 -C

题目链接:CF1345-C题意:对于所有的aia_iai​找到一个区间[x,y][x,y][x,y],使得ai−b∃j∈[1,6]∈[x,y]a_i-b_{∃j∈[1,6]}∈[x,y]ai​−b∃j∈[1,6]​∈[x,y]并找到这个区间的最小长度值思路:由于j∈[1,6]j∈[1,6]j∈[1,6]可以直接记录所有的ai−bja_i-b_jai​−bj​,并对其sort排序,再进行尺取,找到包含n个aia_iai​的区间的最小长度(具体实现看代码部分)#include <iostream&g

2020-10-26 20:00:37 131

原创 Codeforces Round #677 (Div. 3) - E(组合数学)

题目链接:CF-1143E简单的组合数学对于给定的n个人,我们按照题意把他随机分为2组,得到分组系数Cnn/2{C_n^{n/2}}Cnn/2​考虑到这样均分为两组会出现均分出的两个集合A、B出现前后重复的情况,(A,B),(B,A)在该系数上还需要除2,得到Cnn/22\frac{C_n^{n/2}}{2}2Cnn/2​​然后在完成分组后我们对每组的(n/2)人进行全排列,得到分组系数n2!\frac{n}{2}!2n​!,由于进行了全排列,而实际跳舞的人是围成了 一个圈,故实际有效的排列

2020-10-21 21:39:48 87

原创 HDU-3231(三维拓扑)

题目链接HDU-3231题是好题,就是输出格式略坑。。少空行他不会提示PE只显示WA对于给定的n个盒子,我们可以将其起始点和终点分别假定为i和i+n,这样我们就可以在每个维度(x,y,z)上得到2n个点在初始化的时候,考虑初始约束条件x<x+n,y<y+n,z<z+n 在初始时已经就应该要连边,需要单独初始化然后考虑“I”,“X”,“Y”,“Z”的询问更新,当为“I”时,a,b没有相交关系,在三个维度上添加约束条件a<b+n,b<a+n(这个约束条件非常巧妙)当

2020-10-20 19:04:06 171 1

原创 洛谷P1807-拓扑排序+染色+最短路思想

题目链接-P1807这道题的最简单的解法应该是将初始给的权值全部取负,然后对给定的图跑任意一个最短路的板子,将得到的“最短路长度”再取负得到的就是最终的答案但是因为在学习拓扑排序,就跟着大佬的拓扑思路写了一遍拓扑的解,感觉还是有一些收获的#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include

2020-10-17 14:07:58 102

原创 HDU-1811(拓扑排序+并查集)

题目链接-HDU1811开始是在并查集专题看到的这道题,然后就往并查集方向想,考虑了各种加点都没有办法解决问题,后面看题解发现这道题的主体应该是拓扑排序,并查集仅仅是用来帮助解决“=”这个符号,进行删点处理的AC代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map&gt

2020-10-17 10:30:07 227

原创 OpenJ_POJ - C16H-Magical Balls(数论)

OpenJ_POJ - C16H题意:已知有1个球在x,y点,并按照M条规则进行复制,每次使用一条规则,重复N次,问最终所有球的(x+y)的值的总和。公式推导题推导过程如下:

2020-10-08 11:14:45 130

原创 洛谷P2756-网络最大流(24题)

网络流24题中最水的一题,难点在于输出路径,但跑完Dinic后在存的图中找反向边,查看是否有流量即可判断是否连边#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#

2020-10-03 10:53:21 146

原创 洛谷P2944-点的最小割(网络最大流,点的拆分)

题目链接:P2944做这道题前可以先做P1345,基本思路是一样的,对所有点进行拆分,并在拆除的点之间连权值为1的边这道题不同的地方在于会出现N个不可割的点,对这些点的权值进行处理,赋值为inf就可以保证不被割去了#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>

2020-10-02 15:23:28 62

原创 洛谷P2472-网络最大流(点的拆分)

题目链接-P2472还是 点的拆分,把所有点拆为两个点,其连接容量为点的数值,然后建图求解即可#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include &

2020-10-02 12:45:37 85

原创 洛谷P2891-网络最大流(点的拆分)

题目链接:P2891需要注意拆点,不拆点奶牛会出现重复利用,得到的答案将会是错误的#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vec

2020-09-28 21:43:23 61

原创 洛谷P1402-网络最大流(点的拆分)

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <stack>#include &lt

2020-09-28 18:59:03 77

原创 Codeforces Round #673-B,C(map水)

B-题目链接map记录放到容器1内的元素,每新添加一个元素查找mp[k-tmp]是否存在,存在则放到相同容器中,否则扔到另外一个容器此外对于k为偶数的情况还需要特别讨论,要将k/2均匀放到两个容器中#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include

2020-09-28 14:49:48 77

原创 洛谷P1231-网络最大流(点的拆分)

题目链接:洛谷P1231一开始想到的是将练习册,书,答案分为3组点,按照题意两两链接,再加入源点和汇点,跑一边dinic求解。然后顺利地WA原因是分为3组点会出现如下的情况:这里跑dinic求出的答案会是3,但是因为只有一本书,最大的匹配只能为1出现这种情况是因为书被重复利用,要解决这种错误只需对书进行一下拆分就可以了#include <iostream>#include <cstdio>#include <cstring>#include <

2020-09-27 18:50:41 126

原创 洛谷P1345-点的最小割(点的拆分,网络流)

题目链接:洛谷P1345题意:破坏几台电脑可以使图分为分别包含s,t的两个部分思路:初看题目以为裸的最小割,直接交了一发暴力dinic,wa了2个点 ,后面看题解发现这道题并不是裸的最小割,因为它需要割的不是边而是点。解决思路也很简单,将每个点拆分成两个点(出点和入点),两个点中间由一条权值为1的有向边链接,其他边的权值全部赋为inf(不含反边),最后再暴力跑dinic求出最小割得到的就是答案#include <iostream>#include <cstdio>#in

2020-09-25 19:56:50 124

原创 洛谷P1361-网络最大流(最小割)

题目链接:洛谷P1361题意:给定两块地A,B,以及编号1-n的n个种子,每个种子种在A,B地里可以收获不同的价值,不同的种子组合放在不同地块可以产生不同的额外价值。要求最大的价值思路:将所有种子看成一个点,分别和A,B地块连边,边的容量为价值,不同种子组合则构造新的两个虚点,并分别和A,B地块、组合中的种子连边,其中和种子连边时,边权设为inf,这样可以避免边被删除,之后暴力跑dinic求最小割即可#include <iostream>#include <cstdio>#

2020-09-25 18:38:42 137

原创 洛谷P3386-二分图最大匹配

可以用匈牙利跑,但是刚学完网络流,就试着用dinic跑了一发题目链接:洛谷P3386#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <ve

2020-09-25 16:12:57 106

原创 洛谷P3376-网络流

模板题,但是数据加强过了,朴素的Dinic跑这道题会T2个点,但是FF算法却可以轻松过还是挺神奇的Dinic+弧优化+剪枝#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional

2020-09-25 13:49:42 97

原创 网络流-Dinic模板

朴素板子,没有加弧优化int n, m, cnt;//点,边,前向星计数int head[maxn];//前向星int level[maxn];//分层struct Edge{ int to; ll val; int next;}edge[maxn*maxn];void add(int u,int v,int val){ edge[cnt].to=v; edge[cnt].val=val; edge[cnt].next=head[u];

2020-09-25 13:44:07 83

原创 洛谷P1343-网络最大流

模板题,注意判断最大流是否为0连接:https://www.luogu.com.cn/problem/P1343#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#

2020-09-23 15:46:22 145

原创 洛谷P2740-网络最大流

网络流入门模板题,要注意题面的坑点,两条排水沟可能有多条路径连接,需要累加链接:https://www.luogu.com.cn/problem/P2740#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#includ

2020-09-23 15:14:11 70

原创 最大网络流-ford-fulkerson(FF方法)

基本思想博客int edge[maxn][maxn];int pre[maxn];//记录前驱结点int vis[maxn];//判断是否跑过int n,m;//结点数 边数int s,t;//s为源点 t为汇点int flow;//最大流bool findpath()//bfs找增广路径{ queue<int> q; memset(vis,0,sizeof(vis)); memset(pre,-1,sizeof(pre)); vis[s]=1

2020-09-23 15:10:45 173 2

原创 POJ-1655-树的重心

树的重心模板题#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <stack>#inc

2020-09-15 13:51:11 126

原创 Codeforces Round #670 (Div. 2)-C-树的重心

新知识点树的重心龟速AC代码(763ms)#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include &lt

2020-09-15 13:37:14 70

原创 树的重心

定义:树的重心也叫树的质心。对于一棵树n个节点的无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的结点数最小。换句话说,删除这个 [1] 点后最大连通块(一定是树)的结点数最小。性质:树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个距离和,他们的距离和一样。把两棵树通过一条边相连,新的树的重心在原来两棵树重心的连线上。一棵树添加或者删除一个节点,树的重心最多只移动一条边的位置。一棵树最多有两个重心,且相邻。求取代码:int head[maxn];//前

2020-09-15 13:31:05 115

原创 ABC-173-C

二进制暴力枚举#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <stack>#inc

2020-09-12 15:10:45 278

原创 洛谷P1972,ABC174-F-树状数组离线处理

洛谷P1972AtCoder Beginner Contest 174-F树状数组的离线处理首先对询问进行读入,把询问右区间进行排序处理,再逐步向后更新树状数组树状数组储存值为从1-j的不同数字的个数最终答案就是FIND( r ) - FIND( l - 1 )#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <c

2020-09-11 13:36:29 160

原创 求回文串最大长度的处理

寻找最大回文串长度,一般方法处理O(n^3) ,具体为寻找每一个子串,并判断是否为回文串特殊化处理对字符串中每一个空隙插入一个字符 如 “#”再从回文串中心向外寻找,如果碰到不相等,则得到当前中心最大回文串长度复杂度O(n^2)这里要注意对边界的处理马拉车算法O(n)放篇博客https://blog.csdn.net/csdnnews/article/details/82920678...

2020-09-06 16:34:28 87

原创 Swust 2019级第5次周赛-赛后总结及反思

A-CF1167A终于看到签到题了#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#include <queue>#include <functional>#include <vector>#include <sta

2020-08-16 20:06:42 98

原创 Educational Codeforces Round 93-C-stl使用

题目链接比赛的时候只想到了对每一个字符-1的操作,但是后续的处理完全是在抓瞎,始终只能想到O(n²)的暴力做法,赛后补题发现了map的妙用;解题思路对 给定字符串每个数的值-1(长度),题目就从 求 满足(子区间元素和=子区间长度)的子区间数量变为了 求满足子区间和为0的子区间数量对前缀和进行处理,如果两个前缀和相等,中间区间的和一定为0;用map记录相同前缀的数量;在循环中 ans+=map[前缀],得到的即为答案如果在循环外求取ans设每个前缀的值为ni应该要遍历map中的每

2020-08-16 10:29:58 123 1

空空如也

空空如也

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

TA关注的人

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