上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 25 下一页
摘要: 终于AC了,这道题目去年寒假卡得我要死,最后一气之下就不做了。。。想想居然一年之久了,我本来都快忘了这道题了,最近发现白书的奥秘,觉得刘汝佳的题目真的相当练思维以及对代码的操作,决定又刷起题目来,这时候才想起这道题。用栈进行模拟堆砖块,用个rec[]数组记录其现在所在的栈号,比较麻烦的是pile 操作,为了把a以及a以上的所有砖块都以原秩序放置于b砖块顶端,我用了个临时的栈进行存贮,然后再一个一个放到b栈上面。。这样就不会破坏秩序。。但是感觉这样做挺耗时的,原以为通不过,结果还是通过了。。。22ms,也不算太高吧。。不知道还有没有更好的pile方法这个题目去年我都没想清楚题意,题目里面有个关键 阅读全文
posted @ 2013-12-05 21:55 KRisen 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 刘汝佳的题目感觉都是比较难以处理的,就像这道题目,一看数据简直觉得头大。。。加上这个英文我也看的想死最后看别人博客的题意讲解才知道原来是要移牌。然后如果熟练的使用stack和手写链表的话,这个题目是不成问题的#include #include #include #include #define N 100using namespace std;struct node{ char ch[3];};stack arr[N];int next[N],pre[N];int t,cnt;void deletegap(){ for (int i=0;i!=t;i=next[i]) { ... 阅读全文
posted @ 2013-12-05 20:44 KRisen 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 用1*2的方块去覆盖3*n的方块http://www.cnblogs.com/staginner/archive/2011/12/16/2290020.html玉斌大神的题解其实我昨晚想得跟斌神差不多,先是3*f[n-2],而且跨方块的有两种 所以要+2*f[n-4],但是没有继续考虑跨3方块 4方块的情况,其实多画一下,发现情况是一样的,一样是要*2f[n-2*k]于是最后的递推方程就是 f[n]=3*f[n-2]+2*f[n-3]...+2*f[0];#include #include #include #define ll long longusing namespace std;ll 阅读全文
posted @ 2013-12-03 11:26 KRisen 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题目http://www.spoj.com/problems/CHOCOLA/把一整块巧克力分成一个一个单元,掰断每一横行有个代价值,掰断每个纵行也有个代价值,要你求最后的总代价值最小这个题目放在DP的题目列表里面,起初我是按DP的思想去解,先考虑只有一个单元的巧克力,再考虑2个单元,再是3个。。当把一个橫行都处理完再处理第二行,但是在处理第二行的时候就出问题了,到底此时是掰断橫行还是纵行,这里的操作会对之后造成影响,所以我这样,不是真正的最优子结构,因此这样DP就要出问题。后来发现原来直接贪心就可以了。为了使总代价值最小,肯定要先掰断代价值最大的,这样使得那些代价值大的操作不会进行太多,因此 阅读全文
posted @ 2013-12-01 17:06 KRisen 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 一个排队问题,f代表女,m代表男,f和m出现的几率相等。问一个长为L的队伍不能出现 fmf 和 fff这样的串总共有多少种。这个题目的公式递推略难啊。。。我看了别人博客才想明白原来是这么递推出来的。首先把前几项写出来。L=0 ,ans=0;L=1,ans=2;L=2,ans=4;L=3,ans=6;L=4,ans=9;规律有点难找,直接递推出来,假设 长度为n的串,n>4,ans[n] 无非就是在 ans[n-1]的基础上加一个 f或者m,如果在ans[n-1]的基础上在队列最后加一个m,则绝对合法,因为不论前面n-1个是怎么排列,最后加一个m,绝对不会构成fmf或者fff,所以 ans 阅读全文
posted @ 2013-11-27 15:10 KRisen 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 这道题目是刘汝佳白书上的例题,没有LRJ在白书上提到的划归为搜索问题,还真是一时难以想到好的解法。即三个瓶子,任意的一个状态都是一个节点,最后就划归为一个搜索问题。由于题目数据量不大,三个杯子容量都不超过200,所以用个vis三维数组保存下访问过得状态以达到剪枝的目的,不过我在想数据量稍微大一点,这个数组就开不下了,同时搜索时间将大大增加。。。所以面对大数据的时候有没有更好的方法,我暂时还没想到。代码写得超级挫,每个状态的转化都是手动敲的,好像可以用一个函数统一解决,当时写的时候就比较急,就直接手敲了。#include #include #include #include #include # 阅读全文
posted @ 2013-11-27 14:54 KRisen 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 这道题目昨晚比赛没做出来,昨晚隐约觉得就是个动态规划,但是没想到怎么DP,今天想了一下,突然有个点子,即局部最优子结构为 1-j,j#include #include #include #define N 100000#define INF -900000using namespace std;int dp[105][N=N*2) continue; if (dp[i][j]==INF) continue; dp[i+1][j+temp]=max(dp[i+1][j+temp],dp[i][j]+a[i+1]); ... 阅读全文
posted @ 2013-11-25 21:59 KRisen 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 这个题目确实是很简单的一个矩阵快速幂,但是我在求和的时候,用的是标准的求和,即,一共计算logN次Ak,但是这样会超时。后来就发现原来本身和Sn=Sn-1+Fn;即Sn本身可以写在矩阵当中,所以直接求一次 Ak就能得出结果。#include #include #include #include #include using namespace std;struct Mat{ int mat[4][4];};Mat it,E,E0;void init(){ memset(it.mat,0,sizeof (Mat)); memset(E.mat,0,sizeof (Mat)); ... 阅读全文
posted @ 2013-11-22 19:44 KRisen 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 最近开始由线段树转移新的内容,线段树学到扫描线这里有点迷迷糊糊的,有时候放一放可能会好一些。最近突然对各种数学问题很感兴趣。好好钻研了一下矩阵快速幂。发现矩阵真是个计算神器,累乘类的运算原本要O(N)的复杂度一下子给降到Log(N),非常大的进步了。这个题目算是矩阵快速幂的比较难推的一个题目。题目要求 (sqrt(2)+sqrt(3))的 2^n并%1024,要求出值来并不难,构造矩阵即可,但是要mod1024就有问题了,小数不能直接mod,但是如果你取整之后再mod,结果绝逼出问题,因为浮点数的精度问题。所以从斌牛的博客上看到如此推算,推算第一块不难,而且很容易求出Xn 和 Yn,但是问题又 阅读全文
posted @ 2013-11-22 15:47 KRisen 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 又几天没写博客了,大二的生活实在好忙碌啊,开了五门专业课,每周都是实验啊实验啊实验啊。。。。我说要本月刷够60题,但好像完不成了,也就每天1题的样子。如今写动规还是挺有条理的,包括这道需要打印轨迹,其实就是在POJ 2955的基础上进行下修改,记录下动规的方向,再用递归逆向输出即可!是个区间DP,如果 括号i和括号k匹配了,则 dp[i][j]=max(dp[i][j],dp[i][k]+1+dp[k+1][j])这个转移方程挺重要的,我一开始就是这个方程没写好。。弄得思路混乱了还有就是一开始不知道为什么总是OLE,说我输出太多,我看了下POJ的discuss,说这道题的数据里面有一些空行或者 阅读全文
posted @ 2013-11-17 11:29 KRisen 阅读(207) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 25 下一页