自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gene_I must wait for the sunrise

热爱算法,知乎:https://www.zhihu.com/people/gene.liu

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

原创 【带权并查集题目汇总】

食物链(POJ 1182):题意: 有 NNN 个动物,编号为 1−N1-N1−N,每个动物都是是A,B,CA,B,CA,B,C 中的一种,但是我们并不知道它们是哪一种。现在给出 KKK 句话,“1 X Y”“1 \ X \ Y”“1 X Y” 表示 XXX 和 YYY 是同类,“2 X Y”“2 \ X \ Y”“2 X&n...

2019-03-22 11:19:10 1630

原创 【UVA-10891】Game of Sum【区间DP】

题意:一个序列,选手 AAA、BBB 轮流从序列中从左端或者右端选一段区间,然后区间和加到自己的权值中。两个选手都会按照最优的方式进行选取,问先手 AAA 最多可以比 BBB 多拿多少。 (1≤n≤100)(1\leq n\leq 100)(1≤n≤100)思路:很明显这是一道 DPDPDP 问题,又因为只能从左端点或右端点拿,因此不难想到用区间 DPDPDP 的方法来解决此题。既然是区...

2019-03-21 19:55:52 207

原创 【 Codeforces Round #547 (Div. 3) G】Privatization of Roads in Treeland【树上贪心问题】

题意:现在要对一颗树上的边进行染色。如果一个节点连接的边中有大于等于两条颜色相同,则这个节点为不好的点。现在最多只能有 kkk 个不好的点,问最多需要几种颜色可以将树上所有的边进行染色。思路:比赛的时候前面几题写太慢了,导致没有写到这一题,还是太弱…哭。我们来考虑这道题如何解决。首先既然有 kkk 个不好的点,一个直接的想法就是让前 kkk 个度数最大的点成为不好的点,然后我们可以发现对...

2019-03-21 19:15:29 197

原创 【 Codeforces Round #547 (Div. 3) F2】Same Sum Blocks (Hard)【思维贪心】

题目:给定一个序列,从序列中选出几组连续不相交的区间,要求这几个区间中的数加起来一样大,问最多可以选出多少个区间。(1≤N≤1500)(1\leq N\leq 1500)(1≤N≤1500)思路:比赛的时候看到这题,直接就想到 DPDPDP 上去了… 但是实在没办法 DPDPDP,然后自闭了…很容易想到处理所有不同的区间和,然后对于每一个区间和再进行处理。因为最多只有 n2n^2n2 ...

2019-03-21 19:01:50 1308 2

原创 【2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)】Justified Jungle【树上思维题】

题意:给定一颗树,要求用 kkk 刀将树切成等大小的 k+1k+1k+1 块,问 kkk 有哪些可能取值。将所有可能取值输出。思路:这个问题一开始看到有点懵,我们可以将其进行转化,先考虑比较简单的情况。如果要求用 xxx 刀把树切成等块,问你是否可能?这个问题就比较容易考虑,如果某一个节点的子树大小刚好为 n/(x+1)n/(x+1)n/(x+1) ,则这个节点连向父节点的边是一定要切的...

2019-03-21 18:38:11 333

原创 【POJ 1733】Parity game【带权并查集维护奇偶】

