02 2013 档案

摘要:有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如 阅读全文
posted @ 2013-02-26 16:45 xindoo 阅读(161) 评论(0) 推荐(0)
摘要:判断一个整数x是否是2的N次方。 方法之一是判断x & (x - 1)==0。若为True,则x是2的N次方;若为False,则x不是2的N次方。 有人质疑,他证明了“2的n次方一定符合这个条件”, 却并没有证明“符合这个条件的一定是2的n次方”呀!更没有证明“不符合条件的一定不是2的n次方”呀。 现在,从两个方面来证明这个方法的正确性 证明之前,先给出一些定义 &运算的定义:A & B 表示将A和B转化为二进制,然后按照对位&运算。 例如:17 & 9 100012 =1710 & 1012 =910 --------------------- 阅读全文
posted @ 2013-02-12 01:14 xindoo 阅读(328) 评论(0) 推荐(1)
摘要:这个题目的意思是输入n个数,m组询问,每组询问包含两个整数k,v,意思是询问整数v第k次出现的位置。#include #include #include using namespace std;int main(){ map > mm; //我们这里使用了STL里的map和vector int n, m, k, v, i, a; while (scanf("%d%d",&n,&m) != EOF) { mm.clear(); for (i = 1;i <= n;i++) { scanf... 阅读全文
posted @ 2013-02-06 22:44 xindoo 阅读(133) 评论(0) 推荐(0)
摘要:基础数据结构例题例题1UVa11995 ACI Can Guess the Data Structure!ADT题解例题2UVa11991 ACEasy Problem from Rujia Liu排序或者善用STL题解例题3LA3135 ACArgus优先队列;模拟题解例题4UVa11997 ACK Smallest Sums优先队列;有序表合并题解例题5LA3644 ACX-Plosives并查集 题解例题6LA3027 ACCorporative Network加权并查集 题解习题UVa11988ACBroken Keyboard (a.k.a. B... 阅读全文
posted @ 2013-02-06 22:27 xindoo 阅读(308) 评论(0) 推荐(0)
摘要:Problem DescriptionGiven two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...... , b[M] (1 int n, m;int a[1000005];int b[10005];int f[10005];void getfail(){ f[0] = 0; f[1] = 0; for (int i = 1; i < m; i++) { int j = f[i]; while (j && b[i] != b[j]) ... 阅读全文
posted @ 2013-02-06 21:29 xindoo 阅读(132) 评论(0) 推荐(0)