自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(330)
  • 问答 (1)
  • 收藏
  • 关注

原创 建立一个学习计划,每天一道 dp题

这个博客每天打卡更新:

2020-04-01 17:08:25 527 4

原创 GCD+LCM Codeforces Round #641 (Div. 2) C题 Orac and LCM

Orac and LCM题目大意:给 n 个数,先求出所有 lcm(a[i],a[j]),i<j ;然后对新得到的数组所有数求gcd;其实就是要知道这个推论:GCD(LCM(a1,a2),LCM(a1,a3),LCM(a1,a4))==LCM(a1,GCD(a2,a3,a4))预处理出gcd后缀,然后求出每个数的 lcm(a[i],gcd(a[i+1]…a[n])) ,对求的数再做一遍gcd;代码:#include<bits/stdc++.h>#define LL lo

2020-09-04 16:49:34 243

原创 基础数学知识学习笔记

一、分解质因数1. 试除法模板:复杂度 O(sqrt(n))void solve(int n){ for(int i=2;i<=n/i;i++){ if(n%i==0){ int sum=0; while(n%i==0){ n/=i; sum++; } cout<<i<<" "<<sum<<endl; } } if(n>1) cout<<n<<" "<<

2020-08-26 19:56:46 410 1

原创 网络流,二分图题目建模的一些总结

网络流建模网络流难的永远是建模,而不是算法本身;洛谷·P3701 「伪模板」主席树建模思路:这题要看做是一个二分图来想,挑两个人出来比赛,相当于左部图匹配右部图,所以可以建一个源点 S,S 向每个左部图连一条流量为该左部图点的血量的有向边,右部图向 T 连一条流量为该右部图点的血量的有向边;然后最关键的是题目说:每两个点只匹配一次,所以左部图向每个右部图连一条流量为 1 的有向边;最后跑一边最大费用流;这题的建模思路有点像二分图最大匹配,但是还是有点区别;...

2020-07-29 21:04:39 505

原创 网络流算法 学习笔记

网络流学习博客:网络流基础入门b站视频:网络流基础入门Dinic只学了这一种网络流算法,貌似是最优,最好写的一种;时间复杂度为O(n∗m2n*m^2n∗m2),但是实际上会小于这个,一般可以处理 10410^4104-10510^5105;1. 最大流求最大流个人总结为就是不断找增广路的问题,并且当图中不存在增广路时就达到了最大流。PS:增广路其实就是 s 到 t 的一条路径,流过这条路径,可以使得当前的流量可以增加。怎么找增广路呢?其实就是dfs找,但是 Dinic 最关键的是在分层图上面

2020-07-26 14:53:47 299

原创 单调队列 2020牛客暑期多校训练营(第二场)F题 Fake Maxpooling

题目大意:给你一个 n* m 的网格,每个格子有一个元素 A(i,j),这个元素 A(i,j) 等于 lcm(i,j);问所有 k* k 的正方形的最大值(最大值是指 k*k 正方形里面的元素最大值)之和;比赛时暴力找规律过了,正解是用单调队列求出每一行的 m-k+1 个最大值,然后在这个新求得的网格中再用单调队列求出每一列的 n-k+1 个最大值,最后相加就是答案,注意 longlong ;代码:#include<bits/stdc++.h>#define LL long long

2020-07-16 17:06:57 162

原创 线性dp Codeforces Round #239 (Div. 2) D题 Long Path

Long PathOne day, little Vasya found himself in a maze consisting of (n + 1) rooms, numbered from 1 to (n + 1). Initially, Vasya is at the first room and to get out of the maze, he needs to get to the (n + 1)-th one.The maze is organized as follows. Each

2020-07-11 15:19:19 175

原创 线性dp Codeforces Round #336 (Div. 2) C题 Chain Reaction

Chain ReactionThere are n beacons located at distinct positions on a number line. The i-th beacon has position a i and power level b i. When the i-th beacon is activated, it destroys all beacons to its left (direction of decreasing coordinates) within dis

2020-07-08 17:06:18 243

原创 线性dp+倒序思想 Codeforces P859C Pie Rules

Pie RulesYou may have heard of the pie rule before. It states that if two people wish to fairly share a slice of pie, one person should cut the slice in half, and the other person should choose who gets which slice. Alice and Bob have many slices of pie,

2020-07-07 11:26:21 548

原创 线性dp+数学思维 Codeforces Round #533 (Div. 2) C题 Ayoub and Lost Array

Ayoub and Lost ArrayAyoub had an array a of integers of size n and this array had two interesting properties:All the integers in the array were between l and r (inclusive).The sum of all the elements was divisible by 3.Unfortunately, Ayoub has lost his

2020-06-30 16:40:55 252

原创 二维前缀和思想 Codeforces Good Bye 2015 C题 New Year and Domino

New Year and DominoThey say “years are like dominoes, tumbling one after the other”. But would a year fit into a grid? I don’t think so.Limak is a little polar bear who loves to play. He has recently got a rectangular grid with h rows and w columns. Each

2020-06-30 15:26:55 165

原创 双指针+思维 Codeforces Round #354 (Div. 2) C题 Vasya and String

Vasya and StringHigh school student Vasya got a string of length n as a birthday present. This string consists of letters ‘a’ and ‘b’ only. Vasya denotes beauty of the string as the maximum length of a substring (consecutive subsequence) consisting of equ

2020-06-30 10:47:15 269

原创 线性dp Codeforces Round #260 (Div. 1) A题 Boredom

BoredomAlex doesn’t like boredom. That’s why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.Given a sequence a consisting of n integers. The player can make several steps. In a single

2020-06-29 12:18:15 216

原创 权值线段树+思维 牛客练习赛66 E题 骚区间

骚区间这种贡献题可以发现,固定一个右边界 i ,然后在 1–i-1 找出所有符合条件的左边界 j ;所以可以预处理出在 (1–i-1) 中大于 a[i] 的第一个元素位置p1,和第二个元素位置p2, 那么(p2+1,p1)就是可以成为 i 的左边界,同样可以处理右边界;这里可以运用权值线段树,查找最大最小坐标;最后可以运用差分原理,统计答案;代码:#include<bits/stdc++.h>#define LL long long#define pa pair<int,in

2020-06-27 16:37:38 291

原创 树形dp Codeforces Round #168 (Div. 2) D题 Zero Tree

Zero TreeA tree is a graph with n vertices and exactly n - 1 edges; this graph should meet the following condition: there exists exactly one shortest (by number of edges) path between any pair of its vertices.A subtree of a tree T is a tree with both ver

2020-06-25 16:02:20 231

原创 并查集判环+思维 Codeforces Round #363 (Div. 2) D题 Fix a Tree

Fix a TreeA tree is an undirected connected graph without cycles.Let’s consider a rooted undirected tree with n vertices, numbered 1 through n. There are many ways to represent such a tree. One way is to create an array with n integers p1, p2, …, pn, whe

2020-06-24 10:19:22 222

原创 线段树+思维 Codeforces Round #197 (Div. 2) D题 Xenia and Bit Operations

Xenia and Bit OperationsXenia the beginner programmer has a sequence a, consisting of 2n non-negative integers: a1, a2, …, a2n. Xenia is currently studying bit operations. To better understand how they work, Xenia decided to calculate some value v for a.

2020-06-23 12:07:37 198

原创 树形结构+拓扑思维 Codeforces Round #285 (Div. 2) C题 Misha and Forest

Misha and ForestLet’s define a forest as a non-directed acyclic graph (also without loops and parallel edges). One day Misha played with the forest consisting of n vertices. For each vertex v from 0 to n - 1 he wrote down two integers, degreev and sv, wer

2020-06-21 17:13:58 311

原创 树形结构+dp思维 Codeforces Round #247 (Div. 2) C题 k-Tree

k-TreeQuite recently a creative student Lesha had a lecture on trees. After the lecture Lesha was inspired and came up with the tree of his own which he called a k-tree.A k-tree is an infinite rooted tree where:· each vertex has exactly k children;· ea

2020-06-19 19:43:45 273

原创 构造思维+树形结构 Codeforces Round #612 (Div. 2) D题 Numbers on Tree

Numbers on TreeEvlampiy was gifted a rooted tree. The vertices of the tree are numbered from 1 to n. Each of its vertices also has an integer ai written on it. For each vertex i, Evlampiy calculated ci — the number of vertices j in the subtree of vertex i

2020-06-16 17:32:18 193

原创 01字典树+贪心 Codeforces Round #613 (Div. 2) D题 Dr. Evil Underscores

Dr. Evil UnderscoresToday, as a friendship gift, Bakry gave Badawy n integers a1,a2,…,an and challenged him to choose an integer X such that the value max1≤i≤n(ai⊕X) is minimum possible, where ⊕ denotes the bitwise XOR operation.As always, Badawy is too

2020-06-15 10:31:31 229

原创 Floyd 求无、有向图最小环问题

无、有向图最小环问题以前只知道并查集可以判无向图的环,Tarjan和dfs可以判有向图的环,无、有向图的最小环具体大小怎么求还真不太清楚;目前可以知道的是Floyd可以求,但是复杂度为 O(n^3) ,不知道还有什么算法没有,这里先介绍Floyd;分析Floyd可以发现,最外层的循环是枚举中转点,可以推导发现,当枚举到 k 时,1 到 k-1 的点之间的最短路都已经求出来了,这时只要任取 1 到 k-1 之间的两点,然后连接 k 点,就成了一个环,求最小环就行了;模板题:洛谷·P6175 无向图的最

2020-06-12 23:03:46 453

原创 最短路计数 学习笔记

最短路计数最短路非常熟悉,但是最短路数量怎么计算呢?设一个计数数组sum[];以 dij 算法为例,当 p—>q 时,如果是可以更新最短路,那么 sum[q]=sum[p];如果不可以更新最短路,那么如果 dis[p]+edge[i].w==dis[q] ,说明 p 到 q 也是最短路,sum[q]+=sum[p] ;模板题:洛谷·P1608 路径统计代码:#include<bits/stdc++.h>#define LL long long#define pa pair

2020-06-11 21:36:26 430

原创 差分约束 [HNOI2005]狡猾的商人(洛谷 P2294)

[HNOI2005]狡猾的商人题目大意:n 个月,m 个约束条件,判断最终是否产生矛盾;因为这里不是 xix_ixi​ <= yjy_jyj​ + ckc_kck​,而是 sumtsum_tsumt​-sums−1sum_{s-1}sums−1​ = viv_ivi​,所以单向连边并不满足条件,要正反双向连边,然后求最短路,判断是否有负环;代码:#include<bits/stdc++.h>#define LL long long#define pa pair<int

2020-06-09 22:47:19 209

原创 差分约束 学习笔记

差分约束差分约束就是:给你 n 个变量,m 个未知数,形成这样几组的不等式:xix_ixi​ - yjy_jyj​ <= ckc_kck​;然后让你求出一组解,使得所有约束条件都满足;怎么解呢?可以把上面的式子变形一下:xix_ixi​ <= yjy_jyj​ + ckc_kck​;这是不是和图论最短路的式子非常相似呢?所以可以连接 yiy_iyi​ 到 xix_ixi​ 的一条单向边,权值为ckc_kck​ ,然后求单源最短路即可,但是还要保证图的连通,所以可以加个超级源点,用 0

2020-06-09 19:59:27 403

原创 树形结构 Codeforces Round #629 (Div. 3) E题

Tree QueriesYou are given a rooted tree consisting of n vertices numbered from 1 to n. The root of the tree is a vertex number 1.A tree is a connected undirected graph with n−1 edges.You are given m queries. The i-th query consists of the set of ki dist

2020-06-09 16:40:18 701

原创 线性dp之悬线法学习笔记

悬线法以前写过求最大正方形面积的题目,这只要处理 [i-1][j],[i][j-1],[i-1][j-1] 三个位置的最小值就可以,用不到悬线法,简单的线性dp;但是当要求最大长方形时,那种方法就不适合了,悬线法就出现了;模板题: P4147 玉蟾宫悬线法可以分为三个部分:l[i][j] 代表位置 (i,j) 可以往左扩展的最小坐标,就是最远的坐标r[i][j] 代表位置 (i,j) 可以往右扩展的最大坐标,就是最远的坐标up[i][j] 代表位置 (i,j) 可以往上扩展的最大距离,不是坐

2020-06-07 15:12:33 150

原创 带权并查集 [USACO04OPEN]Cube Stacking G(洛谷 P2342)

[USACO04OPEN]Cube Stacking G题目描述约翰和贝西在叠积木。共有30000块积木,编号为1到30000。一开始,这些积木放在地上,自然地分成N堆。贝西接受约翰的指示,把一些积木叠在另一些积木的上面。一旦两块积木相叠, 彼此就再也不会分开了,所以最后叠在一起的积木会越来越高。约翰让贝西依次执行P条操作,操作分为两种:· 第一种是移动操作,格式为“移动X到Y的上面”。X和Y代表两块积木的编号,意思是将X所的那堆积木,整体叠放到Y所在的那堆积木之上;· 第二种是统计操作,格式为“统

2020-06-06 11:23:12 187

原创 并查集判两点是否连接 [HAOI2006]旅行(洛谷 P2502)

题目描述:n 个点 m 条边,每条边都有一个权值,问 s 到 t 路径上 mx/mi 的最小值,mx,mi分别为路径上的最大边和最小边;直接贪心把所有边由大到小排序,然后依次枚举每条边作为最大边,然后再枚举边作为加边,直到 s 和 t 相连;求出mx/mi的最小值;注意0/0=1;代码:#include<bits/stdc++.h>#define LL long long#define pa pair<int,LL>#define ls k<<1#de

2020-06-06 00:21:04 176

原创 数学+线性dp 不等数列(洛谷 P2401)

不等数列题目描述将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。问在所有排列中,有多少个排列恰好有k个“<”。答案对2015取模。注:1 ~ n的排列指的是1~n这n个数各出现且仅出现一次的数列。dp[i][j]表示前 i 个数字插入 k 个小于号的种类数;dp[i][j]+=dp[i-1][j]*(j+1) ,j+1表示有 j 个小于号,还有加一个是数列的最左端那个位置,说明这 j+1 个位置都可以放入第 i 个数,并且小于号个数不变;dp[

2020-06-05 21:33:41 342

原创 实数二分 [JSOI2010]部落划分(洛谷 P4047)

[JSOI2010]部落划分题目大意:给你 n 个点,让你分成 k 个连通块,求每个连通块之间距离最小的最大值;两个连通块之间的距离为连通块之内相距最近的两个点的距离;n<=1000;看到最小值最大,一般都是二分;但是这题也可以用最小生成树来做,虽然更加简单,但是个人觉得比较难理解;二分最大距离就可以,判断只要把两个距离比 d 小的放在一块,然后判断连通块个数就可以了;为什么可以这样?可以反过来想,如果一个连通块的两个点的距离大于 d ,那么为啥不把这个连通块分成两块,这样距离更大了

2020-05-31 20:18:06 183

原创 并查集+虚点 [NOI2001]食物链(洛谷 P2024)

[NOI2001]食物链题目描述动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是 2 X Y,表示 X 吃 Y 。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假

2020-05-31 14:27:44 246

原创 线性dp [USACO3.3]游戏 A Game(洛谷 P2734)

[USACO3.3]游戏 A Game题目背景有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的得分中,当数取尽时,游戏结束。以最终得分多者为胜。题目描述编一个执行最优策略的程序,最优策略就是使玩家在与最好的对手对弈时,能得到的在当前情况下最大的可能的总分的策略。你的程序要始终为第二位玩家执行最优策略。题目看上去像博弈论的题目,但是其实不是,是一道线性dp题,转移

2020-05-29 22:57:23 389

原创 线段树维护等差数列 牛牛的等差数列(牛客挑战赛39 C题)

牛牛的等差数列题目大意:给你一个长度为n的数组 a[],接下来有2种操作;操作1,输入l,r,val,d表示对区间[l,r]加一个首项为val,公差为d的等差数列。操作2,输入l,r,m,表示询问区间[l,r]的和,并且对m取模。m的范围为[3,25];做过这题的弱化版:无聊的数列(洛谷 P1438)两题的1操作是一样,不一样的是2操作,洛谷P1438 是单点查询,这题是区间查询,如果是单点查询,可以直接用线段树维护一个差分数组,没这么麻烦;维护线段的区间和,懒标记分别为首项 x 和公

2020-05-29 14:02:59 740

原创 数学+线段树 小阳的贝壳(牛客小白月赛16 H题)

小阳的贝壳题目大意:给你一个长度为n的数组,有初值,三种操作;给区间[l,r]所有数加上x;询问区间[l,r]相邻的元素差值最大值(取绝对值);询问区间[l,r]所有数的最大公约数;最难的就是第三问了,运用到了gcd的一些原理,如果不是很懂得话想不到;gcd(a,b,c)=gcd(a,b-a,c-b)=gcd(a,gcd(b-a,c-b));依此类推,不就是维护一个差分数组,如果求[l,r]的最大公约数,不就是求gcd(a[l],gcd(b[l+1]…b[r]));(a[]代表原数组

2020-05-28 17:20:07 228

原创 C++ STL vector的insert用法整理

Vector因为vector是可以和数组一样操作的,所以很多用法都几乎用不到;比如insert用法,很少用到,但是还是要复习一下;vector<int>ve;ve.insert(ve.begin(),1);//表示在第一个位置插入1 ve.insert(ve.end(),10);//表示在末尾位置追加10 最变态的是vector还可以和二分结合起来用;例题:洛谷·P1168 中位数这题是给你n个数字,然后让你求出前1,3,5,…个数的中位数。一般的思路是开一个multiset

2020-05-27 16:09:31 2158

原创 C++ STL set用法整理

SetSet 是什么Set 是 C++STL 中提供的容器, set 是数学上的集合——具有唯一性,即每个元素只出现一次,而 multiset 则是可重集(即每个元素可多次出现),两者的内部实现是一棵红黑树,它们支持的函数基本相同;排序set 支持自动排序,默认是由小到大排,和很多其他排序数据结构一样,也可以手写排序,就是重载小于号;如果是单纯的要由大到小排也可以:set< int,greater<int> >se;//由大到小排序如果有多个关键字,那么可以手写结构体,重

2020-05-27 14:59:54 210

原创 构造思维 Codeforces Round #644 (Div. 3) F. Spy-string

F. Spy-stringYou are given n strings a1,a2,…,an: all of them have the same length m. The strings consist of lowercase English letters.Find any string s of length m such that each of the given n strings differs from s in at most one position. Formally, fo

2020-05-25 13:14:49 170

原创 线性dp之最大子段和问题小结

子段和问题我们知道线性dp中一道典中典的题目就是求最大子段和;状态方程为:dp[i]=max(dp[i]+a[i],a[i]);当然这只是最基础的,还有很多扩展;子段长度不大于m的最大子段和这个时候dp已经不好用了,可以考虑前缀和sum[i],维护min(sum[k])(i-m<=k<i),然后只要sum[i]-sum[k]就可以了,具体怎么维护可以单调队列(模板题);子段长度不小于m的最大子段和(1)第一种方法,先用dp计算一次没有长度限制的最大子段和,然后f[i]=d

2020-05-23 22:08:38 246

原创 拓扑排序+贪心 小C与桌游(洛谷 P5603)

小C与桌游题目描述这个桌游的地图可以被抽象成一个 n 个点,m 条边的有向无环图(不保证连通),小C在这个地图上行走,小C能走到某个点当且仅当能够到达这个点的所有点都已经被小C走到。小C会走到每个点恰好 1 次,并且他能走到哪些点与他当前所在的点没有关系(即可以走到与当前所在的点没有连边的点,只要满足之前的条件)。小C每走到一个标号比之前走到的点都大的点,他就会有 1/2 的概率从对手那里拿到 1 筹码,有 1/2 的概率给对手 1 块筹码,双方初始各有 1919810 个筹码。小C的运气时好时坏,

2020-05-21 23:36:55 243

空空如也

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

TA关注的人

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