题目:http://poj.org/problem?id=3182 题意:一个棋盘中间有一个联通块,给你一个起点让你从起点开始绕联通块外围一圈并回到起点,求最小步数. 分析: 首先根据数据的范围比较小,所以觉得应该是搜索,而且是BFS. 朴素的想法是从起点开始BFS 8个方向扩展,不过这样肯定要跪. 注意到这个题目的特点:路径要围一个联通块,而我们一般做的BFS是从一个起点到终点,这之间可以转化吗? 当然可以,围起联通块相当于从联通块边界上一点出发向两边BFS到起点!!!!! 具体实现的话,可以…
http://www.lydsy.com/JudgeOnline/problem.php?id=1656 神bfs! 我们知道,我们要绕这个联通的树林一圈. 那么,我们想,怎么才能让我们的bfs绕一个圈做bfs呢 我们可以这样:从联通的任意边界点引一条交边界的射线. 为什么呢?因为这样当我们的bfs到这条射线时,我们可以不向射线拓展! 可是我们考虑的是绕一个圈,那么我们要考虑从另一个放向到达射线的情况(即饶了一圈后到射线我们要考虑拓展) 这样我们就能保证绕了联通块一圈,然后是最短距离 具体细节看…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1656 题意: 给你一个n*m的地图,'.'表示空地,'X'表示树林,'*'表示起点. 所有'X'为一个连通块. 对于每一个点,你可以向周围八个方向走,均算作一步. 让你找出一条路径,能够将所有'X'包围. 问你路径最短为多少. 题解: bfs + 射线法. 找出最上面(x坐标最小)的一个'X',并向上方作一条射线,标记为'#'. 从起点开始bfs,并且不能穿过射线(即'#'不能到达).…
  题目大意:一个n*m的图中,“.”可走,“X”不可走,“*”为起点,问从起点开始绕所有X一圈回到起点最少需要走多少步. 一开始看到这题,自己脑洞了下怎么写,应该是可过,然后跑去看了题解,又学会了一个新姿势... 上图是样例,红色笔迹是走法,需要走13步. 这显然是bfs题,问题是怎么让bfs绕这坨东西一圈,非常巧妙的思路,从任意一个X节点画一条射线与边界垂直,如下图所示. 当我们从右向左bfs的时候碰到这条线,就停止bfs:当我们绕了一圈从左向右bfs的时候碰到这条线,我们就继续走. dis…
