![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索
文章平均质量分 75
sdj222555
这个作者很懒,什么都没留下…
展开
-
2011 ACM/ICPC 北京赛区 J题 Gem and prince
这道题很暴力,各种搜索都能过关键是怎么搜。很重要的剪枝是开一个数组存所有颜色的个数,然后每次搜的时候相应减掉消除的个数,然后比较剩余的分数与当前最大得分,小的话直接返回。 不加这个就会TLE。然后搜索也不要很裸的每个位置都搜,应该是一块一块的搜,否则会TLE;16180247Accepted2378ms144kbG原创 2011-10-26 10:56:16 · 2386 阅读 · 0 评论 -
[Usaco2008 Feb]Meteor Shower流星雨
去年偶们湖南遭受N年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽, 届时将会对它撞到的一切东西造成毁灭性的打击。很自然地,芙蓉哥哥开始担心自己的 安全问题。以霸中至In型男名誉起誓,他一定要在被流星砸到前,到达一个安全的地方 (也就是说,一块不会被任何流星砸到的土地)。如果将霸中放入一个直角坐标系中, 芙蓉哥原创 2013-07-06 15:01:09 · 1732 阅读 · 0 评论 -
[Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏 记忆化搜索
奶牛们又在玩一种无聊的数字游戏。输得很郁闷的贝茜想请你写个程序来帮她在开局时预测结果。在游戏的开始,每头牛都会得到一个数N(1<=N<=1,000,000)。此时奶牛们的分数均为0。如果N是奇数,那么奶牛就会把它乘以3后再加1。如果N是偶数,那么这个数就会被除以2。数字每变动一次,这头奶牛就得到1分。当N的值等于1时,游戏结束,此时的分数就是这头奶牛在这局游戏中的最终得分。 以下是N的初始值为原创 2012-11-29 23:23:31 · 2857 阅读 · 0 评论 -
[Usaco2008 Mar]Cow Travelling游荡的奶牛 BFS
奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走, 试图找到整块草地中最美味的牧草。Farmer John在某个时刻看见贝茜在位置 (R1, C1),恰好T (0 < T <= 15)秒后,FJ又在位置(R2, C2)与贝茜撞了正着。 FJ并不知道在这T秒内贝茜是否曾经到过(R2, C2),他能确定的只是,现在贝茜 在那里。 设S为奶牛在T秒内从原创 2012-11-29 23:20:32 · 1687 阅读 · 0 评论 -
POJ 1077 Eight A*算法 IDA*算法 康拓展开
这道题是一道经典的搜索题第一次做A*算法的题目这道题需要知道的,第一是怎样把全排列转换为数字,第二是h函数的设计全排列转化为数字用到的是康托展开,跟逆序数有关,这是一个比较经典的转换。转换成数字的目的就是为了状态的判重,所以A*算法的空间需求总是指数级的h函数用的是曼哈顿距离的总和,然后f=g+h,g函数就是从初始状态到现在状态花费的步骤数了。然后使用优先队列,进行BFS。原创 2012-02-04 20:47:07 · 2815 阅读 · 1 评论 -
POJ 3740 Easy Finding 位运算压缩+DFS or Dancing Links
Easy Finding这道题运用二进制DFS是比较好的方法,当然还可以用dancing links,这个比较高级,先把我看别人的二进制思路然后写的代码贴上来。当然本题是体现不出DLX的高级之处的。用位运算和DLX的速度应该是相当/*ID: sdj22251PROG: calfflacLANG: C++*/#include #include #include #in原创 2011-08-18 15:34:52 · 874 阅读 · 0 评论 -
POJ 3702 Chessman 状态压缩 + 深搜
这道题是一道很好的搜索题,由于走四步会循环,所以可以压缩为0,1,2,3四种状态,判断第一个是否能转为第二个,就看两个串中这四个状态分别是否相等,如果相等,就能转化了。再者,走四步会循环,所以普通这么走肯定不行,要根据底下的走3步和走2步的特殊走法来搜索才行。这道题既可以用BFS也可以用DFS来做,相对来说,DFS更加简洁一些,/*ID: sdj22251PROG: calfflacLA原创 2011-08-19 13:00:14 · 949 阅读 · 0 评论 -
USACO Section 1.4 Mother's Milk 搜索
这道题是一个让人做完觉得很爽的搜索题,可以用深搜也可以用宽搜。 相对来说,深搜的代码量稍微小一点。 搜索策略就是模拟倒来倒去的过程,并且出现重复的没有意义。BFS版本: 我是人工写了个队列,这样比STL中的快一点/*ID: sdj22251PROG: calfflacLANG: C++*/#include #include #include #include #inclu原创 2011-08-20 10:26:53 · 950 阅读 · 0 评论 -
USACO Section 1.4 Packing Rectangles (POJ 1169)搜索
这是一个很蛋疼的搜索题,虽然题中只给了5种矩形组合方式,但是搜索时的长和宽并不是唯一的,所以就产生了很多种组合方式.需要注意的是第4种和第3种图形实际上能规划成一种。 而产生这些组合最好用的应该就是DFS了,而我当时不想动脑子,使用的就是纯枚举,巨大的代码量,最终好歹也能过了。/*ID: sdj22251PROG: packrecLANG: C++*/#include #inc原创 2011-08-20 10:37:41 · 1249 阅读 · 0 评论 -
USACO Section 2.1 The Castle (POJ 1164) floodfill
又是一道简单而又经典的搜索题,用floodfill一个房间一个房间的填充,每次都用标号标记一下,中间的围墙用二进制存储,这样搜索的时候就方便许多了。最后再扫描一遍就能得出答案,注意扫描要从左下角开始,先往上扫描,再往右扫描。/*ID: sdj22251PROG: castleLANG: C++*/#include #include #include #include原创 2011-08-20 10:51:27 · 1467 阅读 · 0 评论 -
POJ 3322 Bloxorz I BFS
一道有趣的搜索题,用广搜比较好。注意记录状态即可, 然后更新好标记数组。每次是根据方块左上角的坐标来进行操作的。判断能不能走的时候一定要注意占两个格的情况,到达终点时一定是竖起来才行,薄弱地带一定不能竖起来。队列可以用STL 也可以用数组,不过用数组的话,交到G++上,可以优化到700ms或者更少/*ID: sdj22251PROG: subsetLANG: C++*/#原创 2011-08-25 10:44:42 · 2176 阅读 · 0 评论 -
POJ 1753 位运算 + BFS
一道简单的BFS。由于只有16个点,所以只有2^16= 65536个状态。 当最终状态等于0或者65535时,即找到结果。/*ID: sdj22251PROG: lampsLANG: C++*/#include #include #include #include #include #include #include #include #i原创 2011-09-02 21:45:52 · 870 阅读 · 0 评论 -
POJ 2110 Mountain Walking 二分+搜索
看到此题,第一反应是枚举差值,然后DFS,后来一想,二分也可以,而且速度加快很多,就果断二分之了刚开始写的比较挫,直接用的差值在地图里搜,维护一个最大值,一个最小值,然后如果找不到路就回溯,这样果断TLE了。后来一想,不用这么搞,回溯太费时间了,就对每个差值,枚举下界,然后在范围内的才能走,这就不需要回溯了,就相当于最裸的走迷宫了。/*ID: sdj22251PROG: subse原创 2012-03-05 14:14:29 · 1431 阅读 · 0 评论 -
POJ 1222 EXTENDED LIGHTS OUT 枚举 || 高斯消元
题目大意就不说了,就是把棋盘上的1全变0即可如果枚举的话,看似有2的30次方中可能,其实不是。实际上只需要枚举第一行的状态即可,再往后,如果想要解决问题,必须根据第一行的状态推下去。对于每个位置,如果上一行的这一列有1,必然这个按键要按下去,不然不可能达到要求的结果。枚举代码如下,直接使用二进制枚举/*ID: sdj22251PROG: subsetLANG: C++*原创 2012-02-09 21:19:49 · 1117 阅读 · 0 评论 -
POJ 1010 1020 DFS+剪枝
之所以要写这两题的解题报告,原因就是这两题是比较好的搜索题,必须记录一下。另外,最近做题状态也不行,看见题目后没想法,然后看别人解题报告了,突然发现自己想过这方面,但是没深入去想,然后就做不出来了。1.POJ 1010 题意晦涩难懂。从网上找了一个稍微能说清楚的题意 题意: 给出n种邮票,每种邮票有自己的面值(面值可能重复) 指定m种“总面值”,对每种“总面值”,原创 2012-02-08 00:36:58 · 2544 阅读 · 0 评论 -
POJ 1129 Channel Allocation 平面图染色问题
这题大意就是,给出一个平面图,对顶点进行染色, 相邻顶点是不能用同一种颜色。由四色定理,我们知道任何平面图的色数是不超过4的,所以运用这个进行暴搜,当然这题的数据不强,DFS或者贪心搞都能过/*ID: sdj22251PROG: subsetLANG: C++*/#include #include #include #include #include #includ原创 2012-01-23 19:13:36 · 922 阅读 · 0 评论 -
[Usaco2008 Dec]Patting Heads
It's Bessie's birthday and time for party games! Bessie has instructed the N (1 <= N <= 100,000) cows conveniently numbered 1..N to sit in a circle (so that cow i [except at the ends] sits next to cow原创 2013-07-06 16:19:30 · 1837 阅读 · 0 评论