题意就不多说了, 题可以转化为排队问题, 我们可以使用树状数组来维护,代码如下: #include #include #include using namespace std;const int maxn = 50010;int n;int c[maxn];int lowbit(int x){...
分类:
其他好文 时间:
2015-12-05 22:23:13
阅读次数:
200
模板题#include"cstdio"#include"cstring"#define lowbit(i) i&(-i)using namespace std;const int MAXN=100005;typedef long long LL;LL bit0[MAXN];LL bit1[MAXN]...
分类:
编程语言 时间:
2015-11-22 15:59:54
阅读次数:
136
#include #include using namespace std;int t, x, y, a[32010], b[32010];#define N 32010int lowbit(int x){ return x&(-x);//返回x所在节点,很巧妙 eg:d[1]=a1;d[...
分类:
编程语言 时间:
2015-10-25 20:40:53
阅读次数:
227
分治法和字典树都可以,都是递归,但字典树耗内存 从第一bit开始,若相同则xor为0,分到同一部分,不相同则统计,且此时lowbit为这一bit,最后结果要乘以2 1 /*分治法*/ 2 #include 3 #define MOD 998244353 4 5 using namespac...
分类:
其他好文 时间:
2015-10-13 20:58:53
阅读次数:
167
题目链接二维树状数组 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define ll long long 7 #define re(i,n) for(int i=0;i0; i-=lowbit(i)).....
分类:
其他好文 时间:
2015-10-05 13:00:28
阅读次数:
197
【链接】click here~~
【题意】:
给你一个D(0≤D231),保证D的二进制中1的数量在s1和s2之间
然后让你求一个最小的数,使得这个数的二进制数量大于等于s1,小于等于s2,且大于 d
【思路】虽然是比赛时候的一道水题,但是开始看到的时候并没有想到好的思路,最后还是学弟强行过掉,今天突然想到了可以用lowbit来求
首先看到D的范围是很大的,那么如何 构造呢?
这里...
分类:
其他好文 时间:
2015-09-28 10:07:05
阅读次数:
254
从D+1开始,对于一个数x从它出发到x+lowbit(x)之前1的数量都是单调不减的,因此1的数量在一个范围内是一个区间。每次判断一下有没有和[s1,s2]有没有交集。#includeusing namespace std;inline int read(){ char c; while(c=...
分类:
其他好文 时间:
2015-09-27 18:44:17
阅读次数:
226
可并堆或set+并查集。。。set: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define lowbit(a) ((a)&(-(a)))10 #define ...
分类:
其他好文 时间:
2015-09-20 17:33:14
阅读次数:
191
题目大意:有一张N×m的数表,其第i行第j列(1 2 3 using namespace std; 4 #define N 100000 5 #define ll long long 6 #define lowbit(x) x&(-x) 7 typedef pair pii; 8 ...
分类:
编程语言 时间:
2015-09-07 07:01:39
阅读次数:
181
#include #include #include #include #include #include #include #define MAXN 100005int c[MAXN];int lowbit(int x){ return x&(-x);}void update(int x,i...
分类:
其他好文 时间:
2015-09-05 11:11:31
阅读次数:
149