模拟
文章平均质量分 71
流年冲淡时光
这个作者很懒,什么都没留下…
展开
-
UVA529加深迭代搜索,起点为1,终点为n,数列中的每个数由前面俩个数的和组成的最短数列
看到最短就应该想到bfs,然而并不行,这题是加深迭代搜索,控制深度,这里深度我试着用30,29,40前面俩个可行,最后一个WA了,自己感觉最后提个应该不是WA,而是T,系统给了WA。注意这里最大的一个剪枝,就是如果一个数翻ans-cur倍仍然小于n,这个数肯定不行。具体细节看代码:#include#include#include#include#include#include原创 2015-11-02 12:41:36 · 394 阅读 · 0 评论 -
UVA131德州扑克之枚举子集
这题就是一个德州扑克的题目,主要是代码写的比较繁琐,可能我写的又繁琐了一点,转化成十张牌之后然后枚举五的子集,然后从剩下五张牌,牌顶拿牌,这样操作一次,让自己的牌最大,这里我比较牌的大小的时候排了一下序便于判断顺子和同花,然后对子和炸弹什么的判断我写的稍微有些繁琐,不过我的思路是很简化的。#include#include#include#include#include#i原创 2015-09-17 20:02:31 · 512 阅读 · 0 评论 -
HDU5495求俩个1~n的数列按照相同的规则重排后的LCS
这题智商低,想了很久没有想到怎么做,其实想通了很简单,由于俩个数列都是1~n的排列,所以在每个位置的a[i]和b[i]建一条边,然后通过样例可以很明显看出来,建边之后会形成n多个环,而每个环视相互独立的,对于长度大于1的每个环都可以以牺牲一个值得代价取得最长公共子串。总有那么些巧妙地题是我这种智商低的想不到的。#include#include#include#include原创 2015-10-04 03:22:07 · 853 阅读 · 2 评论 -
UVA193图染色问题
这题是一个简单题,可是有个地方我不太明白,我的递归刚开始好像写残了,写成这样就不对: if(ok) { vis[u]=1; dfs(u+1,sum+1); vis[u]=0; } vis[u]=-1; dfs(u+1,sum); vis[u]=0;当时不知道怎么想的,黑的标记成1,白的标记成-1,然原创 2015-10-03 22:38:58 · 513 阅读 · 0 评论 -
UVA10001按照一定的规则三位一体转化字符串,给定字符串看能否转化出
这题重点就是题意很难理解,表示以我没有过四级的水平并不能理解,只能看了下题解:刚好有位大神写的比较详细,copy一下,原文地址:http://www.cnblogs.com/staginner/archive/2011/09/07/2169351.html这个题目大致的意思是这样的,一共有这样256个自动机,它们可以依据一个字符串当前的状态,并将其按某种法则转化成一个新的字符串,题目的原创 2015-10-03 16:41:37 · 549 阅读 · 0 评论 -
UVA208在一个图中,给定终点和起点,搜索路线,巧妙剪枝
这题貌似后台数据都是比较密的图,所以暴搜的话必定会T,这时就要加强剪枝,想了一会,也试了几发,没有找到正确的剪枝姿势,一直T,后来看别人的,是开了数组预处理下,从终点开始求连通块,因为必须和终点在一个连通块才能到达,然后就可以搜了,这个剪枝刚开始其实有想到,但是想错了,我想的是正反同时搜索,然而并不能实现,能想到用连通块去预处理也是挺巧妙的,另外这题还有一个坑点,题中并没有说要按字典序原创 2015-10-04 00:20:51 · 749 阅读 · 0 评论 -
UVA165连续邮资问题
这题由于大神题解写的比较详细,所以copy一下,原文链接:http://blog.csdn.net/shuangde800/article/details/7755452题目大意:某国家发行k种不同面值的邮票,并且规定每张信封上最多只能贴h张邮票。 公式n(h,k)表示用从k中面值的邮票中选择h张邮票,可以组成面额为连续的1,2,3,……n, n是能达到的最大面值之和。例如当h=3,k原创 2015-10-02 22:12:31 · 665 阅读 · 0 评论 -
UVA565订披萨,每个人提几个条件,至少满足每个人的一个条件的方案
这题,虽然简单,但是毕竟本人比较渣,说一下心酸历程,看到这题想了下就去敲代码,各种找bug,AC不了,然后就去参考别人的代码,发现别人都是用位运算来做的,当然位运算的做法比较巧妙,然后就模仿着写了一发位运算的,然后AC,然后总感觉我一开始的代码能AC,就继续找最开始的代码的bug,随便除了组样例,竟然阴差阳错的找到了bug,然后迅速的改了就AC了,慢慢的都是心酸,但至少我的提交在VJ上原创 2015-11-03 22:35:29 · 466 阅读 · 0 评论 -
UVA331求排序过程交换次数最少的种类数
这题估计是D了一天的BUG,头有点晕了,第一发看到过的人挺多的,以为有规律,自以为是的按照规律交了一发,结果WA掉,然后老老实实写递归,想的是xian原创 2015-10-02 12:46:16 · 537 阅读 · 0 评论 -
UVA10012把圆放进矩形的底部求矩形的最短长度
这题刚开始做的时候,想都没想就直接敲了一个求排列后直接按照每个圆和前一个圆相切的思路算了一遍,果断WA了,然后想了想,一个很大的圆可以挡到很多小的圆,然后想了很久不知道怎么写了,然而实际上也很简单,记录每个圆的横坐标,每放一个圆,求这个圆的最长的坐标,即这个圆分别与前面的圆相切的坐标和这个圆的半径比较取最大值,这样就不需要去确定左边界了,直接可以求出长,就是计算每个点的横坐标加上半径取原创 2015-10-02 15:11:44 · 501 阅读 · 0 评论 -
HDU5482给大小为k的字符集,求长度为n且有m个非空字串的串数目,构造
这题,起初看题解,以为要求贝尔数,后来看大神的代码看了很久很久才发现,并不是求什么贝尔数,什么斯特林数,就是一个构造题,记住一句话,名字只是一个代号。然后大神的代码,由于自己太弱,也看了很久很久才看懂,解释下各个变量的意思,sum数组:字符串长度为n且有s个不同字符构成的子集数目为t的串有多少。a数组是你要构造的长度为n的串,每一位都是一个数字,可能相同可能不同,取决于下面的最后面原创 2015-10-01 19:57:45 · 887 阅读 · 0 评论 -
小白书隐式图搜索之八数码问题
这题也是一个隐式图的问题,bfs即可,既是简单bfs的结构体办,用一个二维数组去存储每次可到达的点的状态,这题既是一个二维数组去存储九个数的状态,另外记得要写初始化函数look_up_table()和判重函数insert(),(即简单那bfs中的vis数组),俩个条件均满足方可插入队列,由于要存储状态这里用数组去代替队列更容易,而且可以增加二维数组的第二维的维数用来存储距离或者父节点原创 2015-09-14 19:59:30 · 741 阅读 · 0 评论 -
UVA10123木板上放石头使木板平衡,递归加强剪枝
渣渣表示物理没学好,读完题的第一感觉是题意读错了,又反复读了好几遍,才感觉没读错,只不过物理没学好,感觉取一个石头是不可能平衡的,然而是可以的,因为有俩个支点,又不是一个,然后怎样去保持平衡,以左边支点分析,右边支点忽略,如果左边的力矩大于右边的力矩加上1.5乘于木板的总重量,这里为什么要加这个东西,不理解,后来想了很久,另外咨询了我们班学霸,这里相当于把木板的总重量抽象为在木板中原创 2015-10-06 23:27:26 · 546 阅读 · 0 评论 -
UVA1973*3用七个碎片拼成正方形,正方体的旋转和平移,即矩阵变换
状态搜索题,重点不是状态,而是这道题的代码,以及空间想象能力,当然,做个几个星期,以我的水平也不见得做的出,看了一下别人的代码和题解,基本上理解了,这里先讲一下,正方体的变换:1、首选我们要根据碎片,求出所有碎片的不重复的三维构形,可以推论得到碎片的最多不同构形有6*4=24种,其中6表示,无论是碎片还是立体都会有6个面,依次使6个面朝向自己,这样相当于有6种不同的旋转方式了(对于原创 2015-10-09 21:52:51 · 1318 阅读 · 0 评论 -
BC#62C题求二叉树不同节点数的子树的个数
这次只做了俩道题,而且A题WA了2发(然后突然发现仅仅是数组开小了,hash表要开到2000),B题WA了四发(考虑清楚各种特判就行了),室友和我一起做的,他以前是搞acm的,但好久不搞了,虽然比赛的时候也只做出俩题,但是排名在我前面,而且比赛后还做出了第三题没有看题解,这难道就是智商压制么,汗颜啊。C题其实只要从二叉树最后面往前递归,把数组加入set,即可实现判重,注意每层的节点数目原创 2015-11-01 19:57:14 · 735 阅读 · 0 评论 -
UVA519拼图游戏
这题刚开始不懂题意,不懂样例怎么回事,只能百度看别人了,代码看懂了才理解样例怎么回事,原来输入的n,m是指拼图,不是指拼好的图的行列数,而是指拼图的个数,这题直接爆搜肯定不行,要加剪枝,主要就是剪枝怎么加,先判断每面的F是否等于每面的长,和每面的O和I是否匹配。然后爆搜判断是否相匹配就行。#include#include#include#include#include#inc原创 2015-10-30 20:20:27 · 415 阅读 · 0 评论 -
UVA307把n个剪断的木棍还原,暴搜
暴搜真的是一门很深的学问,比如这个题,其实想了很久,并没有什么思路,因为如果你单纯的去想的话就会发现可能会存在很多种可能性,这时如果时间允许的话,就可以暴搜所有答案,但是一般需要加剪枝,不然就太水了。下面说下几个重要的剪枝:1.把所有木棍的长度从大到小排列,组合木棒时优先使用长的木棍,这样可以加快组合速度,并且对后面的剪枝有帮助。2.木棒的长度一定是大于等于最长木棍的长度并且小于等原创 2015-10-13 19:35:21 · 958 阅读 · 0 评论 -
UVA639八皇后变形式之中国象棋盘上放車
这题数据最大只有4X4,很显然暴力回溯搜索就行了,刚开始自己想的是写一个递归,递归下标搜索,然后用一个临时的二维数组调用,但是失败了,函数貌似不能调用二维数组。但实际上应该直接递归结果即放置的車的个数,每当搜到一个可以放置車的位置,标记,往深层递归就行了,然后注意没有返回值但是有循环的递归,递归结束了相当于这个递归完成了,可以返回了,不要条件判断什么时候返回,所以这里注意返回到上一层后原创 2015-09-24 16:19:53 · 615 阅读 · 0 评论 -
UVA31727个六边形填数a
这题暴搜加剪枝是过不了的,必须要找到规律,然而这个题找规律并没有那么容易,不是手写几个样例就能找到的,网上看别人的题解:规律如下:对于一个3*5的矩阵,它的其中一行(不一定是第一行,第二行,第三行也有可能)是{5,7,6}的分布,而剩余两行是{5,7,7}的分布规律;具体的可以百度,看别人具体的探索过程,这里不再啰嗦,贴上代码:#include#include#incl原创 2015-10-26 22:47:47 · 538 阅读 · 0 评论 -
UVA387给几个碎片去拼成一个4*4的正方形
这题就是一个暴搜,剪枝都不需要,主要需要处理的就是怎样判断一个碎片能否放进去4*4的正方形里,,其实这里也很简单就能处理,读题的时候读错了,以为碎片不用完能拼成正方形也可以,然而并不是,每一片都要用,这样还从逻辑上减少了时间复杂度,更简单一些,改下就过了。#include#include#include#include#include#include#include#in原创 2015-10-27 20:59:11 · 509 阅读 · 0 评论 -
UVA110模拟出Pascal的8个数字的排序代码插入式递归
这题刚开始没想到,实际上就是排序,一直注意神奇的Pascal代码,想找规律来着,然而并没有找到,但实际上自己想一下排序的实质是什么,就是一个一个的比较然后插入数组就可以了,然而这个题就是这样递归的,从小到大一直递归的最深层,然后从后往前一个数字一个数字的往前挪然后每挪一个数字再往下递归,递归到n就产生了一个不同的排列,就会产生不同的数组,实际上也是求排列的过程,然而当时并没有想到,然后原创 2015-09-23 22:24:39 · 465 阅读 · 0 评论 -
UVA592字符串推断题加暴力假设搜索
这题稍微有些复杂,当时想了很久没敢下手敲,主要还是代码能力不够,有了基本的思想不敢敲,而这道题实际上就是暴力搜索,因为只有五个人加上天气一共六个,直接假设就行了。这里用一个birth数组存储对话过程中曾经出现的人物。然后结果肯定是通过出现过的人物然后假设就行了。同时注意如果搜索的所有情况均不可行,说明对话有错误,即是第一种情况。此外有一种情况成立并不能说明什么,只有在所有情况下都成原创 2015-09-23 20:06:21 · 430 阅读 · 0 评论 -
UVA185map的使用
这题主要是题意不好懂,读了好久并没有读懂,后来看的题解,主要是判断这个等式按照罗马的方式时候成立,以及用数字代替等式中的字母后,时候有这样的一组或者多组成立,搜索就可以了。#include #include #include #include #include #include #include#include#include#include#include#incl原创 2015-10-12 21:31:36 · 372 阅读 · 0 评论 -
CF591CF01串的变换,找规律
这题知道应该是一个规律题,然而并没有什么卵用,规律找不到,AC不了,前面俩题手速不够快,只能掉rating。说一下这题的规律:首先只有101和010会变化,很明显可以知道,然后开个数组,记录需要变化的位置,然后每一段需要变化的01串需要交换的次数为:len+1/2;然后变化的规律:若子串长度len为奇数,即首尾数字相同的,该子串变为同样长度,与首尾数字一致的串,如101原创 2015-10-26 18:59:46 · 580 阅读 · 0 评论 -
UVA10422八个方向图形状态搜素
这题其实一开始我写的代码稍微改下就能过,浪费了好长时间,发现超过十步的判断要写在for循环里面,不然会WA,后来想了一下,应该是写在外面状态数太多,存不下会导致WA,改一下就行了。这么写时间稍微长些,但是代码简单。#include#include#include#include#include#includeusing namespace std;const int MAX=原创 2015-11-10 18:04:20 · 418 阅读 · 0 评论 -
CF581D三个矩形能否构成一个无空隙的正方形
这题又呵呵一次,自己脑子笨就讨论了所有情况,自己讨论了十种情况,貌似讨论的有点多,然后就乱了,讨论完就交了,结果终测挂了,仔细想了一下貌似把-1的情况的位置放错了,然后加了几个continue,把-1情况输出的位置换了一下就过了,还是做的少,WA的离谱。这题自己的代码写的即麻烦,又繁琐,应该是讨论的情况多了,毕竟怕错,就小心了一点,然而还是跪了,十种情况,三个长方向一致的情况,然后原创 2015-09-29 15:53:33 · 718 阅读 · 0 评论 -
小白书之隐式图的bfs
可以把三杯水各个时候的状态想象成一个点,能到达的点画一条有向边,这样就出现一个图,对这张图进行dfs,这里注意要用一个set去掉重复的状态,以免陷入死循环。同时这题用一个数组同时存储了三个杯子的状态并且顺带储存了父亲节点的状态,比较巧妙,但是好像一般bfs都是手写的队列,但是我习惯了用queue容器。#include#include#include#include#includ原创 2015-09-14 14:01:40 · 752 阅读 · 0 评论 -
UVA133循环数组加标记统计
水题,用循环数组加标记统计就可以了,注意循环数组从0开始好一些,比较容易计算。#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL __int64using namespace std;//原创 2015-08-18 18:42:13 · 434 阅读 · 0 评论 -
UVA705斜线墙内求封闭路径,矩阵扩充与转化
这题想了好久都是蒙的,完全无从下手,后来看了题解,才发现自己忽略了一个东西就是那个图,另外还理解错了题意,注意他要求的是封闭路径的长度,而不是所占的格子的数目,然后看那个图可以知道每个斜线的长度是二,套用脑子聪明的人的话就是很容易想到把矩阵扩充为原理的2倍。\ /1 0 0 10 1 1 0然后从八个方向搜,是零的都可以走,但是注意特判,原创 2015-09-01 20:20:57 · 407 阅读 · 0 评论 -
UVA101积木模拟问题,vector整体擦除和整体插入的使用
这题先是WA了三发,然后感觉不科学,看了下题解,原来自己把题意完全理解错了,重新改了下,然后莫名其妙RE一发,然后T了三发,早晨醒来去掉几个if语句竟然过了3000ms超时瞬间变成了3ms,但是我感觉就去掉了几个if语句而已对于总的时间复杂度应该没有影响的,队友告诉我去掉几个if语句相当于很大的剪枝,弱渣表示刚刚知道。看了别人的题解,感觉自己的vector代码比别人简单,思路比别人原创 2015-08-18 09:17:55 · 635 阅读 · 0 评论 -
UVA127vector套栈模拟
这题首先题意很难理解,搞了好久才基本上搞明白,然后又想怎么去敲代码,起初想的就是vector套个stack,但是写着写着写残了,就换了vector数组的写法,写了一会发现又残了,重新回头写vetocr套stack,竟然想通了,果断AC一发。卡时间过的,毕竟vector套栈,比较费时间。#include#include#include#include#include#inclu原创 2015-08-17 20:08:54 · 704 阅读 · 0 评论 -
CF574D消去n堆方格的次数
队友很随意的撸出来的,而且好像比题解的容易理解,鉴于队友不喜欢写博客,我帮他写下记录下,其实是我自己不会学习一下,感觉队友比我聪明,灵感比较多,他好像是直接计算出每一堆消去的最少次数,但是需要正反扫一次,然后找出全部的最大值即可,#include#include#include#include#include#include#include#include#includ原创 2015-08-31 14:12:05 · 435 阅读 · 0 评论 -
UVA10562n叉树递归
挺简单的一个递归,刚开始脑抽把函数变量名l,r拿来在函数里面用,改变了值,导致递归了一半就结束了,改了变量名就好了。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#de原创 2015-08-28 10:52:09 · 322 阅读 · 0 评论 -
HDU5319暴力扫加标记
其实这题看清题意的话就会知道并不存在什么最优,只要找到一个方向暴力往下扫就行了,然后加上标记#include#include#include#includeusing namespace std;const int maxn=1000000;char s[56][1000],dp[56][1000],db[56][1000];int dir[4][2]={1,1,-1,-1,1,翻译 2015-07-31 13:00:14 · 437 阅读 · 0 评论 -
UVA253正方体的旋转问题
正方体选择一个为顶面,再在剩下四个中选择一个为侧面,则唯一确定一个正方体,本题枚举24种。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace st原创 2015-07-31 12:28:41 · 602 阅读 · 0 评论 -
UVA839递归
所谓的递归即用栈而已,所以所有的用栈的形式给出的输入均可递归得到答案:#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL long longusing n原创 2015-08-26 13:05:33 · 469 阅读 · 0 评论 -
UVA327暴力讨论所有情况
这题是个水题,和UVA112一样,暴力讨论所有情况即可。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define LL long longusing namespac原创 2015-08-26 12:31:54 · 738 阅读 · 0 评论 -
UVA548递归二叉树求路径和和根据中序和后序建立二叉树
由于自己很少写递归,这题刚开始递归写了一半就放弃了,其实这个递归挺简单的,根据中序遍历和后序遍历,每步都加上根节点的和就可,到达叶子节点的时候判断下改变一下值即可。另外这题也可以建树做,后面给出建树的代码。#include#include#include#include#include#include#include#include#include#include#原创 2015-08-25 12:53:47 · 295 阅读 · 0 评论 -
UVA442矩阵乘法之求出多个矩阵相乘乘法的次数
这个题自己刚开始写的,受前面那个题的影响开了俩个栈,一个拿来存括号了,然而这个题保证输入合法,不需要将括号入栈,另外自己刚开始还重重载了矩阵赋值函数,后来发现矩阵竟然不需要重载赋值函数,不知道为什么矩阵不需要重载赋值函数。#include#include#include#include#include#include#include#include#include#i原创 2015-08-19 14:36:09 · 586 阅读 · 0 评论 -
UVA673括号匹配之vector和stack使用的时候的注意点
这题其实是一个简单题,无耐自己太笨,刚开始想投机取巧,把思路搞错了,后来直接用vector暴力模拟一发,结果无数发RE,最后发现i一直RE,强制转化为int类型即可,后来感觉自己vector写的没人别人用栈写的简单,又撸了一发stack的,然而又RE,RE无数发后,发现,stack在top之前必须判断是否非空,否则RE。贴上代码,注释部分为Vcetor写的。#include#原创 2015-08-19 11:17:04 · 533 阅读 · 0 评论