题意:一个长度为 NNN 的由 000 和 111 组成的序列 SSS。MMM 个询问,返回 [l,r][l,r][l,r] 中 111 的个数是奇数还是偶数。输出一个最小的 kkk,使得存在一个 010101 序列满足第 1 k−11~k-11 k−1 个回答,但不存在满足第 1 k1~k1 k 个回答的 010101 序列。(N≤109,M≤1000...

2019-03-19 22:02:56 1309

原创 【0x40 数据结构进阶 例题】银河英雄传说【带权并查集】

题意:NNN 艘战舰,一开始第 iii 号战舰处于第 iii 列。MMM 条指令,两种形式。① M i j①\ M\ i\ j① M i j ,表示让第 iii 号战舰所在列的全部战舰保持原有顺序,接在第 jjj 号战舰所在列的尾部。② C i j②\ C\ i\ j② C i...

2019-03-19 21:34:03 239

原创 【带权并查集详解】以HDU 3038为例【How Many Answers Are Wrong】

带权并查集详解:首先讨论一下带权并查集的主要功能。并查集主要是维护不同元素之间传递关系的数据结构,如果不带权,那么维护的就是不同元素是否属于同一个集合,即连通关系。如果带权,那么除了维护连通性之外,还会维护同一个集合中各个元素之间的关系。对于带权并查集的具体实现,最重要的维护元素是 d[x]d[x]d[x],表示元素 xxx 到根节点 rootrootroot 的偏移量,即 d[x]=x→ro...

2019-03-18 12:40:10 479 5

原创 【BZOJ 1103】大都市【dfs序上建立树状数组、维护路径前缀和】

题意:一颗包含 nnn 个节点的树,每条边初始权值为 111。支持两个操作,第一个操作将某一条边的权值变为 000,第二个操作询问从树根到节点 yyy的路径上有多少条权值为 111的边。思路:这题对于树链剖分来说是一道裸题,但没必要。由于只求从根节点到节点 xxx 上经过的所有边中有几条非 000 边,因此我们可以考虑一下维护前缀和。首先我们可以发现点 AAA 与它子树中所有节点的 df...

2019-03-17 09:03:39 213

原创 【洛谷 P3979】遥远的国度【树链剖分、换根】

题意:nnn 个点的树,每个顶点都有一个值,需要进行三种操作:①①① 将树根修改为 xxx②②② 将 x−>yx->yx−>y 路径上所有点的值修改为 vvv③③③ 询问在当前树根状态下,以节点 xxx 为根的子树中的最小值需要注意,树根修改了之后,节点 xxx 对应的子树也就变化了。思路:修改路径上点的权值以及修改树根都好操作,唯一存在问题的就是...

2019-03-16 21:40:34 1386

原创 【BZOJ 3531 Sdoi2014】旅行【动态开点线段树+树链剖分】

题意:现在有 nnn 个城市,构成了一颗树。每个城市都有自己信仰的宗教,以及城市评级。现在一共有四种操作:①①① 某个城市改信 ccc 教②②② 某个城市的评级调整为 www③③③ x−>yx->yx−>y 路径上所有与 xxx 信仰相同的城市的评级之和④④④ x−>yx->yx−>y 路径上所有与 xxx 信仰相同的城...

2019-03-16 13:50:50 222

原创 【BZOJ 2243 & SDOI2011】染色【树链剖分】

题意:一颗 nnn 个节点的树,两个操作:①①① 将 a−>ba->ba−>b 路径上的点都染成颜色 ccc②②② 查询 a−>ba->ba−>b 路径上的颜色段数量思路:很明显是一个树剖问题,树剖的基础实现就不多说了,我们来考虑一下线段树需要维护什么。首先求的是路径上不同颜色段数量,因此肯定需要维护一个 cntcn.

2019-03-15 23:08:22 190

原创 【BZOJ 1036】树的统计【树链剖分模板】

题意:树上n个点,支持单点修改,区间查询最大值和sum和。思路:此处只讲大体思路,树链剖分的详细原理请移步https://blog.csdn.net/qq_41552508/article/details/88576338单点修改和单点查询,就是直接在线段树上修改和查询 top[x]top[x]top[x],即该点的 dfsdfsdfs 序,即该点在线段树区间上的位置。区间修改和区间...

2019-03-15 16:43:20 174

原创 【洛谷 P3384】树链剖分【详解树链剖分】

题意:一颗 NNN 个节点的树,每个节点上都有初始权值。现在有四种操作:操作 111 —— 1 x y z1\ x\ y\ z1 x y z,表示将 xxx 到 yyy 节点最短路径上所有节点的值加z操作 222 —— 2 x y2\ x\ y2 x y,表示求 xxx 到 yyy 节点最短路...

2019-03-15 15:48:56 2461

原创 【0x50 动态规划】传纸条【线性DP】

题意:给定一个 N∗MN*MN∗M 的矩阵 AAA,每个格子中有一个整数。现在需要找到两条从左上角 (1,1)(1,1)(1,1) 到右下角 (N,M)(N,M)(N,M) 的路径,路径上的每一步只能向右或向下走。路径经过的格子中的数会被取走。两条路径不能经过同一个格子。求取得的数之和最大是多少。 N,M≤50。N,M\leq50。N,M≤50。思路:DPDPDP 问题,首先需要列一下状态...

2019-03-14 19:56:53 262

原创 【0x50 动态规划】Mobile Service【线性DP】

题意:一个公司有3个服务员,初始位置分别为1,2,31,2,31,2,3 处。现在有 NNN 个请求,请求的位置发生在 pipipi ,服务员从 ppp 位置到 qqq 位置需要花费 c(p,q)c(p,q)c(p,q),问满足所有请求所需要的最小服务花费。N<=1000,p∈[1,200]N <= 1000, p\in[1,200]N<=1000,p∈[1,...

2019-03-14 19:28:33 237

原创 【POJ 3057】Evacuation【最大流+二分】

题意:给出了一个 Y∗XY*XY∗X 的地图,在地图的四个边缘有门,用 ′D′'D'′D′ 表示,′X′'X'′X′ 表示障碍物即不能走,′.′'.'′.′表示这个位置初始有一个人,现在地图中的所有人要逃出门外,每个 ′.′'.'′.′ 这个点可以站好多...

2019-03-13 20:50:44 219

原创 【POJ 3469】Dual Core CPU【最小割】

题目:有两个CPU来处理 NNN 个机器,对于每个机器来说,在两个CPU上处理的费用分别是 AiAiAi 和 BiBiBi 。现在还有 mmm 对机器需要进行数据交换,每对机器的数据交换都有其对应的交换费用,但是如果这两台需要进行数据交换的机器是在相同的CPU上处理的,则不需要支付交换费用。问处理所有机器的最小花费。思路:看到了最小花费,因此很自然的想到了最小割模型,于是问题就变成了如何建...

2019-03-13 20:34:49 1349

原创 【POJ 3281】Dining【最大匹配、拆点】

题意:NNN 个牛,FFF 种食物,DDD 种饮料,每个牛都有自己喜欢的某几种饮料和某几种食物,问最多可以让多少个牛同时得到自己喜欢的饮料和食物。每个牛只能选择一个饮料和一个食物,每个食物和饮料也只能被一头牛选择。思路:类似于最大匹配的题目,可以用最大流进行建图。左边是食物,连向源点,因为食物只能被选择一次,因此容量为 111。右边是饮料,连向汇点,容量也是 111。然后来考虑牛,将牛喜...

2019-03-13 20:14:27 174

原创 【POJ 3041】Asteroids【网络流 —— 最小点覆盖】

题意:N∗NN*NN∗N 的矩阵中有 KKK 个小行星,现在每行每列都有一个武器,可以消除此行或者此列中的所有小行星,问最少需要多少个武器可以将矩阵中所有小行星消除。思路:这是一个典型的最小点覆盖问题,可以用二分图匹配算法或者最大流算法进行解决 。我们主要来讨论网络流的做法。先来回顾一下最大流 DinicDinicDinic 的基础性质,先在残量网络上 BFSBFSBFS 求出所有节点的...

2019-03-13 20:01:24 1480

原创 【0x50「动态规划」例题】LCIS【最长公共上升子序列】

题意:给出两个数列 AAA 和 BBB ,输出两个数列的最长公共上升子序列的长度。思路:我们可以仿照最长公共子序列的状态定义,来给出 LCISLCISLCIS 的状态定义,dp[i][j]dp[i][j]dp[i][j] 表示数列 AAA 中 [1,i][1,i][1,i] 与数列 BBB 中 [1,j][1,j][1,j] 的以 B[j]B[j]B[j] 为结尾的最长公共子序列长度。因...

2019-03-13 16:26:52 271

原创 【POJ 2279】Mr. Young’s Picture Permutations【线性DP】

题目:有N个学生合影,站成左端对齐的k排,每排有 N1,N2,…Nk个人,第一排在最后面。学生的身高互不相同,分别为1-N,并且合影时要求每一排从左往右身高递减,每一列从后往前身高递减,问有多少种安排合影的方案。N<=30, k<=5 .N<=30,\ k<=5\ .N<=30, k<=5&nbs...

2019-03-13 16:06:05 304

原创 【BZOJ 1257】余数之和【整除优化】

题目:给定正整数n和k,计算 (k mod 1)+(k mod 2)+…+(k mod n) 的值。1 <= n,k <= 1e9 .思路:首先我们可以先将式子进行转换,k mod i=k−⌊x⌋原式=n∗k−∑i=1ni∗⌊k/i⌋ k\ mod\ i = k - \lfloor x \rfloor \\ 原式=n*k-\sum\limits_{i=1}...

2019-03-13 15:21:13 1312

原创 【POJ 1456】Supermarket【并查集】

题意: 给定N个商品,每个商品利润为pi,过期时间为di,每天只能卖一个商品,过期商品不能再卖,求如何安排每天卖的商品,可以使收益最大。 1 <= N, pi, di <= 10000.思路: 首先有一个很明显的贪心思路。就是将商品按照日期从先到后排序,然后遍历每一个商品,如果当前这个商品过期时间之前的每一天没有全部安排完,那就将这个商品选中...

2019-03-13 13:58:39 240

原创 【BZOJ 1053】反素数【素数基本知识】

题意: 对于任何正整数 x ,其约数的个数记为 g(x)。如果某个正整数 x 满足:对于任意的 0 < i < x,都有g(x) > g(i),那么x为反质数。例如整数 1,2,4,6等都是反质数。先给定一个数 N,求出不超过 N 的最大的反质数。思路: 首先需要考虑到几个性质,前10个质因子的乘积大于1e9,并且唯一分解后,所有质数的指...

2019-03-12 22:52:23 1501

原创 【2016-2017 ACM-ICPC (ECNA 2016) F】Removal Game【区间DP】

题意: 给定一个序列。将序列中的一个数字消去的代价是与这个数字相邻的两个数字的gcd,问将所有数字消去的最小代价。注意这个序列是环形的。思路: 首先我们比较容易发现这是一个区间DP问题,于是问题就变成了如何列区间DP状态。一开始考虑的是dp[i][j]表示区间[i,j]全部消去的最小代价,然后在区间[i,j]中枚举第一个消去的k进行更新。然后会发现一个问...

2019-03-12 22:30:24 389

原创 【2016-2017 ACM-ICPC (ECNA 2016) G】That's one Hanoi-ed Teacher【汉诺塔问题】

题意: 3根柱子的汉诺塔模型。给定每根柱上当前时刻有几个圆盘,判断这个时刻是否会出现在汉诺塔模拟过程中,如果不会,输出"NO"。否则输出当前状态离终态还有多少步。思路: 我们先回顾一下普通汉诺塔的模拟过程。void dfs(int n,int a,int b,int c) //第n个圆盘从a->c{ if(n == 1){ print...

2019-03-12 19:32:17 1409

原创 【Codeforces Round #544 (Div. 3)】K Balanced Teams【线性DP】

题意: n个人,每个人都有各自的权值,组成若干个队伍,队伍数不能超过k,每支队伍中的任意两人的权值之差不能超过5,问每支队伍人数累加的最大值是多少?思路: 比赛的时候写了个贪心,然后wa on 53...就先放着写后面的题去了,写完后面两题以后,时间也结束了... 第一反应是dp,但是列出了三维的dp方程,dp[i][j][k]...

2019-03-09 00:15:36 270

原创 【 2015-2016 XVI Open Cup, Grand Prix of Bashkortostan, SKB Kontur Cup Stage 2】题目总结

A.Abstract Picture题意:一个n*n的网格图,每行每列各涂一次,每行每列均有26种涂法,输出涂色方案。思路:比赛的时候一直想着如何建图,导致最后也没想出来。其实只需要观察到,最后涂的行或列,一定只有一个元素。因此开一个结构体记录每行每列,各个颜色的涂色情况,以及该行或列一共有几种不同的颜色。然后类似于跑拓扑排序,将只有一种颜色的行列加入队列,再依次撤销。将新的颜色数变为1...

2019-03-07 19:22:56 787

原创 【2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) D】Count The Bits【数位DP】

题意: 给定k与b,求出所有k在0~(2^b-1)范围内的倍数,将这些倍数二进制中的1求sum和,模1e9+9输出。思路: 首先,这是一个在数位上的dp,重点就在于如何描述每个数的状态。 发现数的范围很大,想要直接描述是不可能的。但是k的范围很小,只有1000,因此考虑存储这个数%k之后的值。 然后就可以列出dp方程...

2019-03-06 16:48:13 1434

原创 【2011-2012 ACM-ICPC Pacific Northwest Regional Contest】Collateral Cleanup【建图拓扑排序】

题意: 现在有一个矩形,矩形碎成了n块玻璃。每块玻璃都是一个三角形,现在给出每个三角形的三个顶点,问按什么样的顺序,将三角形从上往下依次放入矩形,可以构成原来的玻璃。 这里需要注意题意中明确说了三角形的每一条边最多只会有一个相邻三角形,比赛的时候没看到这句话,然后整道题毫无头绪,哭了...实则不难。思路: 然后我们来考虑如何写这题。稍...

2019-03-06 11:23:04 265

原创 【2011-2012 ACM-ICPC Pacific Northwest Regional Contest C】A Classic Myth【点集最小平行四变形覆盖】

题意: 给出n个点的坐标,求一个面积最小的平行四边形覆盖这n个点,输出平行四边形面积。思路: 类似于求点集的最小矩形覆盖。求矩形时,我们可以得知凸包上至少有一条边与矩形边重合。而对于平行四边形来说,凸包上至少有两条边与最后的平行四边形重合。 由于n只有1000,因此我们可以n^2枚举,求出所有两条边构成的平行四边形。而对于平行四边形面积,我...

2019-03-06 08:00:44 281

原创 【算法竞赛进阶指南 0x31 质数】阶乘分解【唯一分解定理】

题意: 对N!进行唯一分解,输出每个质数,以及质数的指数。(1 <= N <= 1e6) 题目地址 ——http://contest-hunter.org:83/contest/0x30「数学知识」例题/3101%20阶乘分解思路: 这题是个很大的数据,暴力计算的话,复杂度很高。对于这种大量相同元素构成一个整体的题目,我们需要...

2019-03-05 16:59:43 327

原创 【POJ 2689】Prime Distance【埃氏筛与线性筛】

题意: 求出区间 [L, R] 中相邻两个质数的差最大是多少,最小是多少,分别输出对应质数。R-L <= 1e6,1 <= L <= R <= 2^31.思路: 首先可以注意到,区间长度小于1e6,因此我们是可以枚举区间中所有数,判断是不是素数。但是我们不可能对于每个数字,都用根号的复杂度来判断。因此考虑到了筛。 首...

2019-03-05 16:48:07 1296

原创 【HDU 5251】矩形面积【凸包 最小矩形覆盖】

题意: 给定n个点,求一个将所有点覆盖的最小面积的矩形。思路: 首先结果矩形一定有一条边在点集的凸包边上。因此我们枚举每一条边,只要求出其对应的 r(垂直距离最远的点)、p(距离线正向最远的点)、q(距离线负向最远的点),即可求出这个矩形的面积。 首先求r,r点即为(ps[i],ps[i+1]),(ps[i],r)叉积最大的点。然后求p...

2019-03-05 16:26:47 550

原创 【2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) F】Rectangles【扫描线】

