03 2012 档案
摘要:转自:http://myclicki.blogbus.com/logs/17335812.html clicki可以通过插件(widget)的方式在blogger自己的网站上展示出自己想要了解的数据。所有页面上的用户访问数据,blogger在自己的网站上就可以看到大部分统计数据,而不用登录到clicki的后台查看数据报表,极大地方便了blogger的操作。 blogger在自己的网页上可以看到以下数据: 当前页面的站外来源统计:访问者是从哪里来到这个页面的?搜索引擎还是其他网站?如果是通过搜索引擎过来的,是哪个搜索引擎?用户输入的关键字是什么? 当前页面的访问者点击统计:clicki可以统计.
阅读全文
摘要:把出现过的每个字母映射到对应的数字,这样字符串就变成相应的nc进制数,然后把它转换成10进制,并放入hash[]中,如果是第一次放入,则总数加一。 例如:(此分析出自http://www.cnblogs.com/lxf90/archive/2011/04/19/2021280.html。感谢他。) 3 4daababacd = 3a = 0b = 1c = 2daa=300(4进制)转换为十进制: daa = 3 * 4 ^ 2 + 0 * 4 ^ 1 + 0 * 4 ^ 0 = 48然后if(!hash[48]) hash[48]++;#include <stdio.h>#inc
阅读全文
摘要:#include <iostream>#include <fstream>#include <string>using namespace std;char dict[10005][16];char word[51][16];int count1=0,count2=0;bool Replace(char *d,char *w){ int i; bool flag=false; for(i=0; i<strlen(w); i++) { if(d[i]!=w[i] && flag==false) //不相等 { ...
阅读全文
摘要:一开始自己写的。TLE。。。哎。用的太多的for,什么叫代码的优美性?高效性??我自己写的就没考虑过那些情况,要什么就用什么。不行啊! 改了之后才知道,我自己写的是多么的垃圾。才感觉到效率是多么的总要 你还有很长的路要走啊,孩子。慢慢学着点吧。没事,慢慢来。下面贴出我自己的代码和修改后的代码。好好对比,好让日后自己看看自己当时是多么的搓!自己写的TLE代码:#include <iostream>#include <fstream>#include <string>using namespace std;char str[81];char s[15][31];
阅读全文
摘要:自己写的TLE。。。哎。不该用的我都用了。虽然说给出的数据可以运行出来,但是到提交上去后,就TLE了。不行啊。必须学会优化。后来看了别人的的好的方法(也不能算好吧,其实我看人家用trie树的效率才是高的)。但我还没调试出来。等明天我来把它弄出来。然后再去学trie树。再回来再次把它搞掂!!气愤。下面是我自己写的:没AC的。#include <iostream>#include <fstream>#include <string.h>#include <algorithm>using namespace std;int n;char s[100];
阅读全文
摘要:JAVA上机作业文本统计器:1.创建一个类,实现统计文本文件中各类字符和字符串的个数的功能,要求实现:(1) 按字符统计,输出各个字符的数量;(2) 按单词统计,输出各个单词的数量;2.在1(2)的基础上,实现一个类Keywordidentifier读入一个java程序源文件,输出各个关键字的个数。(注意,注释中出现的关键字不计入关键字个数) 也没看java几天。呵呵。 用Map一切都解决了,都不带的思考。把Map看看之后,很快就把它给解决掉了。其实吧,我觉得学完了C 和C ++之后,再来学java,毫无压力,主要他们属于同一派系的,记得高手说过,老学一个派系的语言,学得太多也没用,应该拓展来
阅读全文
摘要:两周的简单搜索练习还不错哈。这两周里,我们宿舍还忙着做我们的生意,所以周末都没时间做题,本来可以更早的完成。 通过两周的练习,基本的迷宫呀,九宫图,八皇后那些都没问题了。再有对BFS DFS 剪枝都又个更深入的学习。虽然说POJ上面的题大部分要看别人的方法才做得出来,但关键还是要学习,更确切的说是模仿别人的方法。那样才会有提高,我承认自己水平不是很高。必须向别人多多学习。加油吧。 下一阶段,从明天开始到清明节结束。4月4日。总共10天吧。把基本的字符串操作完成。OK~孩子,加油!!
阅读全文
摘要:我当时是不懂题目是什么意思的,看了别人的才知道原来是所谓的四色问题。我也不知道是什么东东,查了才懂。要学的还有很多呢!太弱了。关键把结构存储进去后,每次遍历它的邻接节点。并把用的颜色标记下来。然后再每次都要遍历每种颜色,如果这种颜色不是邻接的,那么久可以把它给用上。用col[]数组来表示总共用了多少种颜色。好了,代码里也标记得很清楚了。这题还有其它方法,要好好研究研究。 感谢http://blog.csdn.net/lyy289065406。推荐大家看他的博客。 Channel AllocationTime Limit: 1000MSMemory Limit: 10000KTotal Sub.
阅读全文
摘要:做这题主要学会了如何DFS一个九宫格,举一反三,以后遇到这种题目可别再不会了,一开始我想的是用八皇后的方法,发现不行啊,如何判断这行这列有没有用这个数字呢。最后的办法是建立数组row[][],col[][],grid[][],还有一个是大格和小九宫格的换算公式:3*(i/3)+j/3; SudokuTime Limit: 2000MSMemory Limit: 65536KTotal Submissions: 9748Accepted: 4827Special JudgeDescriptionSudoku is a very simple task. A square table with .
阅读全文
摘要:转自:http://hi.baidu.com/tracyangrad/blog/item/3db0edd1b7f4c2d1a8ec9a37.html 他的分析很好。特别是这图,让我对递归有更直观的认识。好好学习下他的方法。题目描述:给定一个target数字,一个num,要求分解num,使得num被分解后所得的各数之和小于并且最接近target,这个和就是最优解。若无最优解输出error,若同时多个最优解,则输出rejected。思路:深搜,每次找个可行解就保存,当作最优解,若后来的更优,则更新。#include <iostream>#include <fstream>#
阅读全文
摘要:http://www.cnblogs.com/newpanderking/archive/2011/10/03/2198648.html讲得很详细。。。我没明白。
阅读全文
摘要:这题的目的是要学会剪枝。 说是用DFS,但是我不知道要怎么样DFS。。。郁闷了。还是看了别人的才恍然大悟。明天再好好看看!#include <iostream>#include <fstream>#include <cstdio>#include <memory.h>#include <algorithm>#define MAX 20using namespace std;int n,m,sum,side,flag;int a[MAX],used[MAX];void dfs(int len,int side_num,int start
阅读全文
摘要:还是迷宫的问题。不过这次是三维的,代码很快写完了。但是有个问题搞错了。。三维数组存矩阵的时候,顺序弄错了 悲剧啊。、#include <iostream>#include <fstream>#include <cstdio>#include <queue>#include <memory.h>#define MAX 31using namespace std;struct node{ int x,y,z; int step; node(){} node(int x1,int y1,int z1,int s) { x=x1; y=y1
阅读全文
摘要:这一切都是那么突然。。。因为我的电脑要过热,我叫小强给我电脑清个灰,看拆电脑是那么熟练。而且这学期开始的时候,我们宿舍的说好暑假一起去广西玩的,如果我们自己赚钱去玩,那该多好啊。于是,我们萌生了一个为别人电脑清灰的主意。想想我们学校2W+人呐。基本人手一本本。你就算只有百分之一的人找我们帮清灰,那么我们也可以赚很多钱哦!(事实上我们那时的估计是错的,因为2W人包括研究生的,而且他们在老校区。还有就是大一的基本没电脑,大二的刚刚买电脑,基本不清灰,大三大四才1W人。咦。。也挺多的咯。) 于是幼稚的我们就马上开始行动起来,一开始我们给定的价是联想的10块,非联想的15。我和海哥负责联系客户,小强.
阅读全文
摘要:开始我自己写的。思路对的,但是用的变量太多啦!!学习人家的方法。好好学!过后要认真思考#include <iostream>#include <fstream>#include <queue>#include <memory.h>#include <string>using namespace std;int a,b,c;struct node{ int a1,b1; string str; node(int a2,int b2,string str1) { a1=a2; b1=b2; str=str1; } node(){}};qu
阅读全文
摘要:BFS得到的一定是最短路径。开始我还在纠结怎么才是最短的呢。其实BFS的题目有个共性(这不废话,哪一类题没有共性啊。呵呵)。以后做这种题自己慢慢总结吧。 这题的思路就是写枚举出4位数的所有prime number,用个数组p[]标记。再用个数组visit[]标记某个数是否被访问过,避免重复访问.然后就是对这四位数的每一位进行BFS啦!#include <iostream>#include <cstdio>#include <queue>#include <fstream>#include <memory.h>using namespa
阅读全文
摘要:poj3278 都说水题,都说是自己第一道BFS题,哈哈。通过这题,又对BFS的基本框架有了进一步的认识。分三个方向来BFS,主要时还是判断边界问题。#include <iostream>#include <fstream>#include <cstdio>#include <queue>#include <memory.h>#define MAX 100005using namespace std;queue<int> q;int step[MAX]; //跟随数组,记录步数bool visit[MAX];int n,k
阅读全文
摘要:又是这个题,上学期看过,但当时没能力自己写下来,只是把别人的代码认真的看了一遍。今天,终于自己把它给弄出来了。嘿嘿,经过自己思考的才能真正成为自己的东西。把这题做出来,可以说把DFS最基本的东西理解了。还应该学会灵活应用,那就得看日后的多多练习了。加油。题目大意:输入一个h*w的矩阵,1表示blocks,0表示空白,2表示起点,3表示出口。寻找各种可以出来的方法。simple input:4 4 12011100301010000 0simple ouput:#include <iostream>#include <cstdio>#include <fstream
阅读全文
摘要:poj3009 我觉得很好的一个DFS的题,因为题目出得比较“正常”,说直白了就是很水的题,哈哈。符合我们平时做题的正常思路。就一个DFS就可以完成,总的方向是固定的,就要看你运用的能力了,我们应该学会应变,要把方法用活了,这才是高手的境界!多多磨练吧。加油~!#include <iostream>#include <fstream>#include <cstdio>#include <memory.h>#define MAX 25using namespace std;int map[MAX][MAX];int start[2],end[2];
阅读全文
摘要:poj3083 用DFS和BFS。通过这题,我对DFS和BFS再次有了初步的认识!!但是方向问题真的好绕啊。。真心没搞懂,还是看了别人的才做出来的。下来我计划再做几道DFS和BFS的题。然后,再去独立把上学期数据结构书上的迷宫那题给搞出来,用两种方法,这也许就我暂时的目的吧。 再接再励。#include <iostream>#include <cstdio>#include <queue>#include <fstream>#include <memory.h>#define MAX 45using namespace std;str
阅读全文
摘要:转自:http://www.cnblogs.com/hpustudent/archive/2011/08/21/2147582.html简单搜索(1)深度优先搜索 (poj2488,poj3009,poj1321)(2)广度优先搜索 (poj3278,poj1426,poj3126,poj3087.poj3414,poj2251,poj3083)(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)搜索、回溯、遍历1022 1111 1118 1129 1190 1562 1564 1573 1655 2184 2225 2243 2312 2362 2378 2
阅读全文
摘要:同样的knight问题,但是在OJ上面出的就不一样了。。。哎,好难啊!!我按照以前的方法来写,大的方向和方法都是对的。但是就是那些小细节方面折腾呢。跑出来的结果不对,最后只能看别人对的,然后再改自己的。 不爽。哎,其实题目考的内容很简单,但是非得搞那些说不清的来绊倒你!#include <iostream>#include <cstdio>#include <fstream>#include <memory.h>#define MAX 27using namespace std;int chess[MAX][MAX],sx[MAX],sy[MAX
阅读全文
摘要:题目描述:在一个4*5的棋盘上,马的起始位置坐标有键盘输入,求马能返回起始位置的不同走法总数(马走过的位置不能重复,马走“日”字。输入输出样例 Sample input Simple output 2 2 5469经典回溯,特殊性不是很强。特殊点是需记录走法,方法是,如果走成功则记录该步的走法,否则不记录。#include <iostream>#include <cstdio>#define N 4#define M 5using namespace std;int dx[]={2,2,1,1,-2,-2,-1,-1};int dy[]={-1,1,-2,2,-1,1,
阅读全文
摘要:记得上学期我也搞了一点遍历的,BFS,DFS还有回溯遍历,但当时搞得不是很深入。再次拾起,感觉很熟悉,嘿嘿,不错不错。 回溯搜索的递归实现如下: void trace( int depth,….) { int i; if (depth>目标深度) { 输出方案;return;} for (i=depth深度可能决策范围) if( 决策i符合展开条件) { 记录决策i; try(depth+1); 删除决策i; }} 骑士巡游问题描述 在 n × n 方格的国际象棋棋盘上,马(也称为骑士Knight)从任意指定的方格出发,以跳马规则(横一步竖两步或横两步竖一步),周游棋盘的每一个
阅读全文
摘要:自从暑假开始真正做ACM题以来,到现在,把并查集,线段树,树状数组学习了一遍,也AC了有20题了。说实话,那种AC的感觉是很爽的。但是,AC之前的那段调试时间是那么的让人纠结啊。哈哈,虽然假期在家里没有多少的成效,但自从来了学校后,那效率还是挺高的哦~这一阶段的时间拉得有点长了。没关系,万事开头难,现在既然已经选择了走这条路,虽说不是为了竞赛,但这是很能锻炼自己的能力的,所以,我会坚持下去的。下一阶段,我将会用两周左右的时间把搜索及相关方面的知识认真学习。慢慢来,算法这东西要多摸索,呼呼~ 加油!!出发吧!
阅读全文
摘要:poj2828 对方法不理解透彻!照搬是没有用的,要彻底理解。一些特殊情况没出什么问题。但一当到大量数据的测试时,WA了!哎,幸亏慢慢找还能找出来,不然我今晚就耗在这睡觉都睡不好了。嘿嘿! 好了,最近这段时间对并查集,线段树,树状数组的学习就先告一段落了。总的来说这段时间的成效还是不错的哦。明天开始我要进入关于搜索的学习,加油吧,孩子。继续学习,继续刷分去吧!呼呼~#include <iostream>#include <fstream>#include <algorithm>#define MAXN 200200using namespace std;st
阅读全文
摘要:这道题搞了我好久啊。。。真的好久,心中的一个疙瘩!最后还是求助我们班的大牛,再上网看看别人写的。才弄出来。。不容易啊。不过和别人的对比之后,才发现自己的代码还是不够“美”。好好努力吧,孩子#include <iostream>#include <algorithm>#include <fstream>#define MAXN 40005using namespace std;struct seg_tre{ long long l,r; long long h; struct seg_tre* pLeft,* pRight;}Tree[MAXN*3];stru
阅读全文
摘要:#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int M=8010;struct Tree{ int l,r; int cnt;}T[3*M];int a[M],ans[M];int n,N; void build(int l,int r,int p){ T[p].l=l; T[p].r=r; T[p].cnt=r+1-l; if(l==r) return ; int mid=(l+r)>>1; build(l,mid,p<<1
阅读全文
摘要:这题的关键是方法。怎么才是相交的呢?一种方法是线段a的左边比线段b的左边小,同时a的右边比b的右边大。这时就可以构成一个相交。于是,我们可以根据左边的值来做降序排列,然后根据线段树来统计crosses。排名还在上升中。加油!#include <iostream>#include <cstdio>#include <fstream>#include <algorithm>#include <memory.h>#define MAXN 1005using namespace std;int M,N,K;int C[MAXN];struct
阅读全文
摘要:思路很重要,能想到从后面开始算,最后一个的值加上一就是它的具体位置了。依次类推,就能得到前面的位置。我刚开始在想,一般方法也能做出来呀,为什么要用树状数组呢。。? 效率!!树状数组可以提高效率。同样时用数组,它就要比一般的数组要快。关键还是要想到,还有就是理解树状数组。 感谢:http://www.cnblogs.com/rainydays/archive/2011/06/04/2072849.html前辈们铺好的路,让我们后人能走得更快。每AC一题,那种感觉是豁然开朗的,怎一个爽字了得! 没做出一题,我的排名就上升了快1000名,呼呼 ~加油!没有什么可以阻挡你的!#include <
阅读全文
摘要:主要参考:http://1.congzhao.sinaapp.com/?p=1014 非常感谢。让我学习了 非常累,今天没什么状态啊。。。。好了,今天就到这吧。 要换编译器了。VC++不合适做OJ上面的题#include <iostream>#include <algorithm>#include <fstream>using namespace std;#define N 20100int n; //牛的个数struct Node{ long long v,x; bool operator<(Node a){ return v<a.v; }}n
阅读全文
摘要:POJ1195 其实只要把它的原理弄懂的话,树状数组真的很简单的。关键要把握两个点:1.更新一个a元素的时候。如果a[i]更新了,那么以下几项都需要更新:c[n1],c[n2],c[n3],....,c[nm];其中n1=i,n(i+1)=ni+lowbit(ni);nm+lowbit(nm)必须大于a的元素个数N。2.sum(k)=c[n1]+c[n2]+...+c[nm];其中nm=k,n(i-1)=ni-lowbit(ni);n1-lowbit(n1)必须小于0。这两点弄请楚了,对于树状数组也很容易理解了。呵呵~ 而在这题里面,还有一个要注意的就是求和的时候,注意矩阵就范围的方法。好了.
阅读全文
摘要:郭老师的分析: 一棵树上长了苹果,每一个树枝节点上有长苹果和不长苹果两种状态,两种操作,一种操作能够改变树枝上苹果的状态,另一种操作询问某一树枝节点一下的所有的苹果有多少。具体做法是做一次dfs,记下每个节点的开始时间Start[i]和结束时间End[i],那么对于i节点的所有子孙的开始时间和结束时间都应位于Start[i]和End[i]之间,另外用一个数组C[i]记录附加在节点i上的苹果的个数,然后用树状数组统计Start[i]到End[i]之间的附加苹果总数。这里用树状数组统计区间可以用Sum(Start[i])-Sum(End[i]-1)来计算。 第一次做树状数组的题。把源代码原原版版的
阅读全文
摘要:对于序列a,我们设一个数组C ◦C[i] = a[i –2^k+ 1] + … + a[i] ◦k为i在二进制下末尾0的个数 ◦2^k就是i 保留最右边的1,其余位全变0◦i从1开始算!C即为a的树状数组 2k=i &(i^(i-1)) 也就是i&(-i);C[i] = a[i-lowbit(i)+1] + …+ a[i]C包含哪些项看上去没有规律C1=A1C2=A1+A2C3=A3C4=A1+A2+A3+A4C5=A5C6=A5+A6C7=A7C8=A1+A2+A3+A4+A5+A6+A7+A8…………C16=A1+A2+A3+A4+A5+A6+A7+A
阅读全文