BZOJ2728: [HNOI2012]与非】的更多相关文章

容易发现x nand x=not x.并且使用这个性质有x and y=not(x nand y)=(x nand y)nand(x nand y).也就是说nand运算可以作为not和and运算使用.并且显然not和and运算可以表示nand运算,那么两者等价.事实上这就可以表示所有位运算了. 那么考虑位运算有什么事干不了.注意到如果每个数的第i位都和第j位相同, 那么无论怎么操作这两位都是相同的.大胆猜想这也是充分的,即除了这件事其他都能干. 这样位就被分成了很多类,每一类的取值要求相同.类…
线性基乱搞,非正解= = #include<cstdio> int n,m; typedef long long ll; ll l[60],j,s,t; void up(ll& i,ll j){ j^=i,i<j?0:i=j; } void ins(ll j){ for(int i=m-1;~i;--i){ up(j,l[i]); if(j>>i&1){ for(int k=i-1;~k;--k) up(j,l[k]); for(int k=m-1;k>…
[BZOJ2728][HNOI2012]与非 Description 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 5 Sample Output 4 HINT 样例1中,(3…
2728: [HNOI2012]与非 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 813  Solved: 389 Description 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]内可以被计算出的…
2728: [HNOI2012]与非 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 786  Solved: 371[Submit][Status][Discuss] Description Input 输入文件第一行是用空格隔开的四个正整数N,K,L和R,接下来的一行是N个非负整数A1,A2……AN,其含义如上所述. 100%的数据满足K≤60且N≤1000,0<=Ai<=2^k-1,0<=L<=R<=10^18 Outpu…
先打出nand表 0 nand 0=1 1 nand 1=0 0 nand 1=1 1 nand 0=1   容易发现(!a)=a nand a 然后(a&b)=!(a nand b) 然后(a|b)=!((!a)&(!b)) 然后(a^b)=(a|b)&(a nand b)   所以通过nand我们可以实现任意一种位运算 所以每一位我们想得到0/1都是可以的 按道理[L,R]中符合位数要求的数都能得到   然而我们发现这样一个显然的结论: 如果A序列中每个数的第i位和第j位都相等…
题目描述 NAND(与非)是一种二元逻辑运算,其运算结果为真当且仅当两个输入的布尔值不全为真.NAND运算的真值表如下(1表示真,0表示假): 两个非负整数的NAND是指将它们表示成二进制数,再在对应的二进制位进行NAND运算.由于两个二进制数的长度可能不等,因此一般约定一个最高位K,使得两个数的二进制表示都不 超过K位,不足K位的在高位补零.给定N个非负整数A1,A2......AN和约定位数K,利用NAND运算与括号,每个数可以使用任意次,请你求出范围[L,R]内可以被计算出的数有多少个.…
题意 定义 NAND(与非)运算,其运算结果为真当且仅当两个输入的布尔值不全为真,也就是 A NAND B = NOT(A AND B) ,运算位数不会超过 \(k\) 位, 给你 \(n\) 个整数 \(A_i\) ,这些数能任意进行无数次与非运算,最后问能运算出多少个在 \([L, R]\) 区间的数. \(k \le 60, n \le 1000, A_i < 2^k, 0 \le L \le R \le 10^{18}\) 题解 参考了 kczno1 孔爷的题解. 这个运算初看不太优美,…
题目大意:给定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 ) 然后我们对于位运算能够发现一个性质 对于某两位来说.假设对于每个数.这两位…
传送门 题意:给出$N$个范围在$[0,2^k-1]$的整数,定义位运算$NAND$为位运算$AND$的逆运算,求$[L,R]$中有多少数能成为若干个前面给出的整数.若干括号和$NAND$运算组成的表达式的结果(每一个数在一个表达式中可以出现多次). OI生涯第一道数位DP 可以使用$NAND$表示所有基本位运算(这个可以手玩出来qwq),那么$NAND$像基本位运算一样会有一个性质:如果所有给出的整数中第$i$位和第$j$位相同,那么最后的结果的第$i$位与第$j$位也一定相同,而不满足这个条…