自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aozil_yang的博客

点滴记录,记录成长,帮助你我!

  • 博客(12)
  • 收藏
  • 关注

原创 POJ 1077 Eight (正向BFS + 康托展开)

题意不说了 八数码问题:和上篇博客 HDU 1043  题目是一样的!但是做法上有些出入。HDU 时间限制比较长,而且是多组输入,所以要逆向bfs 进行打表处理。而POJ 1077 这个题目,时间是1S ,单组输入。因此输入一组 搜索一组即可。9个数的排列  判重用康托展开来做。但是这个队列要自己写,STL的queue 会超时。自己写的队列,在输出时 能很方

2017-01-24 16:25:24 757

原创 HDU 1043 Eight ((八数码问题)逆向BFS + 康托定理判重)

题意不说了,就是一个八数码思路:很暴力,直接把空格看成0,然后把九个数字连接起来,用这个数来代表这个状态。然后正常来想这个题目时,肯定是 从给定状态到目标态来bfs搜索,但是这样做死活爆内存 (好难受= =)我们需要转个弯,从目标态向给定态搜索,这样可以直接预处理打表了。正好这是一个9个不同数字的排列,用康托定理完美去重。注: 用c++交的,G++还是爆内存= =#in

2017-01-23 21:58:55 795

原创 例题7-7 UVA 1354 Mobile Computing (搜索+二叉树(类哈夫曼树))

思路:想一想就可以知道,一个结点要么有两个儿子,要么没儿子。那么这就很像哈夫曼树,因此我们可以枚举所有的哈夫曼树(任意枚举两个不同的结点来合并)然后从根结点开始遍历二叉树,在遍历的同时,来枚举左边 和右边的最大值。然后R-L 便是这个二叉树的宽度。更新一下答案即可!有一个小小的坑把,没注意到:就是只有一个砝码的时候,答案应该是0 不是-1.想一想还是很实际的:只

2017-01-22 16:17:21 404

原创 例题7-5 UVA 129 Krypton Factor (困难的串,搜索)

题意:给你n 和l ,求出按字典序来算第n小的由前l 个字母组成的困难的串,如果一个字符串中包含两个相邻的重复子串,那么是容易的串,否则是困难的串。思路:直接搜索即可!当枚举到第c 位时,我们只需要判断后缀是否重复即可,因为前面的都已经判断过了。另外如果一个字母一个字母枚举的话,那么就已经保证了字典序的顺序了,无需在排序了。输出格式注意下即可。#include #incl

2017-01-20 14:02:00 417

原创 例题7-4 UVA 524 Prime Ring Problem

题意:给你数字n ,求的一个1~n 的数字环,使得任意相邻的数的和为素数! 打印所有解。思路:直接素数打表判断素数,回溯法暴力每一个位置的每一个数即可。#include #include #include #include #include using namespace std;unordered_mapmp;int vis[100];void init(){

2017-01-20 13:13:15 279

原创 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) -- C. Felicity is Coming! (STL水过)

大体题意:有n 个体育馆每个体育馆里有 不同的精灵同样数字的精灵进化的结果是一样的不同数字进化的结果一定不同有多少个不同的进化方法使得每个体育馆进化后 和原来一样?思路:两个精灵可以互相进化的话,那么它们两个在所有的体育馆的数量和位置都必须一样。这样找出同类的所有数量后,求阶乘即可,因为它们内部随便排列都是合适的。然后把所有的阶乘乘起来即可!思路明确后,方法就很多了! 就随

2017-01-13 18:32:40 833

原创 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) -- B. Bash's Big Day (唯一分解定理)

大体题意:给你n 个数,让你选出尽可能多的数来,使得gcd(x1,x2,x3,,,xn) != 1; 输出最大数量?思路:思路比较偏比较麻烦,参考一下把!gcd不是1的话,说明它们有共同的质因子!数据范围是 每个数都是10W以内!  素数也就1W个因此我们可以给每一个数进行质因子分解。给分解出来的质因子p   统计一下,vos[p]++,表示有一个数 是p这个素因子。

2017-01-13 18:19:47 497

原创 URAL 1081 Binary Lexicographic Sequence (递推 + 递归)

大体题意:定义一个合法的二进制序列为序列中没有两个1是相邻的,对于所有长度为n的合法序列按照字典序排序后(保留前导0),求第K大的串是多少?思路:我们先得求出一个n位的合法二进制的个数是多少!f[1] = 2;f[2] = 3f[3] = 5f[4] = 8这几个很容易算出来,然后我们就很明显的发现规律了,这是一个斐波那契数列!其实想一想确实这个样!你构造第

2017-01-12 15:37:12 366

原创 POJ 2790 Consecutive ones (搜索 + 剪枝)

大体题意:给你一个n*m的0-1矩阵(n,m 思路:因为保证了答案唯一,所有正解只有一个,因此不合法的情况会有很多,因此我们可以考虑 搜索 + 剪枝的方案。矩阵只有0 和1 因此一个位置要么填0要么填1,这两种方式都考虑到剪枝就可以很轻松的过了!最先想到的肯定是枚举列,在枚举每一行检测是否合法!剪枝方法:如果这一列这一个位置是1的话,那么前面的一个位置也必须是1,否则就

2017-01-11 14:23:02 343

原创 ZOJ 2642 Feel Good (单调栈)

大体题意:给你n 个数,要求找一个区间[l,r] 使得区间中的最小值 × 区间和 的值最大?思路:直接单调栈即可!枚举每一个数作为最小值,找到 la[i]和ne[i]即 前面的边界和后面的边界!枚举更新一下答案即可!注意开long long#include #include #include #include using namespace std;cons

2017-01-11 07:53:26 393

原创 POJ 1267 Fence(几何 + 二分)

大体题意:给你n 条木棍,要用它们组成凸多边形,每个木棍都要用上,使得面积最大,数据范围3 如果不存在的话,要输出0.00.(结果保留两位小数)思路:首先这个题目得知道,固定边长的多边形面积最大是 圆内接多边形!参考网站:点我打开网站是然后思路是很明确的,我们直接二分枚举圆的半径R,然后判断那n 个边是否能放在这半径为R的圆里面。判断方法:你可以把根据圆的半

2017-01-10 14:53:54 578

原创 Uva 10288 Coupons (概率dp)

大题题意:一共有n 种不同的优惠券,每次得到每种优惠券的概率相同。问期望多少次可以得到所有n 种的优惠券,以带分数的形式输出!思路:这个题 用dp思想比较好理解一些!令dp[i]表示已经得到了 i种优惠券!那么dp[i]的转移可以来自i-1种的情况得到一种新的种类!也可以来自i种 得到了一种原来的种类!在+1即可!即:dp[i] = dp[i-1] * (n-i

2017-01-09 18:36:17 354

空空如也

空空如也

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

TA关注的人

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