【BZOJ 2728】 2728: [HNOI2012]与非 (线性基?)
2728: [HNOI2012]与非
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 813 Solved: 389Description
Input
输入文件第一行是用空格隔开的四个正整数N,K,L和R,接下来的一行是N个非负整数A1,A2……AN,其含义如上所述。 100%的数据满足K≤60且N≤1000,0<=Ai<=2^k-1,0<=L<=R<=10^18
Output
仅包含一个整数,表示[L,R]内可以被计算出的数的个数
Sample Input
3 3 1 4
3 4 5Sample Output
4HINT
样例1中,(3 NAND 4) NADN (3 NAND 5) = 1,5 NAND 5 = 2,3和4直接可得。
Source
【分析】
看错题了。。这题也好迷人啊。。。
给定k位二进制下的n个数,求[l,r]区间内有多少个数能通过这几个数与非得到
首先观察真值表 我们有A nand A = not A
然后就有not ( A nand B ) = A and B
与和非都弄到了,我们就可以做出一切逻辑运算了,比如说或和异或
A or B = not ( ( not A ) and ( not B ) )
A xor B = ( A or B ) and ( A nand B )
然后我们对于位运算可以发现一个性质
对于某两位来说,如果对于每一个数,这两位上的值都是相同的,那么这两位无论怎么计算最终结果都会是相同的
比如说10(1010)和7(0111),第一位和第三位都是相同的,所以最后无论怎么计算,这两位都是一样的
然后我们这么处理:
对于每一位,我们枚举每一个数,若该数该位上为0,我们就对这个数取非
然后把所有数取与
该位上都是1,所以取与后一定是1;对于其他位,只要有这两位不同的数存在,那么这位一定是0
最后取与的结果中与该位全部相同的位都是1,其余都是0
对于每一位这样处理,标记去重,然后可以得到线性基,保证每一位存在且仅存在于线性基中的一个数上
拿去从大到小贪心处理即可 得到二进制序列即为答案
特判L=0
来自:http://blog.csdn.net/popoqqq/article/details/40077481?utm_source=tuicool
~和!不同,~是把二进制数每一位取反。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long
#define Maxn 1010 LL a[Maxn],w[Maxn];
int tot;
bool vis[Maxn]; LL get_ans(LL x)
{
if(x==-) return -;
LL now=,ans=;
for(int i=;i<=tot;i++)
{
if((now|w[i])<=x)
{
now|=w[i],ans+=(1LL<<tot-i);
}
}
return ans;
} int main()
{
int n,k;LL l,r;
scanf("%d%d%lld%lld",&n,&k,&l,&r);
for(int i=;i<=n;i++) scanf("%lld",&a[i]);
LL tt=(1LL<<k)-;
memset(vis,,sizeof(vis));
tot=;
for(int j=k-;j>=;j--) if(!vis[j])
{
LL now=tt;
for(int i=;i<=n;i++)
if(a[i]&(1LL<<j)) now&=a[i];
else now&=~(a[i]&tt);
w[++tot]=now;
for(int i=;i<j;i++) if((1LL<<i)&now) vis[i]=;
}
printf("%lld\n",get_ans(r)-get_ans(l-));
return ;
}
2017-04-06 19:36:34
【BZOJ 2728】 2728: [HNOI2012]与非 (线性基?)的更多相关文章
- BZOJ.4184.shallot(线段树分治 线性基)
BZOJ 裸的线段树分治+线性基,就是跑的巨慢_(:з」∠)_ . 不知道他们都写的什么=-= //41652kb 11920ms #include <map> #include < ...
- BZOJ - 2460 :元素 (贪心&线性基)
相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力取决于使用的矿石.一般地,矿石越多则法力越强,但物极必反:有时,人们 ...
- BZOJ 3569 DZY Loves Chinese II ——线性基
[题目分析] 腊鸡题目卡题面. 大概的意思就是给一张无向图,每次删掉其中一些边,问是否联通. 首先想到的是Bitset,可以做到n^2/64.显然过不了. 然而这是lyd在给我们讲线性基的时候的一道题 ...
- BZOJ 2460:元素(贪心+线性基)
题目链接 题意 中文题意 思路 线性基学习 题目要求选价值最大的并且这些数异或后不为0,可以考虑线性基的性质:线性基的任意一个非空集合XOR之和不会为0.那么就可以贪心地对价值从大到小排序,加入线性基 ...
- BZOJ 3569: DZY Loves Chinese II(线性基)
传送门 解题思路 首先构造出一个生成树,考虑不连接的情况.假设连通两点的非树边和树边都断掉后不连通,那么可以给所有的非树边随机一个互不相同的值,然后树边的权值为过他两端点的非树边权值的异或和,这个可以 ...
- BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基
[题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...
- BZOJ CF388D. Fox and Perfect Sets [线性基 数位DP]
CF388D. Fox and Perfect Sets 题意:求最大元素\(le n\)的线性空间的个数 给神题跪了 orz 容易想到 每个线性基对应唯一的线性空间,我们可以统计满足条件的对应空间不 ...
- bzoj 4184 shallot——线段树分治+线性基
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4184 本来想了可持久化trie,不过空间是 nlogn (出一个节点的时候把 tot 复原就 ...
- BZOJ.3105.[CQOI2013]新Nim游戏(线性基 贪心 博弈论)
题目链接 如果后手想要胜利,那么在后手第一次取完石子后 可以使石子数异或和为0.那所有数异或和为0的线性基长啥样呢,不知道.. 往前想,后手可以取走某些石子使得剩下石子异或和为0,那不就是存在异或和为 ...
- BZOJ 2460: [BeiJing2011]元素 贪心,线性基
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 解法:从大到小排序,依次贪心的添加到当前集合就可以了,需要动态维护线性基.用拟阵证明 ...
随机推荐
- DIV+CSS制作斜线效果记录
DIV+CSS 斜线效果很简单,只需设置一下CSS Border 的边框就能有斜线效果.代码分享给大家,你可以自己变通. 提示要注意两点:1.DIV宽高的定义.2.DIV在 IE6 中默认是有高度的. ...
- 利用Addon Domain和A记录使两个域名同时指向同一个网站
今天碰到这样的需求:已有网站A.com, 以及新注册的域名B.net, 现需要将B.net指向与A.com相同的内容. 这里提出的方法是在空间后台添加Addon domain, 以及在域名B.net后 ...
- Tornado/Python 学习笔记(一)
1.源代码下载及安装:http://www.tornadoweb.org/en/stable/ 2.python中xmlrpc库官方文档:https://docs.python.org/3/libra ...
- IE9 下 ellipsis bug fix
fiddle: http://jsfiddle.net/tagliala/TtbuG/10/ original: https://github.com/FortAwesome/Font-Awesome ...
- 【Windows使用笔记】神舟笔记本的control center
首先,神船大法好. 然后,因为我的船风扇声音有点大啊,在实验室感觉就很吵,但是它的背板温度又不是很高,所以想设置下风扇的启动. 所以需要用到神船自带的control center软件. 长这样. 应该 ...
- 华东师范大学第十届ECNU Coder程序设计竞赛
华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...
- CentOS7安装Hadoop2.7完整步骤
总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoo ...
- IP负载均衡技术
参考链接:http://www.360doc.com/content/12/1117/19/820209_248442094.shtml
- MySQL之查漏补缺
1.TRUNCATE语句和DELETE语句的区别 1.delete语句,是DML语句,truncate语句通常被认为是DDL语句. 2.delete语句,后面可以跟where子句,通常指定where子 ...
- csu 1803(余数分类)
1803: 2016 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 565 Solved: 364[Submit][Status][Web Board ...
.jpg)