自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Travelling by Stagecoach POJ No.2686

虽然可以把城市看作顶点,道路看作边建图,但是由于有车票相关的限制,无法直接使用Dijkstra算法求解,不过,这种情况下只需要把状态作为顶点,而把状态的转移看作边来见图就可以有效的避免这个问题。让我们考虑一下"现在在城市v,此时还剩下的车票的集合为S",这样的状态,从这个状态出发使用一张车票i∈S移动到相邻的城市u,就相当于转移到了"在城市u,此时还剩下的车票为S/{i}"这个状态。把这个转移看...

2020-03-26 11:47:55 161

原创 分桶法和平方分割

概念分桶法(bucket method)是把一排物品或者平面分成桶,每个桶分别维护自己内部的信息,以达到高校计算的目的的方法。其中,平方分割(sqrt decomposition)是把排成一排的n个元素每n(1/2)分在一个桶内进行维护的方法的总称。这样的分割方法可以使对区间操作的复杂度降至O(n(1/2))和线段树一样,根据维护的数据的不同,平分割可以支持很多不同的操作。1.基于平方分割...

2020-03-26 11:15:13 318

原创 树状数组区间更新区间查询

如果给区间[l,r]同时加上x的话,每个节点的值将会如何变化呢?如果令s(i)=加上x之前的Σj=1iajs’(i)=加上x之后的Σj=1iaj那么就有is’(i)=s(i)l<=i<=r->s’(i)=s(i)+x ✖ (i-l+1)=s(i)+x✖i-x✖(l-1)rs’(i)=s(i)+x✖(r-l+1)下面记sum(bit,i(为树状数组bit的前i项和。我...

2020-03-26 10:00:49 118

原创 3.4熟练掌握动态规划

状态压缩DP旅行商问题 TSPTSP问题是NP困难的,没有已知的多项式时间得高效算法可以解决这一问题,不过在程序设计竞赛中还是有可能出现这种范围比较小的题目的。所有可能的路线共有(n-1)~.对于这个问题,我们可以用DP来解决。首先我们先试着写出它的递推式。假设现在已经访问过的顶点的集合(起点0当作还问访问过的顶点)为S,当前所在的顶点为v,用dp[s][v]表示从v出发访问剩余的所有顶...

2020-03-22 11:27:45 126

原创 HDU 3974 DFS序+区间染色+单点查询

Problem DescriptionThere is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole company).If you are the immediate ...

2020-03-21 13:34:44 96

原创 HDU 1540 线段树区间合并抽象学习

Problem DescriptionDuring the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by tunnels la...

2020-03-21 11:24:06 75

原创 HDU 4027 线段树区间查询更新

题目A lot of battleships of evil are arranged in a line before the battle. Our commander decides to use our secret weapon to eliminate the battleships. Each of the battleships can be marked a value of...

2020-03-20 14:20:47 84

原创 POJ 3264 线段树模板水题

题目For the daily milking, Farmer John’s N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep thi...

2020-03-20 10:18:44 51

原创 ZOJ 1610一道疯狂踩坑的线段区间染色问题

题目Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones.Your task is counting the segments of different colors you can see at last....

2020-03-20 09:59:55 267

原创 HDU 1698 Just a Hook 线段树区间更改模板题

题目描述In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.Now Pu...

2020-03-19 20:41:03 97

原创 POJ 2528线段树区间改值+染色问题+区间离散化

题目描述The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign have been placing their electoral posters at all places at their whim. The city council has fin...

2020-03-19 17:52:31 121

原创 线段树-染色问题 模板&POJ 2777题解

原创大佬的博客线段树进阶-染色问题建树线段树的精髓就是利用lazy数组,可以保证不遍历到子节点就可以获得区域的情况。那么染色也要利用这个性质,对于一段区间,我们想要在上层节点上面表示出来,那么我们可以设置3个变量:-1表示当前区段有多种颜色,具体有多少种我们不用管。0表示当前区域未染色。正整数表示当前区域染了单一染色,并且颜色号是这个正整数。这是按照上面的要求写的线段树,-1表示这段有多种...

2020-03-19 15:54:16 448

原创 POJ 3468 线段树加lazy标记模板

题目You have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for th...

2020-03-19 14:02:13 95

原创 HDU 1754 I Hate It 线段树水题

问题很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。输入本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<500...

2020-03-19 12:09:45 74

原创 HDU 1166 排兵布阵 线段树和树状数组模板题

线段树解法#include<iostream>#include<cstdio>using namespace std;const int maxn=50005;int tree[maxn<<2],w[maxn];int N;void build(int id,int l,int r){ if(l==r){ tree[id]=w[l]; r...

2020-03-19 11:49:50 73

原创 线段树模板

建立线段树,单点更新,单点查询,区间查询模板const int maxn=200005;int maxv[maxn<<2],w[maxn];//一般开4倍大小void build(int id,int l,int r){ if(l==r){ maxv[id]=w[l]; return; } int mid=(l+r)>>1; build(id<&...

2020-03-19 09:48:58 60

原创 学习笔记2.2续

例题:多重部分和问题定义:dp[i+1][j]前i种数字是否能构成j为了用前i种数字加和成j,也就需要能用前i-1种数字加和成j,j-ai,···,j-mi x ai中的某一种。我们可以定义如下递推关系:dp[i+1][k] (0<=k<=mi且k X ai<=j时存在dp[i][j-k X ai]为真的k)int n,K,a[maxn],m[maxn];bool dp...

2020-03-18 18:08:28 80

原创 学习笔记2.2一往直前!贪心法(挑战程序设计竞赛)

2.2一往直前!贪心法贪心法就是遵循某种规则,不断贪心地选取当前最有策略地算法设计方法。2.2.1例题:硬币问题挑战程序设计竞赛page 39能用最大的硬币值就用最大的硬币值,然后依次往下迭代。const int V[6]={1,5,10,50,100,500};int C[6];//输入各种硬币的个数int A;//输入的金额void solve(){ int ans...

2020-03-18 18:08:13 228

原创 学习笔记 2.5图的理论

2.5.1 图是什么图是由顶点(vertex,node)和边(edge)组成。顶点代表对象。在示意图中,我们使用点或圆来表示。边表示的是两个对象的连接关系。无向图术语两个顶点之间如果有边连接,那么就视为两个顶点相邻。相邻顶点的序列称为路径。起点和终点重合的路径叫做圈。任何两点之间都有路径链接的图叫做连通图。顶点链接的边数叫做这个顶点的度。没有圈的连通图叫做树(tree),没有圈的非连通图叫...

2020-03-18 18:07:32 683

原创 学习笔记2.4 加工并储存数据的数据结构

2.42.4.2 优先队列和堆2.4.2.1优先队列能够完成下列操作的数据结构叫做优先队列。1.插入一个数值2.取出最小的数值(获得数值,并且删除)能够使用二叉树高效地解决上述问题地,是一种叫做堆的数据结构。2.4.2.2 堆的结构堆最重要的性质就是儿子的值一定不小于父亲的值。除此之外,树的节点是按从上到下,从左到右的顺序紧凑排列的。在向堆种插入数值时,首先在堆的末尾插入该数值,...

2020-03-18 18:06:18 112

原创 学习笔记 2.5 图的应用

2.5.6 图的应用例题:Roadlocks POJ No.3255我们把路口看作顶点,把道路看作边的无向图。虽然用Dijkstra等算法可以简单地求出最短路径,但是次短路应该怎么算呢?Dijkstra地思路是一次确定尚未确定地定点中距离最小地顶点。按照这个思路对算法进行少许修改,就可以简单地求出次短路了。到某个顶点v的次短路要么是到其他顶点u的最短路再加上u->v的边,要么是到u的次...

2020-03-18 18:06:07 97

原创 2.6数学问题的解题窍门

2.62.6.11.求最大公约数例题:线段上格点的个数枚举的话的时间复杂度为O(|x2-x1| x |y2-y1|),对坐标的绝对值较大的情况难以处理。其实这道题的答案如page114的图所示,是|x1-x2|和|y1-y2|的最大公约数-1(要注意特判|x1-x2=0且|y1-y2|=0时答案为0).辗转相除法:设gcd(a,b)是设计子认输a和b的最大公约数的函数,a除b得到的商和余...

2020-03-18 18:04:54 390

原创 二分

lower_boundint n,k;//在n大小的数组中找到a~i~>=k的最小的i,不存在则输出nint a[maxn];void solve(){ int lb=0,ub=n; while(lb<ub){ int mid=(lb+ub)>>1; if(a[mid]>=k){ ub=mid; } else lb=mid+1; }...

2020-03-18 18:04:28 79

原创 学习笔记第二章挑战程序设计竞赛2.1

2.1最基础的"穷竭搜索"2.1.4深度优先搜索深度优先搜索(DFS,Depth-First Search)是搜索的手段之一。它从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不停反复,直到找到最终的解。例题:部分和问题挑战程序设计竞赛page.30思路:从a0开始按顺序决定每个数字加还是不加,在全部n个数都决定后再判断它们的和是不是为k即...

2020-03-18 18:03:41 114

原创 学习笔记第一章

假设时间限制为1秒106游刃有余107勉勉强强108很悬,仅结构体非常简单的情况POJ No.1852对于最短的时间来说,所有的蚂蚁都朝向较近的端点走是最快的。对于最长的时间来说,两只蚂蚁遇见后折返,如果我们无视蚂蚁与蚂蚁之间的区别,其实就相当于两只蚂蚁一直以同一个方向前进然后走到终点。所以这个时候我们就可以以所有蚂蚁中离端点最远的一个作为答案。题目链接int L,N;int x...

2020-03-18 18:02:54 63

原创 树状数组

Binary Indexed Tree(树状数组)的概念树状数组是能够完成下述操作的数据结构。给定一个初始值全为0的数列a1,a2,···,an给定i,计算a1+a2+···+ai给定i和x,执行ai+=x基于线段树的实现如果使用线段树,只需要对前一节的RMQ的样例作少许修改就可以实现这两个功能。即线段树的每个节点上维护的是对应区间的和。接下来,我们来看如何求得对应区间的和(s到...

2020-03-18 16:16:55 67

原创 线段树

概念线段树是擅长处理区间的。线段树是一颗完美二叉树(所有叶子结点的深度都相同,并且每个节点要么是叶子要么有两个儿子的树),树上的每个节点都在维护一个区间。根维护的是整个区间,每个节点维护的是父亲的区间二等分后的其中一个子区间。当有n个元素时,对区间的操作可以在O(logn)的时间内完成。根据节点中维护的数据的不同,线段树可以提供不同的功能。下面我们以实现了Range Minimum Query...

2020-03-17 21:11:10 101

原创 常用技巧精选(一)

尺取法 Subsequence POJ No.3061 (1)求连续子序列中总和不小于S的最小长度。由于所有的元素都大于0,如果子序列[s,t)满足as+···+at-1>=S,那么对于任何的t<t’一定有as+···+at’-1>=S。此外对于区间[s,t)上的总和来说如果令sum(i)=a0+a1+···+ai-1那么as+as+1+···+at-1=sum(t)-...

2020-03-15 17:57:08 172

空空如也

空空如也

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

TA关注的人

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