2013年6月22日

20130622

摘要: 王者感悟:完美的生活必然暗藏灾难,磕磕碰碰起起落落才是幸福的本源,对自己严格一点对别人宽厚一点你就会觉得世界上好人真多,对别人苛刻一些对自己放松一些你就会觉得世界上都是坏人,幸福和美满从来都是相对的,看到别人快乐自己快乐的人才会懂得什么是幸福的真正含义! 阅读全文

posted @ 2013-06-22 18:51 Ac_coral 阅读(142) 评论(0) 推荐(0) 编辑

[HNOI2004]宠物收养所

摘要: 维护一个有序序列,查找小于x的最大值与大于x的最小值。这个题的取模操作,深深的坑了。。。调了好久,都没发现错误。。sum += xx%MOD;这样是不对的!!sum = (sum+xx)%MOD;这才是正解。。。。。。int find_low(int x) {//小于x的最大值,虚拟结点的v=-INF; Node *p = ss.root, *ret = null; while ( p != null ) { if ( p->v ch[1]; else p = p-> ch[0]; } return ret->v;}int find_up(int x) {//大于x的最小值. 阅读全文

posted @ 2013-06-22 17:55 Ac_coral 阅读(181) 评论(0) 推荐(0) 编辑

hdu3487 Play with Chain

摘要: 维护无序序列。结点信息包括flip和s。cut操作:void cut(int a, int b, int c) { Node *left, *mid, *right, *o; split(ss.root, a, left, o); split(o, b-a+1, mid, right); ss.root = merge(left, right); split(ss.root, c+1, left, right); ss.root = merge(merge(left, mid), right);} 阅读全文

posted @ 2013-06-22 12:44 Ac_coral 阅读(130) 评论(0) 推荐(0) 编辑

poj3481

摘要: 维护有序序列,根据输入找到优先级最小/最大 的那个结点,输出编号,然后删除该结点。假设虚拟结点的v值为-INF,保证序列有序的插入。void highest_priority() { //printf ( "cnt=%d\n", cnt ); if ( cnt == 1 ) { printf ( "0\n" ); return; } Node *left, *mid, *right; split(ss.root, cnt-1, left, right); printf ( "%d\n", right->client ); ss. 阅读全文

posted @ 2013-06-22 08:45 Ac_coral 阅读(168) 评论(0) 推荐(0) 编辑

[HNOI2002]营业额统计

摘要: 大早晨被数据坑,测试数据结尾有丢0的情况;if(scanf("%d",&x) == EOF) x = 0;加上这句就能过。维护有序序列,查找小于x的最大值,大于x的最小值。虚拟结点的v要赋值为-INF, null结点的v赋值为INF;splay只需要维护 结点总数s 信息,不需要pushdown()操作。int find_low(int x) {//小于x的最大值 Node *p = ss.root, *ret = null; while ( p != null ) { if ( p->v <= x ) ret = p, p = p->ch[1]; 阅读全文

posted @ 2013-06-22 07:22 Ac_coral 阅读(166) 评论(0) 推荐(0) 编辑

导航