Description The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders: how far is it to walk around that grove and get back to my starting position? She's just sure there is a way to do it by…
The Grove Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 904   Accepted: 444 Description The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders: how far is it to walk around t…
概要: 我们在初始状态要到达终止状态可以沿着同深度的向下搜索,这样范围覆盖更广,在解的深度较小的时候十分适用. 技巧及注意: 所有状态在转移后如果要打标记一定要在进队列前打!不要在出队列才打!否则就是tle的后果! bfs很多技巧啊,我来一一列举吧: 注意:存bfs状态时一定要尽量小化状态,只存有效的信息来进行bfs,而不要存整个图进去(QAQ,noip就是这样挂的.当时太弱..),对于有连续性的信息,我们只需要维护那一段连续信息即可,如中秋节模拟赛之冷月葬花魂(被虐瞎)中的小岛的贪吃蛇 has…
1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 186  Solved: 118[Submit][Status][Discuss] Description The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
今天是赵和旭老师的讲授~ 背包 dp 模型 背包 dp 一般是给出一些“物品”,每个物品具有一些价值参数和花费参数,要求 在满足花费限制下最大化价值或者方案数. 最简单几种类型以及模型: 0/1背包: 完全背包: 多重背包: 01背包 状态设置:dp [ i ][ j ] 表示前 i 个物品花了 j 的花费能选出物品的最大价值是多少: 状态转移方程: 如果我们选了第 i 个物品,那么前 i-1 个物品只能花 j - w [ i ] 的钱,再加上这个物品本身的价值: 如果我们不选的话,那么花费和前…
DP&图论  DAY 2  下午 基础树形DP 前言◦ 1:与树或图的生成树相关的动态规划.◦ 2:以每棵子树为子结构,在父亲节点合并,注意树具有天然的子结构.这是很优美的很利于dp的.◦ 3:巧妙利用Bfs或Dfs序,可以优化问题,或得到好的解决方法.◦ 4:可以与树上的数据结构相结合.◦ 5:树形Dp的时间复杂度要认真计算,部分问题可以均摊复杂度分析.◦ 6:一般设f[u]表示u子树的最优价值或者是说方案数.◦或者f[u][k]表示u子树附加信息为k的最优值,往往是通过考虑子树根节点的情况进…
上午讲数位dp和背包问题. 先讲背包: 完全背包:换了个顺序: 多重背包: 多重背包优化: 这样把每个物品分成这些组,那么把他们转变成不同的物品,就变成了01背包问题: 滑动窗口取最值问题.单调队列优化. 方法很简单,枚举每一组中的其中一个物品计算即可. 小技巧: 有些懵... : 终于,到了数位dp环节:(恶心了一上午.) dp方法: 判断上界. 假如我们要枚举到2147,当前已经枚举到了第二位,如果枚举到了1,那么我们说他达到了上界,下一位只能从0枚举到4.如果这一位是0,由于不管下一位是多…
前言 1:与树或图的生成树相关的动态规划. 2:以每棵子树为子结构,在父亲节点合并,注意树具有天然的子结构.这是很优美的很利于dp的. 3:巧妙利用Bfs或Dfs序,可以优化问题,或得到好的解决方法. 4:可以与树上的数据结构相结合. 5:树形Dp的时间复杂度要认真计算,部分问题可以均摊复杂度分析. 6:一般设f[u]表示u子树的最优价值或者是说方案数. 或者\(f[u][k]\)表示u子树附加信息为k的最优值,往往是通过考虑子树根节点的情况进行转移 树上最大独立集 给你一棵大小为n的树,求这棵…
意甲冠军:给定一个N*M图.,间'X'代表树木(树木必须汇集到森林,非分离),然后,'.'它代表的空间.'*'它代表的起点.现在它需要从起点.一圈,最后回到起点,所经过最少点数. 题目中给的'+'就是当中一种最短路径. 题解:随便找一条经过森林且不经过起点的直线,可证路径一定会穿过这条直线.那么就在这条直线上枚举一个点,做两遍BFS,求其从分别直线两側出发到起点的最短距离. 在这里说一个推断边界的简单方法,就是先给图里每一个点打上标记.详见代码里'in'数组.in值为0的自然就不再里面,而没有必…
1667: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛 Description 经过跟Farmer John长达数年的谈判,奶牛们终于如愿以偿地得到了想要的旱冰鞋.农场上大部分的区域都很平整,适合在上面滑动,但有一些小块的土地上有很多的岩石,凭奶牛们的旱冰技术,是没有办法通过的. 农场可以看成一个被划分成R(1<=R<=113)行C(1<=C<=77)列的矩阵.快要开饭了,贝茜发现自己在坐标为(1,1)的格子里,并且她想赶到坐标为(R,C)的牛棚去享用她…
P2864 [USACO06JAN]树林The Grove(bfs) 题面 题目描述 The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders: how far is it to walk around that grove and get back to my starting position? She's just s…
思路:如果要围绕一圈,必须经过一条竖线上的一点,把竖线左端封住,bfs一次,枚举点,再把竖线右端封住,再bfs回起点. #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn=5e1+9,inf=1e9; char a[maxn][maxn],now[maxn][maxn]; int dist[maxn][maxn],d[maxn][maxn…
题意: 有n个城市 m条边,每条边的权值为1,每个城市生产一种商品(可以相同,一共k种),求出分别从每个城市出发获得s种商品时所走过路的最小权值 解析: 我们倒过来想,不用城市找商品,而是商品找城市,求出每个商品到达每个城市的最短路,w[i][j]即为生产商品j的城市到达城市i的最短路,最后对于每个i排序w[i] 取前s个小的即可 #include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) using namespace…
1选课问题 Leetcode上有这样一道题:有代号0,1,2……n-1的n门课程.其中选择某些课程需要另一些课程作为前提条件.用一组pair来表示这些条件:[1,0],[1,2],表示如果要选修课程1,必须先选修课程0和课程2.问是否可能把这n门课程都选修一遍. 这个问题看起来相当复杂.难点在于,一门课程可能需要多门课程作为前提条件,这样就很难找到一条可以不重复地遍历所有课程的方法. 比较笨的方法就是先找出那些不需要前提条件的课程,然后由他们出发将那些只需要他们作为前提条件的课程修完.再循环往复…
题目地址 题意可理解为我们有一些给定的元素,要用它们组成数,如果一个长度(x)所有组成的数都不是给定的另一个数(n)的倍数,并且长度为x的数中有模n的不同于长度小于x的数模n的数,那么继续延长这个数的长度.这样进行到无法进行下去时,就是要输出0的情况,中途如果找到了n的倍数,就直接返回输出.题目比较关键的是我们只需关注模n意义下的情况,这样就省略了很多细枝末节没有影响的数,并且有效的控制了数的大小,使之在我们可以接受的范围内. #include<cstdio> #include<cstr…
题目链接:http://vjudge.net/contest/132239#problem/A 题目链接:https://uva.onlinejudge.org/external/116/11624.pdf <训练指南>P307 分析:只需要预处理每个格子起火的时间,在BFS扩展节点的时候加一个判断,到达该节点的时候,格子没有起火. 写法很巧妙,两次BFS类似,数据加一维kind,表示Joe到达该点和火到达该点. #include <bits/stdc++.h> using nam…
这道题目甚长, 代码也是甚长, 但是思路却不是太难.然而有好多代码实现的细节, 确是十分的巧妙. 对代码阅读能力, 代码理解能力, 代码实现能力, 代码实现技巧, DFS方法都大有裨益, 敬请有兴趣者耐心细读.(也许由于博主太弱, 才有此等感觉). 题目: UVa 1103 In order to understand early civilizations, archaeologists often study texts written in  ancient languages. One…
字符串搜索中,BFS算法很巧妙,个人认为BFS算法效率是最高的. [StringSearch]就是根据BFS算法并优化. 使用方法: string s = "中国|国人|zg人|fuck|all|as|19|http://|ToolGood"; string test = "我是中国人"; StringSearch ss = new StringSearch(); ss.SetKeywords(s.Split('|')); var allss = ss.FindAl…
题意:自己看吧(不是很好说) 分析: 网络流:最大权闭合子图. 思路如下: 首先将点分为3类 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分) 第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费) 第三类:对于10种字符拆出10个点,每个点的权值为  -(b[x]-a[x]) 那么我们可以得到一个关系图 ,对于第一类中的点Pij,如果想要选择Pij,你就必须要选中第二类中的点i和j,对于第二类中的点…
charge-station Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 617    Accepted Submission(s): 310 Problem Description There are n cities in M^3's empire. M^3 owns a palace and a car and the pal…
The Grove Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 641   Accepted: 297 Description The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders: how far is it to walk around t…
1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样,选择最短路. 贝茜所在的乡村有R(1<=R<=100,000)条双向道路,每条路都联结了所有的N(1<=N<=5000)个农场中的某两个.贝茜居住在农场1,她的朋友们居住在农场N(即贝茜每次旅行的目的地). 贝茜选…
Nearest number - 2 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3943 Accepted: 1210 Description Input is the matrix A of N by N non-negative integers.  A distance between two elements Aij and Apq is defined as |i − p| + |j − q|.  Your p…
1715: [Usaco2006 Dec]Wormholes 虫洞 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 501  Solved: 278[Submit][Status][Discuss] Description John在他的农场中闲逛时发现了许多虫洞.虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前).John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞.其中1<=N<…
1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 432  Solved: 270[Submit][Status] Description The cows are having a picnic! Each of Farmer John's K (1 <= K <= 100) cows is grazing in one of N (1 <= N <= 1,000)…