3.31 每日一题题解

Arpa’s obvious problem and Mehrdad’s terrible solution

涉及知识点:

  • 数学

solution:

  • 题意就是让你找出给定数列里两两异或值为x的组合个数
  • 暴力n方,会超时
  • 根据异或运算性质:a^b=x; x^a=b; x^b=a;
  • 所以可以直接O(n)的遍历每一个数,查找x异或这个数是否存在即可

std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 1e6 + 10;
int a[maxn],sum[maxn];
int main()
{
    int n,x,y,z;
    ll ans = 0;
    cin>>n>>x;
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n;i++){
        z = x^a[i];
        if(sum[z])
            ans += 1ll*sum[z];
        sum[a[i]]++;
    }
    cout<<ans<<endl;
    return 0;
}

原文地址:https://www.cnblogs.com/QFNU-ACM/p/12603321.html

时间: 2024-08-30 12:40:50

3.31 每日一题题解的相关文章

3.25 每日一题题解

tokitsukaze and Soldier 题目链接:https://ac.nowcoder.com/acm/problem/50439 涉及知识点: 优先队列/贪心 solution: 每个士兵都有战力Vi和一个限制Si,我们先按照每个士兵的Si从大到小进行排序 然后我们根据排好序的士兵遍历 因为士兵的Si从大到小,所以遍历的过程中,当前遍历的士兵对应的si一定是最小 所以我们可以维护一个大小由Si较小的优先队列 如果队列大小小于当前遍历士兵的Si,就扔到优先队列里,一旦士兵的人数超过限制

3.21 每日一题题解

小K的疑惑 题目链接:https://ac.nowcoder.com/acm/problem/20823 涉及知识点: 思维/搜索/简单图论 solution: 题目要求??????(??,??) = ??????(??,??) = ??????(??,??) ,首先要满足每两个节点的距离都是偶数,即??????(??,??) = ??????(??,??) = ??????(??,??) = 0 由于树上任意两点的距离是唯一的,所以如果i到j的距离是奇数,j到k的距离是奇数,那么i到k的距离一

3.22 每日一题题解

Farewell Party 题目链接:https://codeforces.com/problemset/problem/1081/B 涉及知识点: 思维/构造 solution: 考虑颜色不同的人数不是很好想,下面我们考虑帽子颜色相同的人数 样例2的3 3 2 2 2,反过来就是2 2 3 3 3 这样是不是就能看出来如何判断了,把颜色相同的人加到一起,如果加起来人的个数 = 对应颜色相同的人数,就对了 当然不是! 如果输入 2 2 2 2 ,我们会输出Impossible,其实我们忽略了一

4.6 每日一题题解

三角形 题目链接:https://ac.nowcoder.com/acm/contest/4911/B 涉及知识点: 背包dp solution: 背包是dp算法中非常经典的一个问题(如果打算学dp的同学必须要学会背包问题),具体的大家可以看我发在群里的背包九讲pdf 关于这道题目,我们可以对每一个宝箱做一个背包 题目要求从每一个宝箱中有且只能取一个,所以设dp[i][j]为枚举到第i个宝箱,可以获得钱数等于j的方案数 那么转移方程就等于 dp[ i ][ z ] += dp[ i-1 ][ z

4.11 每日一题题解

完全平方数 题目链接:https://ac.nowcoder.com/acm/contest/37/A 涉及知识点: 暴力/二分 solution: \(祝大家周末愉快\) \([1,n]区间的完全平方数的个数等于\) \(\sqrt{n}\) \([L,R]区间的完全平方数的个数可以理解为\) $\sqrt{R} - \sqrt{L-1} $ \(0也是完全平方数,L和R是否为0判断一下即可\) \(当然将所有平方数放入数组,lowerbound二分也是时间复杂度允许的可行解\) std: #

老男孩教育每日一题-2017年5月17日-使用三剑客进行变化格式

1.题目 原始数据: 17/Apr/2015:09:29:24 +0800 17/Apr/2015:09:30:26 +0800 17/Apr/2015:09:31:56 +0800 18/Apr/2015:09:34:12 +0800 18/Apr/2015:09:35:23 +0800 19/Apr/2015:09:23:34 +0800 19/Apr/2015:09:22:21 +0800 20/Apr/2015:09:45:22 +0800 期望结果: 2015-04-17 09:29:

C语言每日一题之No.9

再做决定之前,我还是做好自己该做的.我不希望几年后会悔恨自己为什么在最该努力的时候不愿意吃苦.尊敬的女王陛下,请接题: 一.题目:有已按升序排好顺序的字符串a,编写程序将字符串s中的每个字符按升序的规则插到字符串a中,最后输出"abdefghjkmnptwy". 二.思路:既然是已经排好序的,就用二分法查找的思想 将字符串s中的每个字符依次作为key拿来和字符串a做比较并且插入 三.程序 1 #include <stdio.h> 2 #include <string.

C语言每日一题之No.1

鉴于在学校弱弱的接触过C,基本上很少编程,C语言基础太薄弱.刚好目前从事的是软件编程,难度可想而知.严重影响工作效率,已无法再拖下去了.为此,痛下决心恶补C语言.此前只停留在看书,光看好像也记不住,C这东西毕竟是练出来的,所以从今天开始,每日一道C语言题目,从题目入手来补知识漏洞.题目比较基础,如不堪入目,还请见谅. 题目:输入三个整数,输出最大的数 思路:定义三个变量用来存储输入的整数 比较三个变量的大小,找到最大的数 定义一个变量存储来存储最大的数 程序: 1 #include <stdio

C语言每日一题之No.8

正式面对自己第二天,突然一种强烈的要放弃的冲动,在害怕什么?害怕很难赶上步伐?害怕这样坚持到底是对还是错?估计是今天那个来了,所以身体激素有变化导致情绪起伏比较大比较神经质吧(☆_☆)~矮油,女人每个月总有这么几天的....晚上闺蜜打电话来,共同探讨了作为单身女性身在一线城市的生活,互相安慰互相关心,心里一下子就温暖了许多.总在这个时候,你会觉得,这个冷静的城市里你不是一个人在行走,还有另一颗心牵挂着你.嘿嘿,回来该学习还学习.现在不管坚持是对的还是错的,你都踏上了研发这条不归路,那就一条黑走到