
Poj
文章平均质量分 61
MooDer90
这个作者很懒,什么都没留下…
展开
-
Poj 栈
<br />真正的单纯栈的题感觉不多,一般都是在一道题里面处理一些数据的时候会用到,队列什么的也是。<br /> <br /> <br /><br />特别理解栈的性质,先进后出FILO。<br />由这个性质可以解决很多先进后出的问题,在模拟题里面也很多用到的。<br />最典型最基本的应用是计算运算表达式和括号匹配。<br />理解这个之后要扩展也就变得容易了,凡是类似括号匹配的都可以用栈来处理了。<br />比如昨天哈尔滨热身赛的1006。<br /> <br /> <br />Poj 1363 问一原创 2010-09-10 10:11:00 · 899 阅读 · 0 评论 -
poj 1988 Cube Stacking
<br />很久没写并查集了,发现这道没写过,早上交的现在还在waiting~<br /> <br />只有再交一次咯~<br /> <br />#include<cstdio> #include<cstring> using namespace std; const int maxn=30005; int fa[maxn],root[maxn],dis[maxn];//父节点,作为根时树的节点数,距树根的距离 int p; int find(int i) { int tmp; if原创 2010-09-08 15:31:00 · 373 阅读 · 0 评论 -
Poj 并查集
写了两三天的模拟,过段时间再写吧,今天开始数据结构。既然数据结构分成集合,线性表,树,图四种,今天就从集合开始看。另外关于图的我就不写了,后面再专门写图论的东东。并查集:简单说来,对于元素有合并和查询两种操作,合并O(n),查询O(1)。并查集学的有点久了,第一次接触是学kruskal的时候,后来有专门系统写过并查集的题。单独并查集的题其实不多,一半都是中间对数据做一些处理。个人感觉加了压缩路径之后按秩合并的效率并不会提高太多,北大PPT上也把按秩合并叉掉了。我写的并查集都是只有路径压缩的,都是些以前写过的原创 2010-09-07 10:22:00 · 586 阅读 · 0 评论 -
Poj 1676 What time is it?
一道关于LED灯的模拟。1.有两个LED灯,左边是现在的时间,右边慢了15min。2.四位表示一个时间,0000~2359。3.LED的有些管坏掉了不亮,问能否根据剩下的灯管确定当前的时间。它的description有点抽象,多了两行。 _ _ _ _ _ _ _ _ | | | _| _||_||_ |_ ||_||_||_| ||_ _| | _||_| ||_| _|我是给每个灯管一个权值,所以一个二进制数表示0~9的数字。按照2^i ,i 如原创 2010-09-05 20:43:00 · 740 阅读 · 0 评论 -
Poj 1786 Bridge Hands
<br />1.将52张牌发给4个人,每人13张。<br /> <br />2.排序输出,按suit的优先级大于rank。<br /> <br />3.suit的优先级为C<D<S<H。代表(club) < (diamond) < (spade) < (heart)。<br /> <br />4.rank的优先级为2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < Q < K < A 。<br /> <br />5.玩家的名称为东南西北,每次一个发牌者,从他左手开始发,顺时针直到原创 2010-09-05 15:50:00 · 906 阅读 · 2 评论 -
Poj 模拟题
最近都在写模拟,之前一个学姐超级擅长模拟。做模拟题不外乎题长,代码长,为的就是要把你打倒,所以再做的时候必须抱着比过的决心。听从了学姐的建议,读题的时候拿一张白纸,把所有的细节都写上,就像作文的框架一样。然后先在纸上写大概要怎么做,有些模拟题太长,做着做着就忘了。当所有的都考虑好了才开始敲题,这样通过率又高又不会浪费队友的时间。最开始就一个人默默地在纸上写吧~~~Poj 1472 1573 2993 2996剩下的以后做了再跟新吧原创 2010-09-04 14:08:00 · 1010 阅读 · 0 评论 -
Poj 2632 Crashing Robots
<br />A是列数,东西走向,B是行数,南北走向。<br /> <br />1.一个B*A的棋盘,n个机器人,m个操作<br /> <br />2.n个机器人给出最初的位置和方向<br /> <br />3.m个操作,操作的机器人的号,左转右转前进,该操作重复的次数。<br /> <br />4.一个机器人的操作完毕之后下一个机器人才启动。<br /> <br />5.3种结果,撞墙,和另一相撞,无冲突OK。<br /> <br />#include<cstdio> #include<cstring>原创 2010-09-06 21:12:00 · 446 阅读 · 0 评论 -
Poj 3768 Repeater
<br />2083的升级版。<br /> <br />最开始用的布尔矩阵确定是否是空格,递归,一个一个打印,但是TLE了。<br /> <br />看了discuss,改成存入一个字符串数组,整行打印,依然TLE。<br /> <br />去掉布尔矩阵,直接写入字符串,900+ms,AC,寒。<br /> <br />0ms是怎么做出来的。<br /> <br />#include<cstdio> #include<cstring> using namespace std; char str[6][原创 2010-09-06 13:22:00 · 848 阅读 · 0 评论 -
Poj 1472 Instant Complexity
<br />最开始自己写了一个栈,后来发现悲剧了。<br />并列的情况处理不当,改起来很麻烦,突然想起那天多校比较大小的那道模拟。<br />改成了递归,就过了。<br />#include<cstdio> #include<cstring> #include<stack> using namespace std; struct opera{ char op; int num; }; stack <opera> S; char op[10],num[10]; int ans[12]原创 2010-09-04 14:10:00 · 745 阅读 · 0 评论 -
Poj 2352 Stars
<br />#include<cstdio> #include<cstring> #define N 32010 using namespace std; int C[2*N],ans[N],n; int lowbit(int pos) { return pos&(-pos); } int Sum(int pos) { int sum=0; while (pos>0){ sum+=C[pos]; pos-=lowbit(po原创 2010-09-10 16:31:00 · 533 阅读 · 0 评论 -
Poj 树状数组
树状数组查询和修改复杂度都为log(n),假设数组a[1..n],那么查询a[1]+...+a[n]的时间是log(n),而且是一个在线的数据结构,随时修改某个元素的值,复杂度也为log(n)。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 +原创 2010-09-10 16:20:00 · 662 阅读 · 0 评论 -
Poj 1363 Rails
<br />#include<cstdio> #include<cstring> #include<stack> using namespace std; const int maxn=1005; stack <int> S; int x[maxn]; int main() { int n,y,i,j; bool yes; while (scanf("%d",&n)&&n){ while (scanf("%d",&x[0])&&x[0]){ for (i=1;i<n原创 2010-09-10 10:13:00 · 538 阅读 · 0 评论 -
Poj 1489 Egyptian Multiplication
<br />大概意思是计算a*b,把b转换成二进制计算。<br /> <br />1. 数值系统无零,用|代表一,用n代表十,用9代表百,用8代表千,用r代表万,不考虑大于99,999的数。<br /> <br />2.一个数被写成它们的组合,每组后面有一个空格,包括最后一组,如4023=>||| nn 8888 <br /> <br />3.做乘法,将|写在左边,a写在右边,不断将左右的数增倍直到左边的数大于b,将能组合成b的数后面加*。<br /> 其实就是把b换成二进制,为1的位后面带*。<br原创 2010-09-05 16:00:00 · 728 阅读 · 0 评论