题目传送门:https://arc092.contest.atcoder.jp/tasks/arc092_b

  这场arc好难啊。。。这场感觉不像正常的arc。。。其实这道题还可以更早写出来的,但是蒟蒻解不等式的时候搞错解集了,一个错调了半天。。。

  我的做法是首先按位考虑,求所有的ai+bj中每个数位的xor和。

  首先我们可以想到,如果有两个数x,y,且0<x,y<=2k,那么当0<=x+y<2k时,x+y在2k这一位上的贡献肯定为0。

  但是如果2k+1<=x+y<2k+1+2k,那么x+y在2k这一位上的贡献依然为0,此时就相当于x+y在2k这一位上的贡献被后面的数的进位抹去了。

  于是用在计算答案的第k位时,把序列a,b中的数的最后k位算出来,设为a’,b',然后把b'排个序,用二分的方式找a'i+b'j>2k-1和2k<=a'i+b'j<2k+2k-1的方案数,两者相减后判断一下奇偶性就行了。

  我觉得肯定有更快的写法...这个$O(28nlog(n))$的写法巨慢……

  代码:

#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#include<queue>
#include<vector>
#define ll long long
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
#define inf 0x3f3f3f3f
#define mod 1000000007
#define eps 1e-18
inline ll read()
{
ll tmp=; char c=getchar(),f=;
for(;c<''||''<c;c=getchar())if(c=='-')f=-;
for(;''<=c&&c<='';c=getchar())tmp=(tmp<<)+(tmp<<)+c-'';
return tmp*f;
}
using namespace std;
ll a[],b[];
ll tmp[];
int n;
ll find(ll k)
{
int l=,r=n+;
while(l<r){
int mid=(l+r)>>;
if(tmp[mid]>=k)r=mid;else l=mid+;
}
return l;
}
int main()
{
int i,k;
n=read();
for(i=;i<=n;i++)a[i]=read();
for(i=;i<=n;i++)b[i]=read();
ll ans=;
for(k=;k<=;k++){
ll base=(<<k)-;
for(i=;i<=n;i++)tmp[i]=b[i]&base;
sort(tmp+,tmp+n+);
ll cnt=;
for(i=;i<=n;i++)
cnt+=n-find((<<(k-))-(a[i]&base))+;
for(i=;i<=n;i++)
cnt-=find((<<k)+(<<(k-))-(a[i]&base))-find((<<k)-(a[i]&base));
if(cnt&)ans+=(<<(k-));
}
printf("%lld\n",ans);
}

arc092 D

最新文章

  1. Oracle 遇到的问题 (1)
  2. 在iOS中使用Phonegap防止Webview被上下拖动
  3. ASP.NET 缓存
  4. encode与decode,unicode与中文乱码的问题
  5. error splicing file: file too large解决方法
  6. SQL日语词汇
  7. jar 打包后的文件执行时出现错误:RunJar jarFile [mainClass] args...
  8. Android开发 第一篇
  9. DDNS client on a Linux machine
  10. Jmeter连接SqlServer数据库进行压力测试
  11. failed (1113: No mapping for the Unicode character exists in the target multi-byte code page), client: 127.0.0.1...
  12. React-Native 之 项目实战(三)
  13. SaltStack 介绍和安装
  14. Linux下执行自定义的可执行命令无效原因
  15. 【转】sqlserver使用sql导出索引
  16. C++入门之初话多态与虚函数
  17. JSP(8)—EL案例和JSTL案例
  18. Flume Channel Selector
  19. pickle file in matlab
  20. Basler和Matrox的配置及调试

热门文章

  1. LeetCode: Validate Binary Search Tree [098]
  2. Reverse and Compare(DP)
  3. 项目中调用ExcelCom组件时的配置流程
  4. 检测当前的语言环境是否使用了 UTF-8 编码(三篇文章:先用setlocale()设置编码,再用nl_langinfo()进行检测。locale对象可以使用langLocale.name() == &quot;zh_CN&quot;判断)
  5. [转】[tip] localhost vs. (local) in SQL Server connection strings
  6. 教你使用SQL数据库索引(1-15)
  7. PyQt4打包exe文件
  8. start() vs. run()
  9. AWK Demo
  10. 【转】Python的hasattr() getattr() setattr() 函数使用方法详解