[51nod] 1301 集合异或和】的更多相关文章

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1301 好题!看了TJ才会. 因为是不可重集合,所以当然有前 i 个表示A和B都考虑的前 i 个,新加一个讨论放A.放B.不放. A<B在异或上看就是有一位,它前面的A和B都一样,该位A是0.B是1.该位可以枚举.然后就能dp了. 注意边界细节……和标程对拍真愉快…… #include<iostream> #include<cstdio> #in…
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1301 参考博客:https://blog.csdn.net/qq_33229466/article/details/78418414 原来是DP. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using name…
考虑不限制xor{Y}>xor{X} 考虑n=m的情况,每个数i∈[1,n]可以被分配到X集合或Y集合,或不分配 设f[S]表示{X} xor {Y} == S的方案数 有f[S]+=2*f[S^i] 考虑n!=m,那就是多余的部分得强制分配,分开两个转移即可 考虑限制xor{Y}>xor{X} 对于数B>A,在二进制表示下,就是B和A的前面相等,直到某一位B为1,A为0,之后无所谓 枚举这一位k,限制B(xor{Y})第k位为1,且B xor A第k位为0(统计答案限制范围) 状态加一…
因为当\(A<B\)时,会存在在二进制下的一位,满足这一位B的这一位是\(1\),\(A\)的这一位是\(0\). 我们枚举最大的这一位.设为\(x\)吧. 设计状态.\(dp[i][j][1/0]\)代表考虑了前i个数,异或和为j的情况下\(B\)的第\(x\)位为\(1\)或\(0\)有多少种情况. 然后随便转移一下,再随便统计答案一下就好了. 如果不知道如何转移,就看代码吧. #include<iostream> #include<cstring> #include&l…
传送门 Solution 一道比较好的dp题 想了半天组合数QAQ 首先要知道的是 A<B一定是B有一位是1且A的这位是0且前面都相等 那么肯定是要枚举这一位在哪里然后求出方案数 方案数考虑类似背包的方法分三种情况转移具体见代码 Code #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #defi…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1352 题目大意: 给出N个固定集合{1,N},{2,N-1},{3,N-2},...,{N-1,2},{N,1}.求出有多少个集合满足:第一个元素是A的倍数且第二个元素是B的倍数. 提示: 对于第二组测试数据,集合分别是:{1,10},{2,9},{3,8},{4,7},{5,6},{6,5},{7,4},{8,3},{9,2},{10,1}.满足条件的是第…
题目链接:https://www.51nod.com/contest/problem.html#!problemId=1622 第一次参加算法马拉松,我就是去看大神们疯狂秒题,然后感受绝望的orz.. 题解: 设M = P xor A,则 M∈A,M是P的补集,M与P一一对应. 设N = Q xor B,则 N∈B,N是B的补集,N与B一一对应. 所以(P xor A)xor(Q xor B) = M xor N = A xor B 即求有多少对(M,N),M∈A,N∈B,满足上式. 因为属于A…
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个固定集合{1,N},{2,N-1},{3,N-2},...,{N-1,2},{N,1}.求出有多少个集合满足:第一个元素是A的倍数且第二个元素是B的倍数.提示:对于第二组测试数据,集合分别是:{1,10},{2,9},{3,8},{4,7},{5,6},{6,5},{7,4},{8,3},{9,2},{10,1}.满足条件的是第2个和第8个. Input第1行:1个整数T(1<=T<=50000),表示…
题意: 市场中有n个集合在卖.我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数. 每个集合有相应的价格,要使买到的集合花费最小. 这里我们的集合有一个特点:对于任意整数k(k>0),k个集合的并集中,元素的个数不会小于k个. 现在让你去市场里买一些满足以上条件集合,可以一个都不买. 分析: 根据集合的特点,我们发现,如果吧集合和元素分成左右部,建出二分图,那么一定存在完美匹配. 所以我们把一个集合匹配的那个元素当成它的代表元素. 我们要求最终买到的集合个数…
matlab里关于集合运算和二进制数的运算的函数 intersect:集合交集ismember :是否集合中元素setdiff :集合差集setxor :集合异或(不在交集中的元素)union :两个集合的并unique :返回向量作为一个集合所有元素(去掉相同元素)   例如: a=[1,2,3,4,5,6,7,8,9];b=[1,4,6,9,12,14];c=intersect(a,b) % c就是a.b中相同的元素…