自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ONE_PIECE的专栏

Good good study

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

原创 UVA519拼图游戏

这题刚开始不懂题意,不懂样例怎么回事,只能百度看别人了,代码看懂了才理解样例怎么回事,原来输入的n,m是指拼图,不是指拼好的图的行列数,而是指拼图的个数,这题直接爆搜肯定不行,要加剪枝,主要就是剪枝怎么加,先判断每面的F是否等于每面的长,和每面的O和I是否匹配。然后爆搜判断是否相匹配就行。#include#include#include#include#include#inc

2015-10-30 20:20:27 405

原创 UVA387给几个碎片去拼成一个4*4的正方形

这题就是一个暴搜,剪枝都不需要,主要需要处理的就是怎样判断一个碎片能否放进去4*4的正方形里,,其实这里也很简单就能处理,读题的时候读错了,以为碎片不用完能拼成正方形也可以,然而并不是,每一片都要用,这样还从逻辑上减少了时间复杂度,更简单一些,改下就过了。#include#include#include#include#include#include#include#in

2015-10-27 20:59:11 499

原创 UVA31727个六边形填数a

这题暴搜加剪枝是过不了的,必须要找到规律,然而这个题找规律并没有那么容易,不是手写几个样例就能找到的,网上看别人的题解:规律如下:对于一个3*5的矩阵,它的其中一行(不一定是第一行,第二行,第三行也有可能)是{5,7,6}的分布,而剩余两行是{5,7,7}的分布规律;具体的可以百度,看别人具体的探索过程,这里不再啰嗦,贴上代码:#include#include#incl

2015-10-26 22:47:47 528

原创 CF591CF01串的变换,找规律

这题知道应该是一个规律题,然而并没有什么卵用,规律找不到,AC不了,前面俩题手速不够快,只能掉rating。说一下这题的规律:首先只有101和010会变化,很明显可以知道,然后开个数组,记录需要变化的位置,然后每一段需要变化的01串需要交换的次数为:len+1/2;然后变化的规律:若子串长度len为奇数,即首尾数字相同的,该子串变为同样长度,与首尾数字一致的串,如101

2015-10-26 18:59:46 567

原创 UVA307把n个剪断的木棍还原,暴搜

暴搜真的是一门很深的学问,比如这个题,其实想了很久,并没有什么思路,因为如果你单纯的去想的话就会发现可能会存在很多种可能性,这时如果时间允许的话,就可以暴搜所有答案,但是一般需要加剪枝,不然就太水了。下面说下几个重要的剪枝:1.把所有木棍的长度从大到小排列,组合木棒时优先使用长的木棍,这样可以加快组合速度,并且对后面的剪枝有帮助。2.木棒的长度一定是大于等于最长木棍的长度并且小于等

2015-10-13 19:35:21 947

原创 UVA185map的使用

这题主要是题意不好懂,读了好久并没有读懂,后来看的题解,主要是判断这个等式按照罗马的方式时候成立,以及用数字代替等式中的字母后,时候有这样的一组或者多组成立,搜索就可以了。#include #include #include #include #include #include #include#include#include#include#include#incl

2015-10-12 21:31:36 357

原创 HDU5501贪心加DP零一背包

这题比赛的时候有想到是DP题,但是DP有研究的少就没有去往那里想,想用其他办法做,然而并不能,写了一发暴搜,果断T,各种加剪枝,T了四发,并没有过,还是DP。题解写的很详细了,我就不多说了。题解:这道题考察的是贪心思想和动态规划。首先我们考虑,假如我们已经确定了要做哪些题目,按什么顺序做这些题目最好。假设已经确定了要做其中的mm道题,某一个方案中做题的顺序是

2015-10-11 20:22:02 596

原创 UVA1973*3用七个碎片拼成正方形,正方体的旋转和平移,即矩阵变换

