摘要: 做法是n&(n-1)。据说还有变态的查表法:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html。最后,居然必须用scanf/printf。#include #include using namespace std; int countOne(int x){ int cnt = 0; while (x != 0) { x &= x - 1; cnt++; } return cnt;} int main(){ int n; scanf("%d", &n)... 阅读全文
posted @ 2013-10-31 23:58 阿牧遥 阅读(169) 评论(0) 推荐(0)
摘要: 由于思维的惯性,用了queue。后来发现一要注意要用集合判重,二是每次往queue里放的多,后来溢出了,要用long long。但这样要用数组,集合,队列,内存多。效率是O(n*logn)的。#include #include #include #include #include #include #include #define LEN 1505#define ulong unsigned long longusing namespace std; ulong dp[LEN]; int main(){ priority_queue, greater > que; set visi... 阅读全文
posted @ 2013-10-31 23:05 阿牧遥 阅读(198) 评论(0) 推荐(0)
摘要: Skip list(跳跃表)是一种可以代替平衡树的数据结构。Skip lists应用概率保证平衡,平衡树采用严格的旋转(比如平衡二叉树有左旋右旋)来保证平衡,因此Skip list比较容易实现,而且相比平衡树有着较高的运行效率。目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表,就能轻松实现一个 SkipList。http://www.cnblogs.com/davad/articles/3049086.html空间复杂度: O(n) (期望)跳跃表高度: O(log n) (期望)相关操作的时... 阅读全文
posted @ 2013-10-31 11:51 阿牧遥 阅读(486) 评论(0) 推荐(0)