自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Miracle_ma的专栏

马天猫重新起航

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

原创 POJ2965 The Pilots Brothers' refrigerator (精妙方法秒杀DFS BFS)

这题以前做过,当时枚举翻转次数,搜过了,但是用了800+ms,看着人家都两位数甚至0ms,我再次回顾了下这题,虽然这次的精妙方法不是我自己想出来的(毕竟精妙,我还是差的很远呢)首先这题BFS或者递归枚举的思路都是特别容易TLE的,不TLE的人也是爬过,而且用了不少的修改。DFS虽然可以优化到二三百ms,但是我不是很认可DFS啊,明明求得是最少的次数,而查到的DFS的代码都是搜到一个解救输出

2015-02-22 18:36:26 802

原创 POJ1001 求高精度幂 ACM解题报告(高精度模板)

这题主要就是去掉前导0和小数的后到0,还要注意这句话对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。#include#include#include#include#include#include#include#include#include#include#include#inclu

2015-02-18 17:27:11 888

转载 高精度模板(转载)

高精度计算模板注意:减法、除法要用到compare函数乘法需要加法的部分,加法需要减法部分//开头#include #include using namespace std;int compare(string str1, string str2){ if(str1.size() > str2.size()) return 1; else

2015-02-18 15:56:16 520

原创 新年来临之际,一点小小的决心和感悟

刷了小半年的ACM,poj刷了100+,cf也做了不少题,分数也1696了,BC也做了一场,有1622分,hdu和vj上也刷了有几十题,不算以前时候刷的水题。做了也不少的题了。但是这样真的好么,小白大概的看了不少,但是就懂了不少的算法皮毛,懂了许多装逼的名词,我真的学到了多少?真的给我一个比赛题,我能想出来多少?我们学校是弱校,没有老师的指导,只是自己学习之余的兴趣。但是这就是弱的借口么?

2015-02-15 00:02:40 882

原创 UVa 1099 分巧克力 ACM解题报告(状压dp)

