Codeforces Round #626 D. Present】的更多相关文章

D. Present 题目大意:给你一个大小是n的序列,求两两之间相加进行异或之后的答案. 这个题目我并没有想到怎么写,有点偷懒于是就去看了题解.. 题解很套路... 题解: 因为这个是用到了异或,所以不可避免的肯定要用到二进制. 所以考虑进行拆位,当我要考虑第 \(i\) 位,那么比这一位高的都不会产生影响,所以对所有的数取模处理一下,然后再枚举每一个数满足条件的一个区间,这个可以二分来解决. 因为每一个数的区间是 \(0=<a_i<=2^{i+1}-1\),所以之和的区间是 \(0<…
比赛链接: Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics) D.Present 题意: 给定大小为$n$的a数组,求下面式子的结果: $$ (a_1 + a_2) \oplus (a_1 + a_3) \oplus \ldots \oplus (a_1 + a_n) \\ \oplus (a_2 + a_3) \oplus \ldots \oplus (a_2 + a_n) \\ \ldot…
A. Even Subset Sum Problem 题意 给出一串数,找到其中的一些数使得他们的和为偶数 题解 水题,找到一个偶数或者两个奇数就好了 代码 #include<iostream> #include<cstdio> #include<cstring> #define def 110 using namespace std; long a[def]; int main() { long _,ans0,ans1,ans2,n,i; for(scanf(&quo…
题目链接:https://codeforces.com/contest/1323/problem/D 题意:给了大小为4e5的数组a,其中1<=ai<=1e7.求所有点对和的异或和,即: 思路: 按位来考虑,因为两个元素的和<=2e7,而2e7小于225,因此结果最多是25位.我们考虑答案中每一位ans[k]的值(0<=k<=24). 显然,ai中仅有0-k位会对第k位有影响,因此对数组a全部对2k+1取模,得到数组b,对b按升序排序. 这样,0<=bi<=2k+…
题意: 求n个数中两两和的异或. 思路: 逐位考虑,第k位只需考虑0~k-1位,可通过&(2k+1-1)得到一组新数. 将新数排序,当两数和在[2k,2k+1)和[2k+1+2k,2k+2)之间时该位为1,又因为两数的最大和为2*(2k+1-1)=2k+2-2, 即当两数和在[2k,2k+1)和[2k+1+2k,2k+2-2]之间时该位为1. 对于每个数,找到和 大于等于2k 小于2k+1 大于等于2k+1+2k 的三个临界点(因为两数之和一定小于等于2k+2-2,所以第四个临界点可以忽略),…
Contest Info Practice Link Solved A B C D E F 4/6 O Ø Ø  Ø  Ø  - O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Solutions B.Count Subrectangles 题意: 给出$a$和$b$两个数列,构造一个矩阵$c$,使得$c_{i,j}=a_i∗b_j$,求矩阵$c$中有多少个面积为$k$的小矩阵里的值全为$1$ 思路: 我们对面积为$k$的矩形边长进行枚举,即遍历$k$的所有因子(只用枚举到$…
(A) Even Subset Sum Problem 题解:因为n非常非常小,直接暴力枚举所有区间即可. #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef double db; int t,l,r,n,a[110],s[110]; int main(){ cin>>t; while(t--){ cin>>…
题目连接:https://codeforces.com/contest/1323/problem/B 题意:给一个大小为n的a数组,一个大小为m的b数组,c数组是二维数组c[i][j]=a[i]*b[j],问面积为k的矩形有几个. 题解:先把k的所有因子存入一个数组里,然后遍历因子,表示在a数组有 i 个连续的1,那么如果在b数组里有 k/i 个连续的1,形成的矩形面积就是k(线代的矩阵乘法自己脑补一下吧),计算出a数组中符合条件的个数乘以b数组中符合条件的个数,然后把每个因子下的都加起来就是答…
题意: 给你一个二分图,求左侧端点的所有可能子集中的点相连的右侧端点的权值的和的最大公因数. 题解: 若所有右侧端点均不在同一左侧子集中,则求所有权值的最大公因数即可 . 否则,将在相同左侧子集中的右侧权值合并,求合并权值与其余权值的最大公因数. 证明 : $gcd(a,a+b)=gcd(a,b),gcd(a,b,c)=gcd(a,gcd(b,c)) .$ Tips: Time Limit 2s ios::sync_with_stdio(false) + cin.tie(nullptr) + c…
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Little beaver is a beginner programmer, so informatics is his favorite subject. Soon his info…