【发布时间】:2019-04-20 06:50:43
【问题描述】:
我试图在hackerearth 中解决这个问题i demand a trial by combat,我主要解决了但我在3 之后在测试用例中得到了TLE 我的解决方案需要时间复杂度
O(Q*R+L-1) 这意味着 O(N^2) 有没有办法解决这个问题 在 O(N) 或更短的时间内 这是我的解决方案
#include <stdio.h>
#include <stdlib.h>
#define ll long long
int main(){
ll q,x,n,r,l;
scanf("%lld %lld",&n,&q);
ll arr[n];
for(ll i=0; i<n; i++){
scanf("%lld",&arr[i]);
}
while(q--){
scanf("%lld %lld %lld",&l,&r,&x);
ll sum = 0;
for(ll i=l-1; i<r; i++){
sum += arr[i]^x;
}
printf("%lld\n",sum);
}
}
问题:
给定一个大小为 N 的整数 A 数组。现在给定 Q 查询以在该数组上执行。
在每个查询中,给定 3 个空格分隔的整数 L、R 和 X,您需要输出 X 与从 L 到 R 范围内的每个数组元素的 XOR 总和(基于 1 的索引) )。
sum (i=l to r) of A[i] XOR X In simple terms
约束:
1
1
1
1
【问题讨论】:
标签: c algorithm performance bit-manipulation bitwise-operators