- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 POJ 3414 倒水(BFS+标记路径)
每日打卡(1/1)传送门:点击打开链接题目大意: 瓶子1能装a升水,瓶子2能装b升水,问要装c升水最少要几步?题解: 明显的BFS,其中需要注意的地方就是记录路径。 在结构体中设置一个node *pre,pre指向之前访问的操作,而结构体数组t也是BFS中一个比较新颖的操作。代码:#include<iostream>#include<cstdio>#i...
2018-02-27 20:49:22 242
原创 POJ3126 素数路径(BFS)
每日打卡(1/1)传送门:点击打开链接 题目大意:输入一个素数,变换到另一个素数,但期间一次只能改变一个数字,并且改变数字后的数依然是素数。题解: 主体是BFS,先用欧拉筛法把素数表打出来,然后依次修改每一位数,判断修改后的数是否为素数。#include<iostream>#include<cstdio>#include<cstring>#in...
2018-02-26 20:52:59 484
原创 Codeforces Round466 B(暴力)
每日打卡(2/2)传送门:点击打开链接题目大意:将一个数n转化成1,可以有两种操作:(1)n减去1,这需要花费a;(2)n/k,当且仅当(n%k==0)可以实行,这需要花费b请问:将n变为1,最少需要花费多少?思路: 对于一个数x,如果可以整除k,那么需要比较一下(n-1)*a和b的大小,哪个小用哪个; 如果不能整除k,就比较一下到下面一个能整除k的数需要花费的值。附代码:#inclu...
2018-02-25 22:14:20 159
原创 POJ 1426 (BFS)
每日打卡(1/2)传送门:点击打开链接题目大意: 寻找一个是n(1 <= n <= 200)的倍数的整数,并且这个整数只能由1和0组成。思路: 首先,n是一个不小于1的数,假设最终求得的数是m,那么m必然第一位是1. 确定了首位后,出现两种情况:11和10,这时候用一个bfs/dfs就可以解决,为了保险起见写了BFS。在每种情况下用m%n,如果结果为0可以直接输出。...
2018-02-25 18:53:50 156
原创 POJ3279 翻硬币(状态压缩DFS)
每日打卡(1/1)传送门:点击打开链接题目大意:一个n*m的矩阵翻硬币,翻一枚硬币会涉及周围四个,求将所有硬币正面朝上最少需要翻哪几个硬币。思路: 与之前一题求最少要翻多少次不一样,这次要记录状态。 首先我们先想到枚举第一排的翻法,然后对其他排时,只要上面一个硬币是反面朝上就翻,最后check一下。第一个比较值得学习的地方就是如何枚举第一排的翻法: for(int i=0;i&l...
2018-02-24 23:13:02 390
原创 POJ3278 农夫找牛(BFS)
每日打卡(1/1)传送门:点击打开链接题目大意:农夫在位置n,要去位置k。只能去前后两格或者到2*x(x为当前位置)的去,问到k最少要多少步。由于思维惯性,看见暴力题第一反应是DFS,结果搜了半天搜不出来,其实这是可以预见的,仔细想想就可以知道DFS的上界不好确定,大大加大了搜索的深度。所以,正确做法就是------------BFS!一个与二维图不太一样的地方就是,从当前节点到下一节点的过渡,可...
2018-02-23 21:43:31 1261
原创 POJ2251 3D迷宫(BFS)
每日打卡(2/2)点击打开链接题目大意: 一个三维的迷宫,给定起点和终点,求最短路径。 ps:长宽高均不超过30思路1: 首先想到DFS,只是第一次写三维的DFS,感觉和二维没什么不一样。#include<iostream>#include<cstdio>#include<cstring>#include<string...
2018-02-22 21:09:05 283
原创 POJ1321 棋盘摆放问题(DFS)
每日打卡(1/2) 传送连接:点击打开链接题目大意: 给你一个n*n的棋盘,其中只有标#的格子能放棋子,且两个棋子不能位于棋盘的同一行或同一列,要求摆k个棋子,求方案数。大致思路: 裸DFS,和n皇后思路相同。以行数作为基准,如果当前列有符合要求的格子,可以采取放或不放两种方法,最后求和。#include<iostream>#include<cstdio>...
2018-02-22 12:39:31 325
原创 hdu1754 单点更新+求区间最值(线段树)
与前几题不同,此题需要维护的是区间的最大值。 简单的说,单点更新时,在递归回溯的时候要push_up,更新区间的最大值。 没有懒惰标记,查询就是用ans和覆盖区间tree[x].maxn去比大小。算是线段树的裸题了。#include<iostream>#include<algorithm>#include<cstdio>#include...
2018-02-13 23:19:47 192
原创 hdu1968 区间更新+区间求和(线段树)
这次是把某个区间全部更新为一个值,而不是增加或减少。最后询问一下区间总和。 思路还是差不多的。在更新时,当我们将一个节点所维护的区间更新后,可以用这个区间的长度*新的值,即 tree[x].sum = (tree[x].r-tree[x].l+1)*tree[x].data。 在查询或更新区间时,可以将tree[x].data作为懒惰标记继续往下传...
2018-02-13 23:03:11 815
原创 POJ2777 区间更新+区间询问(线段树)
此题与前两题不同。题意是将不同区间覆盖成不同颜色,在查询区间的时候询问共有多少种不同的颜色。 大体思路是这样的: 在结构体内记录当前树的双子节点,所染的颜色color,以及flag标记。在更新时,用flag来标记当前节点是否为最新一个被更新的节点,并且更新color值。在查询或更新时,flag可以看成为懒惰标记,如果存在的话,变将color和flag标记往下传,并将当前节点...
2018-02-13 22:57:24 161
原创 POJ3468 区间更新+区间查询(线段树)
与种花那题不同,此题区间内每一个数不止+1,而是+任意一个数。 只要将update操作中,增加一个参数即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<stdlib.h>#include<cmath>usin...
2018-02-13 22:42:56 300
原创 TSOJ1352 线段树区间更新+区间查询
从大前天开始系统的学习了一下线段树,总结了一些技巧,刷了几道题- - 话不多说,开始表演。 题目大意是初始区间为1,给定区间【l,r】,区间每个数+1。再给m个询问,询问【l,r】区间的和。 建树。(用模板) 对于区间更新,我们可以先不更新子区间的值,而是加一个懒惰标记。若更新或查询的是子区间的话,就把懒惰标记往下传,并清空当前节点的标记,再依次push up。 ...
2018-02-13 22:40:38 186
原创 关于用搜索方法求解联通块问题
点击打开链接题目描述有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。输入输出格式输入格式:输入的第1行为两个正整数n,m。下面n行,每行n个字符,字符只可能是0或者1,字符之间没有空格。接下来m行,每行2个用空格...
2018-02-06 22:24:52 825
matlab中jpeg tool box(tbx)编译好的mexw64文件
2018-04-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人