自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UVA 11624

UVA 11624因为人和火不能模拟出来同时走,那么bfs 火 到个点的时间,然后bfs 人 到个点的时间,判断时间是否满足在火到来之前终点就是越界memset(timefire,0x3d,sizeof timefire),我当时设置的是memset(timefire,0,sizeof)就wa了#include <iostream>#include <strin...

2019-05-30 18:26:30 499

原创 FZU_2150_(BFS)

FZU 2150题意:随便两个出发点,用最短时间遍历所有草地,不能遍历所有草地输出-1,可以遍历则输出最短时间,4层循环枚举所有出发点,更新最短时间,#include <iostream>#include <string.h>#include <queue>using namespace std;int next1[4][2] = {0,1...

2019-05-24 16:19:56 171

原创 POJ_3414_(BFS枚举)

POJ 3414给两个杯子的容量,还有一个数代表最终容量,和6种操作,求出通过6中操作后 使得任意一个 杯子的容量等于最终容量,输出步数和操作的过程(保存bfs的路径),用1~6代表每个6中操作,存在结构体中,bfs枚举6中操作,vis[i][j]存杯子中水容量的状态,DROP(i),如果i杯子为空,没有意义,POUR(a,b)根据杯子的大小来决定,#include <queue...

2019-05-24 16:17:06 117

原创 POJ_3087_(BFS)

POJ 3087题目意思读懂:给出字符串s1,s2,ans,创建一个空字符串s12,将s2第一个放在s12第一个,s1第一个放在s12第二个,然后依次类推,s12前一半是新的s1,后一半是新的s2,输出模拟后s12 == ans的步数(BFS),否则输出-1,map<string,bool>标记就行了#include <iostream>#include &l...

2019-05-23 21:23:44 180

原创 POJ_3126_(BFS)

POJ 3126先把所有1000~10000素数排出来改变给出起点数a的4位,每一位9种选择(1,2,3...9),bfs,求最短路,ans[i],记录到达数字i需要多少步数.#include <queue>#include <iostream>#include <string.h>#include <math.h>using ...

2019-05-23 10:13:07 230

原创 HDU_1495(BFS)

数论做法HDU 1459BFS:剪枝:奇数可乐肯定不能被平分枚举6种操作a->c a->b b->a b->c c->a c->b将每个杯子有多少可乐作为状态保存下来在a == b && c == 0 或者a == c && b == 0 或者 b == c && a == 0 时则平分成功,或者我...

2019-05-23 08:53:57 101

原创 HDU_1495(数论)

