12 2013 档案
摘要:求出大矩阵里面全为0的最大子矩阵我自己用的个挫DP写的,感觉写的不是很好,其实可以再优化,DP想法就是以 0 0 到当前 i j 为整体矩阵考虑,当前 i j就是从 i-1 j或者 i,j-1那里最大化,然后因为要求最大子矩阵,还得自从j往上扫一遍。。总之好像有点挫#include #include #include using namespace std;int dp[105][105][2];int s[105][105];int g[105][105];int n,m,i,j,k;int main(){ while (scanf("%d%d",&n,&
阅读全文
摘要:这道题目我一开始想错了,觉得只要排好序,再从头到尾把可以相互交换的进行下交换就可以了。。。事实证明是错的。正确的解法比较巧妙,而且写法非常好,值得学习首先,要注意的一个规律是,假如最大的颜色数字出现的次数 为 c, c超过了n的一半,则必定无法将所有的人的颜色交换成两两不同的,而且此时颜色不同的人的数目也已经出来了就是 (n-c)*2,于此,也很容易得出,一旦c没有超过n的一半,则肯定能够把所有人都排成不一样的,(先把相同颜色的找另一类相同颜色的互换,某一类不够了,再找另一类的来继续补充一下即可)此时的答案就是n。进一步分析,如果是第一种情况,则一个很巧妙的处理方法就是从1到n遍历,如果当前i
阅读全文
摘要:这个题目挺有意思的,给定 起终点,要你求车,象,王分别最少要走多少步车横竖都能走,而且每步任意走几格,所以它是最容易处理的,如果在同行或者同列,就是1,否则就是2象要找下规律,象任意对角线都能走,而且每步任意走几格,这个时候,发现图上的黑白色块给了很大提示,如果两个本身在同一对角线,就是1,如果不在,就要判断下是否在同一色块,是就是2,否则,就走不到,输出0,至于判断是否为同一色块,非常简单,代码中给出。其实王也是非常简单的,八个方向都能走,但是每次只能走一步,只是我好脑残,连象的规律都找出来了,偏偏王还在一步步分情况,最后发现,其实不管是在八个方向内,还是不在八个方向上,最终走的步数就是 m
阅读全文
摘要:终于AC了,这道题目去年寒假卡得我要死,最后一气之下就不做了。。。想想居然一年之久了,我本来都快忘了这道题了,最近发现白书的奥秘,觉得刘汝佳的题目真的相当练思维以及对代码的操作,决定又刷起题目来,这时候才想起这道题。用栈进行模拟堆砖块,用个rec[]数组记录其现在所在的栈号,比较麻烦的是pile 操作,为了把a以及a以上的所有砖块都以原秩序放置于b砖块顶端,我用了个临时的栈进行存贮,然后再一个一个放到b栈上面。。这样就不会破坏秩序。。但是感觉这样做挺耗时的,原以为通不过,结果还是通过了。。。22ms,也不算太高吧。。不知道还有没有更好的pile方法这个题目去年我都没想清楚题意,题目里面有个关键
阅读全文
摘要:刘汝佳的题目感觉都是比较难以处理的,就像这道题目,一看数据简直觉得头大。。。加上这个英文我也看的想死最后看别人博客的题意讲解才知道原来是要移牌。然后如果熟练的使用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]) { ...
阅读全文
摘要:用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
阅读全文
摘要:题目http://www.spoj.com/problems/CHOCOLA/把一整块巧克力分成一个一个单元,掰断每一横行有个代价值,掰断每个纵行也有个代价值,要你求最后的总代价值最小这个题目放在DP的题目列表里面,起初我是按DP的思想去解,先考虑只有一个单元的巧克力,再考虑2个单元,再是3个。。当把一个橫行都处理完再处理第二行,但是在处理第二行的时候就出问题了,到底此时是掰断橫行还是纵行,这里的操作会对之后造成影响,所以我这样,不是真正的最优子结构,因此这样DP就要出问题。后来发现原来直接贪心就可以了。为了使总代价值最小,肯定要先掰断代价值最大的,这样使得那些代价值大的操作不会进行太多,因此
阅读全文

浙公网安备 33010602011771号