题意: 给出n个矩形,求被覆盖区域为奇数次的总面积。思路: 扫描线有很多种写法,可以打lazy更新到底,也可以不打lazy,只是单纯对目标边进行更新,然后再区间合并上去。 本题问的是被覆盖区域为奇数次的总面积。因此线段树每个节点记录被覆盖的次数,被覆盖奇数次的长度,被覆盖偶数次的长度。每次加入一条边,只对被覆盖的那个最大的区间,覆盖次数+1...

2019-03-03 11:33:56 568 3

原创 【2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) E】Cops And Roobers【最小割】

题意: 给出一个n*m的网格,起点为B,走出网格即为逃出成功。然后图中有‘a’,‘b’等点,每个点都有一个权值,表示将这个点堵住,无法通行的代价。问最少需要多少代价,让罪犯无法逃出网格。若挡不住罪犯,则输出-1.思路: 让源点和汇点不连通,典型的最小割问题。 于是问题就变成了如何建图。从B点开始bfs,对于点x->点y,则将这条边加入图中。...

2019-03-03 11:01:34 690

原创 【15年浙江省赛 C ZOJ 3871】Convex Hull【极角排序】

题意: 给出n个点,n个点共有2^n-1个点集,不包括空集。求每一个点集构成的凸包的面积总和。(n <= 1000)思路: 由于n比较小,可以考虑n^2复杂度的算法。然后可以想到先枚举一个点i,然后再枚举一个点,就可以构成一条边,但是边和凸包有什么关系呢?考虑到求的是凸包面积,凸包的面积是凸包上的点依次叉乘,即凸包的面积,每条边都有其对应的贡献值。因此...

2019-03-03 10:04:37 1490

原创 【POJ 1228】Grandpa's Estate【稳定凸包】

题意: 题目中给出几个点,问这几个点构成的凸包有没有可能是从另一个更大的凸包删了某几个点转换而来的,如果当前凸包可能由另外的凸包转化而来,则输出NO,否则输出YES。思路: 这是一个“稳定凸包”的问题,我们需要考虑什么样的凸包是稳定的。 首先,如果凸包的某一条边上只有两个点的话,即左右端点的话,那么这个凸包一定是不稳定的,因为可以在这直线之...

2019-03-01 11:36:33 1287

原创 【POJ 1113】Wall【凸包+一点思维】

题意: 现在有n个点,要求在n个点外面建栅栏,要求每个点到栅栏的距离都大于等于L,问需要的最短栅栏长度。思路: 需要栅栏将n个点包围,第一反应可以想到凸包,然后再在凸包外面加栅栏。由于栅栏距离凸包的距离要大于L,因此我们思考如何加栅栏。 对于凸包的每个顶点,向连接顶点的两条线段建立垂线,长度为L,其余地方连成直线。可以发现最后就是凸包的总长...

2019-03-01 10:32:47 220

空空如也

空空如也

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

TA关注的人

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