
二进制
dance_in_the_dark
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CF 706D Vasiliy's Multiset
desription题目大致意思就是有一个整数集合A,A刚开始只有0,现在有m(m<=200000)个操作,操作分为询问和修改操作。对于修改操作,分为添加和删除一个数(<=10910^9),数据保证删除的数一定是A中存在的。对于询问操作,给出一个数x,要求找出集合A中,与x异或后最大的那个数。Solution这又是一道有关二进制的题目,我们可以构造一棵trie数,把集合A中的数全部丢进这颗trie树原创 2016-08-18 14:39:35 · 460 阅读 · 0 评论 -
NOIP 提高 公约数
Description给定一个正整数,在[1,n]的范围内,求出有多少个无序数对(a,b)满足gcd(a,b)=a xor b。Solution我们可以发现对于一个a、b,gcd(a,b)=gcd(b,a-b),又gcd(b,a-b)<=min(b,a-b),所以gcd(a,b)<=a-b。而考虑异或操作,对于a,b两个值的异或,一定是相同位为0,否则为1,那么对于a-b,转换成二进制上的加减,一定原创 2016-08-19 21:33:49 · 454 阅读 · 0 评论 -
NOIP提高模拟 Binary
DescriptionData ConstraintSolution我们考虑到询问and、or、xor一个数之类的问题,通常都是将二进制上的位分开来处理。想到这个就好做了。我们开20颗树状数组,第i颗树状数组记录权值在0~2i−12^i-1的数的个数,也就是个权值线段树。对于一个修改操作,我们只需将原本axa_x在树状数组中的值的位置上减1,在y在树状数组中的位置加1,更新一下axa_x即可。而对于原创 2016-08-17 21:54:22 · 382 阅读 · 0 评论 -
NOIP提高组 积木
DescriptionData ConstraintSolution对于这种题我们考虑用状态压缩dp来做。我们设出f[i][j][k]表示现在的二进制状态为i(表示选了哪些数),当前最顶层的积木为j,积木j的摆放状态k(k为1、2、3)。然后直接转移即可。代码#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #原创 2016-09-03 09:28:57 · 628 阅读 · 0 评论 -
【JZOJ4937】【GDKOI2017模拟1.12】与运算
DescriptionData ConstraintSolution对于一个数x,假如存在y,使得x⊆y,那么把y放在x前面一定不会使答案变差。所以我们设g[i]表示输入中包含i的数的个数(即i是该数子集)。设f[i]表示放到i时的答案。那么显然f[i]=max(f[i],f[j]+(g[i]−g[j])∗i)f[i]=max(f[i],f[j]+(g[i]-g[j])*i)。(g[i]−g[j]g原创 2017-01-12 20:02:01 · 653 阅读 · 0 评论