这题切巧克力,首先看见这题数据很小,n小于等于15,可以直接压缩状态,全集就是(1首先要把每个集合内的巧克力的面积和求出来,sum[s]=sigma(a[i]),s&(1状态转移方程是dp(s,min(r,sum[s]/r))分成两个子状态dp(s0,min(r,sum[s0]/r))和dp(s1,min(r,sum[s1]/r)),s0+s1=s;sum[s0]+sum[s1]=sum[

2015-02-12 22:49:55 1084

原创 POJ1182 食物链 ACM解题报告(并查集+路径压缩难题)

这题真的是做的我都想吐了,WA了几次之后就跪了,然后百度题解,原来是要路径压缩,把所有的并入一个集合,真的是过于巧妙了。题解链接http://blog.csdn.net/c0de4fun/article/details/7318642/#include#include#include#include#include#include#include#include#inclu

2015-02-12 18:31:41 627

原创 *UVA 1169 Robotruck ACM解题报告(dp单调队列优化)

本渣也是在努力地刷着大白,虽然基本每题都做不出,但是每题都能理解,然后自己实现,再写个报告,希望这样的方法能有用。这题给出了n个垃圾的坐标和重量,然后机器人的最大承重是c,捡垃圾的时候必须按照垃圾的顺序捡。这题一上来我就想到背包,要么捡,要么回去,这样的方法其实是可以的,只是复杂度比较高,如果数据比较坑,可能会过不了。但是这题可以。大白上介绍的方法是一种非常巧妙的单调队列优化。or

2015-02-11 17:23:09 829

原创 *UVA 10859 Placing Lampposts ACM解题报告(dp)

//这题就是一个森林,每次都找根节点,然后往子节点查找,这题的关键是要设一个公式ans=Ma+c,其中a是点的灯数,b是两个灯照的边数,c是一个灯照的边数,因为a需要最小,b需要尽可能大,所以c就是尽可能小,也就是ans要尽可能小,一般来说,如果有两个需要优化的量a和b,要求首先满足a最小,然后在a相同的情况下b最小,则可以把两者组合成一个量Ma+b,M是一个比b的最大理论值和b的最小理论值之差还

2015-02-11 15:18:29 490

原创 Uva 11825 Hackers' Crackdown ACM解题报告(状压dp)

这题的题意是有n个电脑,每个电脑都有n个服务,然后每台电脑都和某几台电脑相邻,有个黑客可以在每台电脑上停止一个服务,然后这台电脑和与它相邻的电脑上的这个服务都会停止,问最多可以停止多少个服务。这题就是要把电脑之间的关系化成集合,因为n的范围比较小,所以可以状态压缩,用(1状态转移时f[s]=max(f[s-s0])+1,s0是s的子集,cover[s0]=全集。#include#in

2015-02-11 13:06:55 568

原创 POJ3267 The Cow Lexicon ACM解题报告(dp递推)

萌萌哒的初学者poj终于做满100题了,可惜这题不是靠自己的能力过的,因为看到这个单词串,实在是想不出状态转移方程呢。参考了下百度还是很快理解的,从字符串的尾巴开始递推,字符串是0-L-1,设d[L]=0;d[i]=d[i+1]+1;这是第一个转移方程,是最坏情况,不能匹配,然后移除这个字符d[i]=min(d[i],d[pd]+pd-i-len),这个是可以匹配的情况,如果i位置的字

2015-02-10 23:22:45 584

原创 ***POJ1185 炮兵阵地 ACM解题报告(状压dp入门题)

这题是个入门的状压dp(虽然对我来说好难啊,坑了一下午终于过了。。。)难得一个中文题,还这么难注意点挺多的,首先是要开数组记录所有情况,然后记录每种情况的炮兵数,很多处理类似于前一题3254,可以参考,不过这题更难一点,因为需要考虑两行。所以得开个三维数组记录情况,d[i][j][k],i是当前行数,j是第i行的情况,k是i-1行的情况。状态转移方程:d[i][j][k]=max(d[

2015-02-10 17:18:20 1234

原创 POJ3311 Hie with the Pie ACM解题报告(Floyd+状压dp)

题意是有N个城市(1~N)和一个PIZZA店(0),要求一条回路,从0出发,又回到0,而且距离最短  也就是TSP(旅行商)问题,首先不难想到用FLOYD先求出任意2点的距离dis[i][j]  接着枚举所有状态,用11位二进制表示10个城市和pizza店,1表示经过,0表示没有经过  定义状态DP(S,i)表示在S状态下,到达城市I的最优值  接着状态转移方程:D

2015-02-10 14:29:00 797

原创 **POJ3254 Corn Fields ACM解题报告(状压dp)

人生第一个状压dp,虽然是看了题解艰难完成的,也算是把这题搞懂了,以前虽然稍微了解过状压dp,但是没想到实现起来也这么难。这题就是给你的图中出现1的位置可以放牛,但是每个牛不能相邻(横竖相邻),一般状压的数据范围会比较小,然后就是用位运算把每行的情况都存起来。这题首先要把1不会出现相邻的情况全部打表算出来,存储在state数组中(这个情况有377种)。然后如果state[i]的每一个1

2015-02-09 16:09:40 539

原创 **Codeforces Round #282 (Div. 2) C. Treasure ACM解题报告(构造难题)

Malek has recently found a treasure map. While he was looking for a treasure he found a locked door. There was a string s written on the door consisting of characters '(', ')' and '#'. Below there

2015-02-07 17:07:46 590

原创 **Codeforces Round #250 (Div. 2) C. The Child and Toy ACM解题报告(贪心难题)

今天是惨遭吊打,和学长做去年的儿童节专场,只做出来A题,B题直接暴力以为会超时,dp了半天过不了,C题贪心贪错了。。。这题的大意是有n个部件,要把他们全部破坏,破坏i就需要与i相连的那些部件的能量,比如j,k与i相连,破坏i就需要vj+vk的能量,求全部破坏需要多少能量。我也是太年轻,直接按照每个部件拆除所需能量升序排序,然后拆能量需要最小的。这个方法的错误在于,也许有几次拆的时候,消

2015-02-07 16:58:59 710

原创 ***UVa-1626 Brackets sequence ACM解题报告(巧妙地递推+打印)经典的括号 dp题

这题绝对是经典的括号题,每次碰到括号我总是非常头疼,这次在小白的帮助下终于认真的学习了这题的解法。这题的算法当时是dp,转移过程比较复杂,用d数组记录当前情况需要添加的括号数,分析d(i,j)的状态,有如下两种:1.如果s[i]和s[j]配对,那么d(i,j)=d(i+1,j-1);2.如果字符串有2个及以上的字符,可以将原本的字符串分为两个,转移为d(i,j)=d(i,k)+d(k+

2015-02-06 23:56:42 639

原创 POJ 1260 Pearls ACM解题报告(区间dp)

这题的题目好长啊,一开始也死活不理解,看了人家题解里的说明才懂了要干嘛,貌似小白上也有个类似的题,我也是不理解题目意思,现在懂了。给你c种珍珠,每种珍珠要ai个,价格是pi,价格给你的时候就是递增的,所以不需要排序了,每种珍珠买的时候要多付10个同种珍珠的价钱,就是买一种珍珠需要的钱是(ai+10)*pi,然后为了减小支出,可以用贵的珍珠代替便宜的,比如用第j种代替第i种,他们的价格就从(ai

2015-02-06 20:47:11 845

原创 POJ1651 Multiplication Puzzle ACM解题报告(区间dp)

这题就是个简单的区间DP,方法是很简单,重点是这种思想,不确定最优解是i-j中的哪一个,就要遍历一下然后取最优解状态转移方程d(i,j)=min(d(i,k)+dp(k,j)+a[i]*a[k]*a[j]) 注意a[k]是最后取走的一个数字。类似区间dp的还有矩阵链乘。我再去找个练练。#include#include#include#include#include#include

2015-02-06 20:06:33 665

原创 HDU-1422 重温世界杯 ACM解题报告(贪心)

这题就是给出生活费和花费,相减后得到一个序列,从某一位开始往后累加,每次sum都必须大于等于0,求最长的这样的子序列,并且这题达到n后可以再从1开始,是一个环,而且参观的城市数不能大于n。这题的问题就是那个环,我一开始也是二啊,就是在输入的时候处理,这样可以求出1-n中这样的最长的子序列,但是不能求越过n后再从1开始的,后来我想了些办法算这个序列,但是一直WA,也找不到什么测试数据,所以只好看

2015-02-06 14:16:50 1083

原创 HDU-1423 Greatest Common Increasing Subsequence ACM解题报告(O(n^2)递推算法)

这题就是求两个序列的LCIS。关于LCIS的内容前面的博文中讲的很详细了。这题是我自己敲的代码,我原先看了那个博文以为自己懂了,其实发现我错了,真的是只有自己敲得时候才能发现自己的漏洞,所以我思考了好久,终于完全透彻的理解了LCIS的算法,并且用O(n^2)的算法实现之。所以得要多敲题,多思考,而不仅仅是表面的看看。状态转移方程:a[i]!=b[j]:   F[i][j]=F[i-

2015-02-06 13:07:55 694

原创 POJ1065 Wooden Sticks ACM解题报告(暴力贪心)

这题就是那个3636的兄弟啊,这题数据量还小,暴力直接16MS,不需要二分了(ps.每次我二分都要思考半天)这题贪心的方法与3636不同,是两个量都升序。因为这题只要大于等于当前的即可不+1;这题主要是给出贪心的小证明吧。升序排列,第一个木棍为一组,然后和他第一个参数相等木棍都与他一组(因为升序排列而且可以取=)如果你说这个不是最优解,可以将第一个参数相等的所有木棍看成集合p1,p2,

2015-02-05 23:27:59 1453

原创 POJ3636 Nested Dolls ACM解题报告(暴力贪心(也可用二分查找降低复杂度))

这题是给出m个娃娃,然后如果一个的w和h都大于另一个即可将其套进去,求最少能套成多少组。这题就是暴力贪心,先升序排w,然后降序排h,遍历m个娃娃,开个team数组存组数,如果没有符合可以套的,就存进去,如果找到第一个可以套的,那么就更新那个组的w和h的值。这个贪心可以给出简单的证明,如果j排序在k的前面,i比j和k都大,如果i套在k上,也许后面会有一个娃娃h,它不能套在j上也不能套在i上,

2015-02-05 22:31:44 997

转载 ***转载 LIS LCS n^2和nlogn解法 以及LCIS

LIS LCS n^2和nlogn解法 以及LCIS首先介绍一下LIS和LCS的DP解法O(N^2)LCS:两个有序序列a和b,求他们公共子序列的最大长度我们定义一个数组DP[i][j],表示的是a的前i项和b的前j项的最大公共子序列的长度,那么由于是用迭代法,所以计算DP[i][j]前,DP[i-1][j]和DP[i][j-1]就都已经计算出来了,不难理解就可以得

2015-02-05 19:08:06 599

原创 UVa-10891 Game of Sum ACM解题报告(递推O(n^2)算法)

这题是给出一串数字,两人轮流从左或者右取任意个数,不能两边同时取,两人都是最优策略,求两人结果的差。这个题既然都是最优情况,那就是用dp咯。dp[i][j]=sum[i][j]-min(dp[i+1][j],dp[i+2][j],......dp[j][j],dp[i][j-1],dp[i][j-2],....dp[i][i],0);就是这个状态转移方程,这样的话是O(n^3) 的时间复杂

2015-02-05 15:45:29 740

原创 UVa10635 Prince and Princess ACM解题报告(LCS与LIS的转化+单调栈+二分查找代替DP)

这题给出一个长p+1和一个长q+1的序列,然后找他们的LCS,由于数据量比较大,有62500多,并且两个序列中都没有重复出现的数字,即可给每个数字标号,给第一序列标号乘1,2,3,4,。。。。,p+1,于是第二个序列中对应用编号代替原来的数字。此时两个序列的LCS即第二个序列的LIS(巧妙地转化问题缩小规模),但是62500的数据量用O(n^2)的dp查找还是会爆(我TLE了三次),于是我网上学习

2015-02-04 15:26:05 798

原创 Codeforces Round #230 (Div. 2) D. Tower of Hanoi (加强版汉诺塔,DP)

这题一开始碰到简直蒙了,完全不造从何做起呢,后来学长让我欣赏了大白P26页那个汉诺塔,于是我有了一定的思路。这题是个很漂亮的DP,状态转移方程太复杂了懒得写了,不过看代码也可以看懂哦。#include#include#include#include#include#include#include#include#include#include#include#includ

2015-02-03 12:24:43 605

原创 Codeforces Round #230 (Div. 2) C. Blocked Points ACM解题报告(暴力)

我还是too young 啊,这题没我想的那么简单,这题是在半径为n的圆内部及圆上的整数点称为特殊点,圆外的称为非特殊点,然后要求每个特殊点都不与非特殊点4-connected(有定义)。这题的想法就是圆内最外一层的点都选出来阻断,就可以了。于是只要计算一个象限,*4就是平面内的answer,即可枚举横坐标1-n。然后开根算出纵坐标,取圆内的整数点,此时需要记录前一个纵坐标,如果两个纵坐标

2015-02-02 15:51:01 610

空空如也

空空如也

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

TA关注的人

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