自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode刷题记录

刷题记录,包括不限于每日一题

2024-02-19 19:40:08 1610

原创 图论模板

朴素版Dijkstra#include<iostream>#include<cstring>using namespace std;int g[3000][3000];bool used[3000];int d[3000];int n,m,a,b;void dijkstra(int s){ memset(d,0x3f,sizeof d); memset(used,0,sizeof used); d[s]=0; for(int i=1;i<=n;i++){

2020-10-08 18:53:23 151 1

原创 并查集模板

并查集:1.查询元素a和b是否为一组2.将元素a和b的组合并到一起特点:只注重树的结构,不注重树的节点的位置。优化方式:1.使用rank数组记录每棵树的深度,小的向大的合并。2.在查询过程中,所有的经过的点都换为同一个根。int par[N],RANK[N];void init(int n){//每个节点的根初始为自己 for(int i=1;i<=n;i++){ par[i]=i; rank[i]=0; }}int find(int x){//查询树的根 if(

2020-10-05 15:57:52 159

原创 二叉搜索树 模板

概念:左节点比根小,右节点比根大。struct Node{ int val; Node * left; Node * right;};Node * insert(Node * p,int x){//插入一个节点 if(p==NULL){ Node * q=new Node; q->val=x; q->left=NULL; q->right=NULL; return q; } else{ if(x<p->val)p->left=i

2020-10-05 15:01:26 160

原创 AOJ 0525 Osenbei 穷竭搜索 回溯

DescriptionIOI製菓では,創業以来の伝統の製法で煎餅(せんべい)を焼いている.この伝統の製法は,炭火で一定時間表側を焼き,表側が焼けると裏返して,炭火で一定時間裏側を焼くというものである.この伝統を守りつつ,煎餅を機械で焼いている.この機械は縦 R (1 ≤ R ≤ 10) 行, 横 C (1 ≤ C ≤ 10000) 列の長方形状に煎餅を並べて焼く.通常は自動運転で,表側が焼けたら一斉に煎餅を裏返し裏側を焼く.ある日,煎餅を焼いていると,煎餅を裏返す直前に地震が起こり何枚かの煎餅が裏返って

2020-09-28 16:14:18 138

原创 POJ-2718 穷举 无需剪枝 next_permutation函数

DescriptionGiven a number of distinct decimal digits, you can form one integer by choosing a non-empty subset of these digits and writing them in some order. The remaining digits can be written down in some order to form a second integer. Unless the resul

2020-09-23 23:12:05 122

原创 POJ 3669 BFS+最优化剪枝

DescriptionBessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash into earth and destroy anything they hit. Anxious for her safety, she vows to find her way to a safe location (one that is never destroyed by

2020-09-23 11:39:07 156

原创 AOJ 0033 DFS

Description図のように二股に分かれている容器があります。1 から 10 までの番号が付けられた10 個の玉を容器の開口部 A から落とし、左の筒 B か右の筒 C に玉を入れます。板 D は支点 E を中心に左右に回転できるので、板 D を動かすことで筒 B と筒 C のどちらに入れるか決めることができます。開口部 A から落とす玉の並びを与えます。それらを順番に筒 B 又は筒 Cに入れていきます。このとき、筒 B と筒 C のおのおのが両方とも番号の小さい玉の上に大きい玉を並べられる場合は

2020-09-21 22:45:08 144

原创 AOJ 0118

Property Distributionタナカ氏が HW アールの果樹園を残して亡くなりました。果樹園は東西南北方向に H × W の区画に分けられ、区画ごとにリンゴ、カキ、ミカンが植えられています。タナカ氏はこんな遺言を残していました。果樹園は区画単位でできるだけ多くの血縁者に分けること。ただし、ある区画の東西南北どれかの方向にとなりあう区画に同じ種類の果物が植えられていた場合は、区画の境界が分からないのでそれらは 1 つの大きな区画として扱うこと。例えば次のような 3 × 10 の区画であれば

2020-09-21 19:26:15 143

原创 POJ 3009 DFS回溯

DescriptionOn Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules are somewhat different from ours. The game is played on an ice game board on which a square mesh is marked. They use only a single stone. The purpos

2020-09-21 16:33:27 190

原创 POJ 1979 DFS

DescriptionThere is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can’t move on red tiles, he can move only on bla

2020-09-21 15:34:25 63

原创 计蒜客 逃生

样例输入4 4 3 2 5 101 2 3 4-1 -2 -3 -44 0 2 1-4 -3 -2 -1样例输出10思路最开始是想的直接bfs暴力扩展,用优先队列存储节点,保证返回的一定是生命值最大的,并且在扩展时人为保证扩展方向,但是有几组数据没过,不知道哪里的方向没写对还是有一些小细节没注意到。后面直接用动态规划去做,本来这道题就是动态规划问题,有三个原则:1....

2020-04-15 17:45:09 224

原创 计蒜客 密码锁

样例输入12342144样例输出2思路运用bfs对每种序列进行遍历,每次遍历一个序列时,都把它可能拥有的所有状态都进行选择,运用map进行标记操作。AC代码#include<iostream>#include<cstdio>#include<queue>#include<map>using namespace std...

2020-04-13 15:09:23 477 1

原创 计蒜客 蒜头君回家

样例输入8 10P.####.#P#…#…#…#…#T##.#.#……##.#####…#####…#####…S##样例输出21思路用两次bfs,第一次计算出起点到P的距离,第二次计算出T到P的距离,然后循环取最小值。但是WA了很多次,找了很久,发现是vis判断的问题,导致一个数据更新多次。AC代码#include<iostream>#in...

2020-04-13 14:30:17 189

原创 计蒜客 一维跳棋

思路普通bfs思路,建立一个Node,里面包含空格位置,当前序列,和前置序列。这道题主要点是map<string,bool>这个,这里的map不是用string的地址做映射,而是用string的值做映射的(开始我还以为静态字符串和动态生成的字符串在对map做映射时会有区别,惭愧惭愧)。但是如果用普通的map会导致超时,是因为map内部时刻有序红黑树,所以建立起来非常简单,但是查...

2020-04-12 23:32:11 448

原创 计蒜客 因数最多的数

样例输入3101001000样例输出660840最重要的一个公式:例如数字6可以分解为21 * 31,所以按照公式,它的因数个数为4(1,2,3,6)。由于任何合数都可以被分解为质数之积的形式,所以我们可以只选用质数进行求解。这里选用16个质数(15个质数的积就已经超过1016了)。对于剪枝,由于求得是最小的那个,所以我们设定一个m,对于每一个质数的次数都不会...

2020-04-12 14:33:25 378 1

原创 Travelling by Stagecoach POJ No.2686

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

2020-03-26 11:47:55 171

原创 分桶法和平方分割

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

2020-03-26 11:15:13 343

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

如果给区间[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 127

原创 3.4熟练掌握动态规划

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

2020-03-22 11:27:45 130

原创 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 103

原创 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 85

原创 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 89

原创 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 60

原创 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 276

原创 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 105

原创 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 130

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

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

2020-03-19 15:54:16 498

原创 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 99

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

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

2020-03-19 12:09:45 80

原创 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 78

原创 线段树模板

建立线段树,单点更新,单点查询,区间查询模板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 67

原创 学习笔记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 87

原创 学习笔记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 235

原创 学习笔记 2.5图的理论

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

2020-03-18 18:07:32 725

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

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

2020-03-18 18:06:18 119

原创 学习笔记 2.5 图的应用

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

2020-03-18 18:06:07 104

原创 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 399

原创 二分

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 84

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

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

2020-03-18 18:03:41 120

空空如也

空空如也

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

TA关注的人

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