HDU 1495数论:思路1:首先总可乐升数是奇数肯定不能被平分设x =b杯子倒进来次数-倒出去的次数,y同理, __为什么是-不是+,因为倒出去后杯子可乐减少,统计的是最后杯子剩余的可乐,所以做的是代数上的加减既然要平分,那么经过移动后想要满足b∗x+c∗y=a/2b*x+c*y=a/2b∗x+c∗y=a/2,已知扩展欧几里得b∗x+c∗y=gcd(b,c)b*x+c*y=gcd(b...

2019-05-22 21:20:33 887

原创 扩展欧几里得例题(luogu_1082)

luo gu由a∗x≡1(mod&ThinSpace;&ThinSpace;b)a*x \equiv1 (\mod b)a∗x≡1(modb) 推导为扩展欧几里得->a∗xmod&ThinSpace;&ThinSpace;b==1mod&ThinSpace;&ThinSpace;ba*x \mod b == 1 \mod ba∗xmodb...

2019-05-22 14:55:53 590

原创 扩展欧几里得算法

最大公约数由gcd(a,b)=gcd(b,a%b)gcd(a,b) = gcd(b,a\%b)gcd(a,b)=gcd(b,a%b) 辗转相除法得到,贝祖定理存在整数a,b ,那么一定存在整数x,y,使得 ax+by=gcd(a,b)ax+by = gcd(a,b)ax+by=gcd(a,b)可以判断ax+by=gcd(a,b)ax + by = gcd(a,b)ax+by=gcd(a,b...

2019-05-22 13:59:31 167

原创 HDU_2612_(BFS)

HDU 2612思路:记录出发点(Y和 M)到每一个kfc的距离,更新ans最小距离之和坑点:不能走对方的出发点,更新ans时注意 有的kfc被包围了,不能走到,除去dist[][] == 0的情况清空数组的细节问题#include <iostream>#include <string.h>#include <queue>usin...

2019-05-21 16:15:05 103

原创 POJ_1426_(BFS)

POJ 1426找到一个数字X(只由1,0组成),且$ X \% n == 0 $,(数字X能够被n整除)输出任意的一个X还是想不到要用BFS,从1开始bfs,加入数字ncur = cur * 10 + i,保证了数字都由1 0组成,#include <iostream>#include <queue>#include <string.h>u...

2019-05-20 15:32:59 106

原创 POJ_3279_(枚举)

POJ 3279点击的数组的字典序是一行一行看成字符串的(开头的0不要,从1开始)。输出字典序的前提是step 相同,那么枚举点的操作是从0开始$ (000001)_2 $,字典序是1 , $ (11111)_2 $字典序是11111,所以我们已经默认的是按字典序枚举的,#include <iostream>#include <string.h>using ...

2019-05-20 14:28:13 232

原创 POJ_3278_(BFS)

POJ 3278总是想着用dfs做,不知道为什么标记已经进入队列的点, 遇到k就存ans = step 输出用dfs做的时候,根本没有办法控制dfs的范围,这里bfs刚好解决了x-1 x+1 2*x谁先到k的问题 体现了广度优先的思想#include <iostream>#include <string.h>#include <queue>u...

2019-05-19 16:53:26 200

原创 POJ_2251_(BFS)

BPOJ 2251三维bfs求最短路径方向从 东南西北 加入 上下注意L是层数的意思,从下层给到上层,bfs模板 + vis三维标记 + tx ty tz 三维坐标#include <iostream>#include <queue>#include <string.h>using namespace std;struct node ...

2019-05-19 15:55:46 158

原创 2017.瓷砖样式.dfs

我也没想到怎么做,看别人题解看懂了dfs()枚举所有的点,我看长方形瓷砖是2格的就莫名不知道该怎么枚举要求用2种颜色瓷砖铺满3*10的格子,且瓷砖能横着铺 竖着铺,遍历所有的点,dfs去铺,判断每个点是否铺过,标记第一个颜色为0,第二个颜色为1判断每个点铺了瓷砖没,没铺就铺瓷砖,铺了之后就判断该行是否铺完,否则换行或者接着下一个点继续铺,没有铺,判断是否到了最有一个点,没有就,判断接下...

2019-05-19 12:19:18 200

原创 ZOJ_3261_逆并查集

ZOJ 3261 逆并查集思路简单代码繁琐一直wa调了一天,真的菜因为并查集没有摧毁边的操作,那我们不妨先合并所有边中 不会被摧毁的边,那么就需要我们先保存所有的边,(这里太繁琐容易出错)开一个数组记录每个点的值,因为要找值最大 或者 值相同但点最小的点,在合并的时候根据这个来合并,值小的指向值大的,(值相同时,大点指向小点)这里用了一个技巧就是 map<pair<int,i...

2019-05-19 10:30:50 140

原创 2013_格子刷油漆_(dp)

开2个数组a[]表示在2*N的格子,从四个顶点中任意一个格子出发遍历全部格子的种类数,a[1] = 1 a[2] = 6(画出所有情况)b[]表示在2*N的格子,从任意一个格子出发,遍历所有格子且终点在出发点这一列,以为要回来,所有每一步只能一直往左或者右走(这样该列另一个格子就会留个回来时刷),所以每一步2中选择,b[i] = 2 * b[i-1]出发点在四个顶点处,考虑a[],...

2019-05-19 10:29:04 107

原创 HDU_1272_(并查集)

HDU 1272 无向图用并查集判断是否成环.坑点:仅仅考虑了根节点相同(有回路)的情况,而忽略了有多个连通分量,也是不满足 任意两个房间有且仅有一条路径相同#include <iostream>#include <string.h>using namespace std;const int maxn = 1e5+10;int pre[maxn];i...

2019-05-17 22:15:36 134

原创 POJ_1984_(带权并查集)

POJ 1984自己审题问题极其严重1.忽略了该题询问i行可能询问多次,2.忽略了给出询问行不是按顺序的排序的,我以为是按顺序,没有想出怎么用带权并查集做根据给出的东南西北来维护dx横坐标到根节点距离 dy纵坐标到根节点距离,路径压缩的时候dx dy一起压缩就行,主要是合并的时候根据题目给出的东南西北来确定dx dy合并根节点 还是rala[ra] = rala[b] + s - ...

2019-05-17 21:10:14 216

原创 POJ_1733_(并查集+离散化)

POJ 1733带权并查集权值既可以通过异或来表示奇偶的数量,也可以直接存奇偶数量1 2,路径压缩的时候累加起来就行了此题点的范围太大,需要离散化,注意输入的次数最多为5000,则最多有1e4个点,带权并查集+离散化#include <iostream>#include <string.h>#include <string>#include ...

2019-05-17 21:06:13 669

原创 HDU_3038_(并查集合并 线性加)

HDU 3038加权并查集题目描述有问题,有多组数据子序列是连续的,路径压缩是权值相加就行,根节点相同说明已经存在合理字段和,判断到根节点的距离是否满足 已经存在的和不同则合并#include <iostream>#include <string.h> using namespace std;const int maxn = 2e5+10;int ...

2019-05-17 21:05:11 221

原创 POJ_2236_(并查集小变形)

POJ 22362层循环找出每个点 周围与其距离<=d的点,vector<int> p[maxn]记录,O的意思是修复O附近的点,但是必须是已经出现过的需要被修复的点,(从样例我们可以看出来),用vis[]标记一下需要修复的点,其他的就是并查集了#include <iostream>#include <vector>#include &lt...

2019-05-16 21:38:09 163

原创 POJ_1702_(带权并查集)

POJ 1703此题2种情况,一种情况是确定种类不同,另一种就是询问同类的关系注意scanf()读取还是开一个数组rala[]记录该点与父节点的关系,1表示不同类,0表示同类,在路径压缩到根节点的同时,每一步都进行 该点rala[i]与父节点rala[pre[i]]关系异或rala[i]^rala[pre[i]],这样能使关系保持相同,并且每点只想根节点,询问就是 判断根节点是否相同,...

2019-05-16 21:35:55 194

原创 POJ_2524(并查集模板)

POJ 2524并查集模板题#include <iostream>using namespace std;const int maxn = 5e4+10;int pre[maxn];int n,m;void init(int k) { for (int i=1; i<=k; i++) pre[i] = i; }int find(int x) { if (x ...

2019-05-16 21:33:13 182

原创 POJ_2492_(带权并查集)

POj 2492 关系异或加权并查集无法确定bug具体是男还是女,只能知道他们是同性还是异性都合并到一个数中,通过边的权值来记录是同性还是异性开一个数组rala[]记录点i与点i的父亲节点的关系,1代表性别不同,0代表性别相同给出的2点肯定是异性,先判2点断根节点是否一样,相同就通过2点分别推根节点的性别是否一样,一样就正好已经在树中,不一样则不满足教授推论根节点不一样就合并根节点,...

2019-05-16 21:30:18 188

原创 POJ 1182_食物链(三倍关系)

POJ 1182 食物链三维关系并查集数据大了不能cin为什么是三维? 其实相当于映射关系,且维护在一个数组中首先肯定想着是并查集合并一个动物类A B C,但是怎么表示猎物和天敌的关系呢?我想着用另一个数组表示捕猎的关系a吃b->eat[a]=b,但是发现不知道如何维护,这里我们开2个数组来维护 捕猎 和 天敌的关系,仍然用并查集来维护,为了方便,我们将它压缩到一个数组中i表...

2019-05-16 21:28:40 184

原创 POJ 1988(带权并查集)

POJ 1988题目问的是包括x方块的堆 下面的 所有方块的个数,而不是方块x下面所有方块的个数,将最下面的方块作为根节点(父亲节点设置时带方向)一个数组记录此堆的数量,另一个数组记该点下面方块的个数find(x)时,更新所有点的下面方块个数,询问点x的结果时,首先要find(x),使的结果为该堆的根节点下面的方块数量#include <iostream>using ...

2019-05-16 21:24:14 203

原创 POJ 1661(带权并查集模板)

POJ 1661带权并查集模板并查集+统计一个点集的大小#include <iostream>using namespace std;const int maxn = 3e4+10;int n,m;int prv[maxn];int tot[maxn]; // tot记录以点i作为顶点的个数 int find(int x) { if ( prv[x] == x ...

2019-05-16 21:21:56 121

原创 LCS模板题(HDU 1503)

HDU 1503题意: 给出2个字符串,求出 最短的包含该两个字符串 的字符串2个字符串的公共部分只出现一次,求LCS串时其他的点顺带累加到串中,注意 i , j 代表的是 a[]还是b[] 就行#include <iostream>#include <string.h>#include <string>#include <vecto...

2019-05-16 21:08:26 253

原创 LCS(最长公共子序列)

求最长公共子序列的长度(对我自己说的) dp打表的原因就是为了避免子问题重复计算,而递归多次重复计算(斐波那契)最优子结构:每一个子问题都要通过上一步递推得到该状态下的最优解,且不会影响到后面的问题既然求长度且长度要最优,用dp来表示某个状态下的长度如何表示某个状态下的长度,我也想不到字符串a,b,一维数组肯定不行,用dp[i][j]表示a中[1,i]的子字符串 和 b中[1,j...

2019-05-16 20:35:48 114

原创 poj 2279(线性 dp)

内存爆了将所有新生从高到底排序,在第i行插入新生时:人数<=该行人数如果在第一行就直接插,不在则 需要满足 ** 该行人数 <= 上一行人数**f[0][0][0][0][0] = 1 应该为0,为了不写+1则初始化为1;#include <iostream>#include <string.h>using namespace st...

2019-05-16 15:00:14 296

原创 2018蓝桥杯国赛.调手表

自己想出来dp,但是求最小 按多少次k这里是暴力的,应该tle了当前dp[i] = min(dp[i-1]+1,x[i])表示,从上一步按一次或者一直按x[i]次+k使得%= i#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e5+10;int dp...

2019-05-15 14:00:25 507

原创 2017.发现环(并查集水题)

blog最近没有更新因为在做并查集专题,按专题写题解,然后又要打省赛,(省三水过,题解还没时间写,现在又要准备蓝桥国赛)并查集模板,但是我死磕路径压缩时进行保存答案应该邻接表存图,然后在根节点不相同的地方,去dfs找成环的路上的点,回溯是最重要的,能够回溯说明没有找到,需要取消标记然后pop路上的点#include <iostream>#include <strin...

2019-05-14 19:42:29 191

原创 拓扑序(poj1128)

题目一个框由2个点来确定,读图,纪律这2个点扫描一个框上的点,出现的点一定是后来覆盖上去的,扫的同时建有向图,dfs求出拓扑序#include <iostream>#include <cstring>#include <vector>using namespace std;int n,m;int g[35][35],has[30];ch...

2019-05-05 19:04:47 229

原创 dfs bfs拓扑序列+判断

想要得到拓扑序的图一定是有向图.拓扑序列虽然不止1个,但都满足,每个点的前驱后继点的顺序,某点的后继点在拓扑序中不可能出现在该点的前面,基本思想:拓扑序列满足,入度为0的点进入序列,且该点的出边点的入度-1,如果该点出边的入度为0,则重复第1步邻接表+bfs开一个数组记录所有点的入度,将入度为0的点加入到队列取出队头,加入到拓扑序.更新出边的点的入度,判断是否为0,为0加...

2019-05-05 15:39:46 893

原创 拆分单词 dp

timu题目:给定一个非空字符串 s 和一个包含非空单词列表的字典 ,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。字典中没有重复的单词。样例:示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “le...

2019-05-04 19:50:17 200

原创 dfs+树与图的遍历(深度,重心)

邻接表存图#include <iostream>using namespace std;const int maxn = 1e6;int ver[maxn],next[maxn],head[maxn],edge[maxn];int tot = 0;// 存图void add(int u,int v,int w) { ver[++tot] = v; edge[tot...

2019-05-03 19:45:17 713

原创 并查集模板

1.合并2个点时,可以判断2个点是否属于一个联通分量,如果不属于,那么加入该连通分量,2. 最后判断该图 有几个单独的联通分量,3. 或者将图压缩成 最小生成树时,判断每个点是否属于最小生成树中,不是就加入树中,用一个pre[i]表示点i在图中的顶点,初始化时每个点i(都是一个单独的联通分量)所以顶点就是,判断联通分量的数量也是判断pre[i] == i,合并两个u,v,一开始标记pre...

2019-05-03 10:32:26 70

原创 欧拉函数例题(poj3090)

欧拉函数例题除了(1,0)(1,1)(0,1)三个点的,发现其余可视点gcd(x,y)=1发现关于(1,1)这条线所有点都是对称的,不妨取下半部分,x<y,此时1<=x<y<=n,这就转化到求与y互质数x的个数,y有多个选择,且y>=2,最后答案从2~N累加起来求欧拉函数值,就是分解质因数的过程,1.试除法分解质因数累加和,但是只能求出 υ(n)\ups...

2019-05-02 10:21:22 1003

原创 欧拉函数性质及推导

互质gcd(a,b) = 1 则a,b互质,gcd(a,b,c) = 1 则两两互质gcd(a,b) = gcd(a,c) = gcd(b,c) = 1欧拉函数定义:[1,N)中与N互质数的个数被称为欧拉函数,记作 υ(N)\upsilon(N)υ(N)由算数基本定理知:N=p1c1∗p2c2∗p3c3∗……∗piciN = p_1^{c_1} * p_2^{c_2}*p_3^{...

2019-05-01 20:57:21 1534

空空如也

空空如也

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

TA关注的人

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