摘要:
规律题题意:n个人站成一圈,从第一个人开始,每隔一个杀一个,问哪个人最后被杀。分析:虽然题目中认为这些人是站成一圈一杀到底,但是我们可以认为这些人是站成一排,每次从第二个活人开始,或者从第一个活人开始,从左到右每隔一个杀一个,直到只剩一个活人。如果我们每次给活人从1开始编号,那么每次从第二个杀,则每个活人的编号会变为(i - 1)/2+1,从第一个则变为i/2。最后剩一个编号为1的人。我们要做的就是记录每次从第几个开始杀,然后逆推,将编号为1的最后一个活人的编号按照刚才的规则,并根据每次从第一还是第二开始杀,逆推出其原编号。View Code #include <iostream> 阅读全文
posted @ 2011-09-01 10:42
undefined2024
阅读(256)
评论(0)
推荐(0)
摘要:
树状数组View Code #include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;#define maxn 30005struct Elem{ int a; int id;} elem[maxn];int n, m;int pos[maxn];int get[maxn];int ar[maxn];int lowb(int t){ return t & (-t) 阅读全文
posted @ 2011-09-01 09:31
undefined2024
阅读(219)
评论(0)
推荐(0)