[SRM603] WinterAndSnowmen】的更多相关文章

Description Sol 设 \(A=\text{XOR}(X)\),\(B=\text{XOR}(Y)\). 因为 \(A<B\),所以写下他们的二进制表示,一定是最高的几位先是相等,紧接着有一位 \(A=0\) 而 \(B=1\),后边就随意了. 嗯那我们可以枚举 \(A\) 和 \(B\) 二进制的 \(LCP\) 长度,这样计数就不重不漏了. 设当前枚举的长度为 \(p\), \(f[i][j][0/1][0/1]\) 表示决策完数字 \(i\),\(A\) 的前 \(p\) 位异…
https://vjudge.net/problem/TopCoder-12891 暴力想法是:dp[i][s1][s2]前i个,第一个集合xor是s1,第二个集合xor是s2方案数O(n^3) 有xor 不妨按位考虑 枚举两个集合xor的LCP长度L 考虑从高到低前L位相同,第L+1位xor(X)=0,xor(Y)=1的方案数 剩下的低位就随便选择了 f[i][s][0/1][0/1]表示前i个数,前L位高位的xor和是s,第L+1位分别是0/1,0/1的方案数 每一个合法的方案都会被枚举到恰…
原文链接https://www.cnblogs.com/cly-none/p/9695526.html 题意:求有多少对集合\(S,T\)满足:\(S \subseteq \{1,2...n \}, T \subseteq \{1,2...m\},S \bigcap T = \emptyset\),且\(S\)中所有元素的异或和小于\(T\)中所有元素的异或和.对\(10^9+7\)取模. \(n,m \leq 2000\) 首先,通过记录当前两个集合的异或和,转移时考虑每个元素的3种选择,容易…
DIV1 250pt 题意:有很多袋子,里面装有苹果和橘子(也可能没有),给出每个袋子里有多少个苹果,多少个橘子.如果每个袋子里含有水果的总数都不小于x个,则可以从每个袋子里都拿出x个水果(拿出苹果和橘子的总数为x),将所有拿出的水果混合成一份礼物,问可能混合出的礼物的种数. 最多50个袋子,每个袋子里的苹果和橘子的数量 <= 10^6. 解法:枚举即可,枚举从每个袋子里拿出的水果的数量x,然后求出,拿出总数是x的情况下,苹果最多能拿多少个,最少能拿多少个,相减即可. 至于怎么求最多和最少,由于…
A 枚举x , 然后对于确定的x , 最后总的apple数对应了唯一的orange数,因此问题转化为求apple的取值范围; apple的取值范围: max为每个bag取最多的apple , min为每个bag取最小的apple , 容易证明[min,max]是连续的. using namespace std; class WinterAndPresents { public: long long getNumber(vector <int>, vector <int>); };…
n<=1e9就要考虑倍增.矩阵乘法这种了 假设L=0 考虑枚举二进制下,所有X与R的LCP长度,前len高位 对于第len+1位,假设R的这一位是1 如果一个x的这一位是0了,那么后面可以随便填 我们就钦定一个len+1位是0的x0来挽救,别的随便填,最后距离K差多少,就让这个x0来变成这个数 而且,为了不重不漏,len必须是这些x的“LCP”,所以必须有两个x第len+1位不同(所以其实R的len位是0的len可以直接跳过没有意义) 外层枚举LCP,内层我们DP: f[i][0/1][0/1]…
日常TC计划- Easy(250pts): 题目大意:有n个篮子,每个篮子有若干个苹果和橘子,先任取一个正整数x,然后从每个篮子中选出x个水果,把nx个水果放在一起,输出一共有多少种不同的组成方案.其中n<=50,每个篮子中每种水果的个数<=1000000,可能有篮子不存在水果. 首先考虑x的大小,由于每个篮子中都要取出x个水果,那么apple[i]+orange[i]>=x,于是我们先将所有的篮子扫一遍,得到x的上届. 接下来我们枚举x,考虑每一个篮子中的情况, 由于最后要求的是方案数…