A. And Matching

A. And Matching

A. And Matching

分析题目:这道题的题目是说给定一个2的幂次n,然后要求我们从0~n-1这n个数中不重复的挑选两个进行配对,要求配对后的每一对按位与之和为k;

而且k的话还是从0~n-1都有的;

既然题目都这样说了,那么这道题就肯定要转换为二进制来观察了,我们可以发现因为n始终是2的幂次,所以n-1的二进制表示就是111…..11,那么我们就可以知道了对于n位的一个二进制数有着000……00~111……11这样的全排列,那么我们就可以得知,对于范围内任意的数a总存在一个未被使用过的数b按位与为0(因为按位与为0是一一配对的,所以所有的数都没有遗漏),所以我们可以定义一个com函数,返回参数的按位或的值;

这样的话,k == 0的情况就已经被我们考虑了;接下来我们考虑k∈(1,n-1)的范围,我们已知0和n-1是配对的,n-1&x == x, 0&x == 0,得知这个特性后,我们只要让k和n-1配对,0和com(k)配对即可;因为com(n-1) == 0,所以k == n-1的时候要单独考虑;

接下来,我们就来探讨一下k == n-1的情况,我们可以发现,n-1和n-2配对得到n-2,还需要1,所以让n-3和1配对得到1,再让0和2配对得到0,按位与之和就为n-1了;

启示;这道题告诉我们,我们要让所有配对处于一个比较特殊的条件下(先找到全部为0),然后根据需要进行调换配对!!!

代码:Submission #152942889 – Codeforces

Original: https://www.cnblogs.com/ZheyuHarry/p/16121229.html
Author: ZheyuHarry
Title: A. And Matching

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583592/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • LeetCode 1438. 绝对差不超过限制的最长连续子数组

    题目链接 1438. 绝对差不超过限制的最长连续子数组 注意事项 multiset中取最大值:rebeginmultiset中取最小值:begin 代码 class Solutio…

    数据结构和算法 2023年6月8日
    0100
  • Kruskal算法求最小生成树

    例题链接 Kruskal算法的对比prim的区别是,前者使用了并查集的思路,而后者类似于Dijkskal算法。操作策略是,对所有边权进行从小到大的排序,然后从小到大遍历所有边权去选…

    数据结构和算法 2023年6月8日
    089
  • Win10显示连上网络却无网

    连上了以太网,图标也显示有网,但就是无网。 原因:走了代理(e.g., clash for windows),然后没有正常退出。所以一直出现没网络的情况。 解决方案:打开代理软件,…

    数据结构和算法 2023年6月8日
    096
  • 随笔1

    今后会陆续把我写得随笔发上来吖 可能有些粗拙… 吾辈当自强 不经意间,脑海里闪过大海的壮阔。我喜欢看海,只因这是祖国的造物。海之蓝,美好,纯洁,我的中国梦就如同茫茫大海…

    数据结构和算法 2023年6月7日
    073
  • mysql执行语句卡死后杀线程

    1.查询正在运行的线程 SHOW PROCESSLIST; #或 select * from information_schema.PROCESSLIST; 2.批量生成杀线程的命…

    数据结构和算法 2023年6月8日
    074
  • 使用Vite搭建Vue3+ElementUI-Plus项目过程

    本文主要记录使用Vite搭建一个Vue3+ElementUI-Plus,以及集成Vue Router的过程。本次搭建过程的Nodejs版本为 V16.14.2 创建项目 初始化项目…

    数据结构和算法 2023年6月8日
    087
  • 初识C++01:初探C++

    c++介绍 c++支持面向过程编程(如c),面向对象编程(OOP)和泛型编程; c/c++编译器比较多,window下是微软编译器cl.exe,Linux机下是GCC编译器,mac…

    数据结构和算法 2023年6月12日
    093
  • pgsql docker安装

    安装服务端 创建映射目录 mkdir /data/postgres -p 安装并启动镜像 docker run -it –name postgres \ –privileged…

    数据结构和算法 2023年6月7日
    0101
  • 算法基础知识总结

    1.基本概念 1.1 背景 1.2 术语 1.1.1 数据(Data) 分为数值型数据和非数值型数据 1.1.2 数据元素(Data Element) 数据的基本单位,在计算机程序…

    数据结构和算法 2023年6月7日
    0132
  • 搭建Redis集群

    为什么要有集群 上一篇随笔说了基本的主从概念以及搭建,一主可以有多从,如果同时访问的量过大(1000w)或者发生自然灾难,主服务肯定就会挂掉,数据服务就挂掉了 大公司都会有很多的服…

    数据结构和算法 2023年6月7日
    079
  • 1061 Dating (20 分)

    1. 题目 Sherlock Holmes received a note with some strange strings: Let’s date! 3485djDkxh4hh…

    数据结构和算法 2023年6月7日
    070
  • DFS全排列

    dfs全排列 更新对全排列递归方法的理解 u是一个局部变量,它是用来指向每一条排列序列的元素的st是全局变量数组,它能保证每一条单独的线路不发生重复 如上图所示最初u是要从1到n(…

    数据结构和算法 2023年6月7日
    0108
  • 根号算法

    CHANGE LOG 2022.2.14:重构莫队部分。 2022.2.15:重构根号分治部分。 1. 根号分治 根号分治本质上是一种 按规模大小分类讨论 的思想而非分治算法。对于…

    数据结构和算法 2023年6月12日
    0108
  • 日期时间加减

    Original: https://www.cnblogs.com/sailJs/p/16288377.htmlAuthor: yanghui01Title: 日期时间加减

    数据结构和算法 2023年6月7日
    082
  • 浅谈双指针技巧(三)利用快慢指针,查找链表中指定位置节点

    前面两篇文章主要介绍了,快慢指针在链表环中的应用。除此之外,我们还常常利用快慢指针来查找单向链表中指定位置的节点。常见的经典题目有:1、查找倒数i位置的的节点2、查找中间节点我们依…

    数据结构和算法 2023年6月8日
    0104
  • 单调栈

    栈 栈是 OI 中常用的一种线性数据结构。 栈的修改是按照后进先出的原则进行的,因此栈通常被称为是后进先出(last in first out)表,简称 LIFO 表。 下文均使用…

    数据结构和算法 2023年6月12日
    0115
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球