状态搜索题,重点不是状态,而是这道题的代码,以及空间想象能力,当然,做个几个星期,以我的水平也不见得做的出,看了一下别人的代码和题解,基本上理解了,这里先讲一下,正方体的变换:1、首选我们要根据碎片,求出所有碎片的不重复的三维构形,可以推论得到碎片的最多不同构形有6*4=24种,其中6表示,无论是碎片还是立体都会有6个面,依次使6个面朝向自己,这样相当于有6种不同的旋转方式了(对于

2015-10-09 21:52:51 1290

原创 UVA10160在一个图中选择几个点,使得这些点加上相邻的点为这个图的顶点集

很明显爆搜一发肯定T,肯定要加剪枝,关键就在于你怎么样去剪枝,另外本弱刚开始想写一个搜索,竟然笨到这种情况不会还原vis标记数组,其实就是遇到加一,还原减一,而不是简单的等于0和等于1。然后讲一下剪枝,这里比较容易想到的一个剪枝就是搜索到某个状态站点数已经大于当前的最小站点数了,就不用继续搜下去了,就return。然而这只是一个很小的剪枝,并没有什么卵用,这里关键的剪枝在于:位向量

2015-10-08 22:02:57 566

原创 Codeforces Round #324 (Div. 2) 数论乱搞过

可惜脑子不够快,手速也不够快,第二题想了好长时间才发现是一个很简单的规律,就是3^(3*n)-7*n;也就是每个位置都可以选一到三三个数,然后减去全部都是六的情况就行了,而且n为1的情况hint也给了,就很简单了,然而我还是想了半天。第三题构造题,也没什么说的。然后做第四题的时候已经没有时间了,可惜了,第四题表面上是一个数论题,然而其实乱搞就能过,没什么说的,不明白的看代码:#in

2015-10-07 16:14:28 355

原创 UVA10123木板上放石头使木板平衡,递归加强剪枝

渣渣表示物理没学好,读完题的第一感觉是题意读错了,又反复读了好几遍,才感觉没读错,只不过物理没学好,感觉取一个石头是不可能平衡的,然而是可以的,因为有俩个支点,又不是一个,然后怎样去保持平衡,以左边支点分析,右边支点忽略,如果左边的力矩大于右边的力矩加上1.5乘于木板的总重量,这里为什么要加这个东西,不理解,后来想了很久,另外咨询了我们班学霸,这里相当于把木板的总重量抽象为在木板中

2015-10-06 23:27:26 532

原创 CF582B一个数列重复n次求非递减序列

其实感觉这道题如果想的话也许比前面那道题还简单一些,一个简单DP,其实简单的DP就是贪心,首先这道题如果t所以这里面毕竟有重复,这个重复就是找出数字最多那个数字,然后重复t-n次,然后和n以内的最长的非递减序列相加就行了,具体的看代码:#include #include #include #include #include #include #include#incl

2015-10-05 18:20:52 804

原创 CF582A给出n个数的相互GCD,求这n个数,map的使用

反正比赛的时候没想到怎么做,主要应该还是智商问题,比赛的时候胡思乱想很久,没想到怎么做:其实也很简单:题意:由n个数,可以构成一个n*n的gcd矩阵 (每两个数之间)现在给你n*n个数(任意序),求出 矩阵对应的 n个数(任一合法答案)可知: 最大的数必然是要求的数。。。(不可能存在两个数的公约数是他)(如果最大的数有多个,那么MAX与MAX的公

2015-10-04 22:02:43 722

原创 hdu5497删除一个序列的连续m个数使得逆序对数最少

题解:g_ig​i​​表示在ii前面比a_ia​i​​大的数的个数, f_if​i​​表示在ii后面比a_ia​i​​小的数的个数, 这两个都可以用树状数组轻松求出来. 那么对于一个长度LL的连续子序列, 删掉它之后逆序对减少的个数就是这段区间中g_ig​i​​的和 + 这段区间f_if​i​​的和 - 这段区间的逆序对个数. 求区间逆序对个数只要用一个树状数组维护就好了,

2015-10-04 21:28:06 841 2

原创 HDU5496求整数序列的子串的并集和,map的简单使用

脑子笨想了好久才想懂这题是怎么回事,首先自己比赛的时候受上一场的BC的影响,感觉和上一场的C题类似,想都没想就直接开撸了,然后后来发现自己理解错题意了,这里就是按照题解说的来做的。考虑每个数字对最终答案的贡献. 对于每个数, 我们只算它出现在连续相同元素的第一个时的贡献, 这样会使计算简便很多. 假设这个数是a[i]a[i], 那么i后面的随便选有2^{n-i}2​n−i​​种.

2015-10-04 18:58:53 790

原创 HDU5495求俩个1~n的数列按照相同的规则重排后的LCS

这题智商低,想了很久没有想到怎么做,其实想通了很简单,由于俩个数列都是1~n的排列,所以在每个位置的a[i]和b[i]建一条边,然后通过样例可以很明显看出来,建边之后会形成n多个环,而每个环视相互独立的,对于长度大于1的每个环都可以以牺牲一个值得代价取得最长公共子串。总有那么些巧妙地题是我这种智商低的想不到的。#include#include#include#include

2015-10-04 03:22:07 838 2

原创 UVA208在一个图中,给定终点和起点,搜索路线,巧妙剪枝

这题貌似后台数据都是比较密的图,所以暴搜的话必定会T,这时就要加强剪枝,想了一会,也试了几发,没有找到正确的剪枝姿势,一直T,后来看别人的,是开了数组预处理下,从终点开始求连通块,因为必须和终点在一个连通块才能到达,然后就可以搜了,这个剪枝刚开始其实有想到,但是想错了,我想的是正反同时搜索,然而并不能实现,能想到用连通块去预处理也是挺巧妙的,另外这题还有一个坑点,题中并没有说要按字典序

2015-10-04 00:20:51 739

原创 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 499

原创 UVA10001按照一定的规则三位一体转化字符串,给定字符串看能否转化出

这题重点就是题意很难理解,表示以我没有过四级的水平并不能理解,只能看了下题解:刚好有位大神写的比较详细,copy一下,原文地址:http://www.cnblogs.com/staginner/archive/2011/09/07/2169351.html这个题目大致的意思是这样的,一共有这样256个自动机,它们可以依据一个字符串当前的状态,并将其按某种法则转化成一个新的字符串,题目的

2015-10-03 16:41:37 538

原创 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 645

原创 UVA10012把圆放进矩形的底部求矩形的最短长度

这题刚开始做的时候,想都没想就直接敲了一个求排列后直接按照每个圆和前一个圆相切的思路算了一遍,果断WA了,然后想了想,一个很大的圆可以挡到很多小的圆,然后想了很久不知道怎么写了,然而实际上也很简单,记录每个圆的横坐标,每放一个圆,求这个圆的最长的坐标,即这个圆分别与前面的圆相切的坐标和这个圆的半径比较取最大值,这样就不需要去确定左边界了,直接可以求出长,就是计算每个点的横坐标加上半径取

2015-10-02 15:11:44 485

原创 HDU5483求一个图中的最小生成树不能去掉的边的数目

没研究过图论,暂时看不太懂,留着慢慢看吧。题解:首先使用Prim算法求出这个图的最小生成树,对于每条非树边都对于着树上的一条链。如果有一条非树边的权值和对应链上的某条树边相等,就可以交换这两条边使得树边不一定在最小生成树上。所以我们需要对每条树边,看所有覆盖他的非树边的权值有没有和本身相等的,因为非树边的权值不会小于树边,所以只需看覆盖该树边的非树边的最小权值。这个

2015-10-02 12:55:27 802

原创 UVA331求排序过程交换次数最少的种类数

这题估计是D了一天的BUG,头有点晕了,第一发看到过的人挺多的,以为有规律,自以为是的按照规律交了一发,结果WA掉,然后老老实实写递归,想的是xian

2015-10-02 12:46:16 527

原创 HDU5482给大小为k的字符集,求长度为n且有m个非空字串的串数目,构造

这题,起初看题解,以为要求贝尔数,后来看大神的代码看了很久很久才发现,并不是求什么贝尔数,什么斯特林数,就是一个构造题,记住一句话,名字只是一个代号。然后大神的代码,由于自己太弱,也看了很久很久才看懂,解释下各个变量的意思,sum数组:字符串长度为n且有s个不同字符构成的子集数目为t的串有多少。a数组是你要构造的长度为n的串,每一位都是一个数字,可能相同可能不同,取决于下面的最后面

2015-10-01 19:57:45 868

原创 HDU5481求数轴的并集的长度

首先考虑一个问题,就是关于覆盖的问题:若某个区间没有被其它区间覆盖,则该区间在子集中出现的总次数为:2^(n-1)次(总子集数-去掉该区间的子集总数)若某个区间被覆盖了1次,即有2个区间重叠,那么该区间在子集中出现总次数为:2^(n-1)+2^(n-2)次(第1个区间在子集中出现的次数+第2个区间在子集中出现且第1个区间不出现的总次数)…………可以得到

2015-10-01 09:01:24 721

空空如也

空空如也

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

TA关注的人

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