2012年4月5日
摘要: POJ_2886 由于N比较大,如果像模拟约瑟夫环那样用链表模拟的话,每次查找操作的复杂度是O(N)的,时间上是不允许的。但如果我们用线段树来直接求每次轮到谁的话,每次就只需要O(logN)的时间了。 于是大概思路就是每次都通过线段树查找相应的位置,然后计算一下F(p)的值并更新结果即可。#include<stdio.h>#include<string.h>#include<math.h>#define MAXD 500010int N, M, K, P, tree[4 * MAXD], card[MAXD], isprime[MAXD], prime[MA 阅读全文
posted @ 2012-04-05 23:56 Staginner 阅读(264) 评论(0) 推荐(0) 编辑
摘要: HDU_1394 这个题目可以根据现有的逆序数对,推出其余情况的逆序数对。 我们每次从开头拿走一个元素,就相当于减少了右边比他小的元素的数量这么多个逆序数对,而放到最后就相当于增加了左边比他大的元素的数量这么多个逆序数对,而这些值是可以用线段树与处理出来的。#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAXD 10000int N, M, tree[4 * MAXD], left[MAXD], right[MAXD];struct Point{ int x, y;}p[MAXD]; 阅读全文
posted @ 2012-04-05 14:29 Staginner 阅读(212) 评论(0) 推荐(0) 编辑