单淘汰赛制两队相遇算法

2023-10-30

对于这种单循环赛制acm也是常遇到这样的题那么,对于这样的比赛我们要怎么模拟所有的可能是一个问题,我们如何判断两个队在某一轮是否会遇到呢

我们其实可以利用二进制的性质

设某一轮比赛为i,求j和k两只队伍是否能比赛,下面我们用二进制来表示队伍的队号

0001(1)

0010(2)

0011(3)

0100(4)

0101(5)

0110(6)

0111(7)

1000(8)

我们让所有的队伍先减1

得到

0000(1)

0001(2)

0010(3)

0011(4)

0100(5)

0101(6)

0110(7)

0111(8)

对于第i=1局比赛只能是相连的两支队伍进行比赛,我们观察一下发现1-2,3-4,5-6,7-8,他们除了最后一位,他们的前缀都同那么我们抹去最后的i-1位,即进行右左移操作(j-1)>>(i-1),对于最后一位来说相连不同的数只是相差1或0

我们利用^异或操作可以使最后一位变为相等,(2n)^1=2n+1,(2n+1)^1=2n,如当j=4(100)时(j-1)^1=2与k=3,k-1相等

接下来第i=2局比赛,

对于1来说他可与3,4比赛我们再抹去后(i-1)位此时,1为000,3为001,4为001,同上也只与最后一位不同我们可进行同样的操作,2与1抹去最后一位后都000,所以情况相同,对于5来说能与7,8比赛也是抹去(i-1)位同样的也是最后一位不同,而5与6抹去后相同

那么当第i=3局比赛时

对于1来说可与5,6,7,8比赛,那么我们抹去后(i-1)位1为00,5=01,6=01,7=01,8=01所以也是相同的情况

综上:判别条件是((j-1)>>(i-1))^1==((k-1)>>(i-1)

for(int i=1;i<=len;i++) dp[0][i]=1;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=len;j++)
            for(int k=1;k<=len;k++)
            if((((j-1)>>(i-1))^1)==((k-1)>>(i-1)))


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单淘汰赛制两队相遇算法 的相关文章

  • 排列组合

    排列组合的基本公式为 实现A xff0c C xff0c 并把他们封装称为一个函数 xff0c 之后使用起来就会比较方便 int A int n int m int res 61 1 for int i 61 n i gt n m i re
  • Permutation 排列组合,主要是字符串的排列offer上的题目,还有leetcode的组合

    一个简洁版的结果过程说明 xff0c 固定一个位 xff0c 变换其他位 a b c d a b d c a c b d a c d b a d c b a d b c void perm char list int i int n int
  • 二进制转换

    我们平时使用的十进制 十进制转二进制 整数情况 11表示成二进制数 11 2 5 余 1 5 2 2 余 1 2 2 1 余 0 1 2 0 余 1 得0结束 11的二进制表示为 从下往上 1011 小数情况 0 9表示成二进制数 0 9
  • 7.24 两道二进制题目练习的总结

    1 兴趣是最好的老师 首先我们把根据PE文件的格式知道这个文件本身有错误 所以不能在IDA中打开 我们先把它在010Editor exe中修改一下 我们把PE头改为50 45 00 00 然后就把它拉入IDA中 然后打开 找到有程序的开始进
  • 7.26 二进制练习题

    给你个礼物你能收到吗 打开这个exe文件后 我们看到了它让我们输入礼物提取码 我们先随便输入数据 按回车显示提取码错误还有输错的次数 我们发现这里存在着一个循环 然后我们在IDA里面打开这个文件 int cdecl main int arg
  • poj 2096 Collecting Bugs

    Problem poj org problem id 2096 vjudge net contest 151678 problem Q Reference blog csdn net xingyeyongheng article detai
  • IEEE二进制浮点数算术标准(IEEE 754)

    IEEE二进制浮点数算术标准 IEEE 754 是20世纪80年代以来最广泛使用的浮点数运算标准 为许多CPU与浮点运算器所采用 这个标准定义了表示浮点数的格式 包括负零 0 与反常值 denormal number 一些特殊数值 无穷 I
  • 程序员面试金典--面试26之介于0和1之间的实数,类型为double,返回它的二进制表示

    题目描述 有一个介于0和1之间的实数 类型为double 返回它的二进制表示 如果该数字无法精确地用32位以内的二进制表示 返回 Error 给定一个double num 表示0到1的实数 请返回一个string 代表该数的二进制表示或者
  • Atcoder Beginner Contest 295

    A Probably English AC代码 include
  • 单淘汰赛制两队相遇算法

    对于这种单循环赛制acm也是常遇到这样的题那么 对于这样的比赛我们要怎么模拟所有的可能是一个问题 我们如何判断两个队在某一轮是否会遇到呢 我们其实可以利用二进制的性质 设某一轮比赛为i 求j和k两只队伍是否能比赛 下面我们用二进制来表示队伍
  • 二进制的算法题怎么做

    内容会持续更新 有错误的地方欢迎指正 谢谢 告诉大家一个诀窍 能高效解决大多数二进制的题目 假设有一个数n 那么n n 1 的作用 n n 1 得到的结果相当于把整数的二进制表示中最右边的那个1变成0 例1 求二进制数中1的个数 输入一个整
  • 逆向python生成的可执行文件

    先安装pyinstaller pip install pyinstaller i https pypi douban com simpl 写一个简单的脚本 print hello world pyinstaller基本用法 常用的可选参数如
  • 病毒反调试跟踪

    跟踪一个反调试巨多的病毒样本 1 调用 QueryPerformanceCounter反调试 这个API调用了封装ZwQueryPerformanceCounter系统调用的ntdll NtQueryPerformanceCounter 0
  • CUDA编程 之 二进制工具与反编译

    两个 反编译工具 cuobjdump and nvdisasm 参考 http blog csdn net dark5669 article details 62264312
  • Linux下的dd命令

    简介 dd命令是Linux下的一个重要的磁盘操作命令 它的主要作用是备份和复制磁盘 dd的语法是 dd if 输入文件的名称 of 输出文件的名称 参数 值 if 输入文件的名称 指定输入文件的名称 可以是文件 设备 目录等 of 输出文件
  • 数学基础课之01二进制

    关于Java的移位符 左移位 lt lt 右移位 gt gt 表示算术右移 gt gt gt 表示逻辑右移 python同Java 由于java的二进制数最高位为符号位 0为正 1为负 右移位涉及到最左补0还是补1的问题 逻辑右移直接补0即
  • 机器数的原码、反码、补码、移码表示以及浮点数的二进制表示

    初学计算机组成原理时 有点儿搞不清楚机器数的各种表示方法 今天在这里总结一下 希望对大家有帮助 首先明确两个概念 机器数是指将 和 数字化的数 其中用 0 表示 1 表示 而对应的有 和 的数则称为真值 机器数的表示方法 1 原码表示法 符
  • 组合数学(持续更新)

    文章目录 排列与组合 四个基本计数原理 集合的排列 集合的组合 多重集合的排列 多重集合的组合 鸽巢原理 排列与组合 四个基本计数原理 1 1 1 加法原理 设集合
  • 详解原码、反码、补码——深入理解补码

    学过计算机原理的人都知道原码 反码 补码 但是有多少人知道为什么会有这三种码呢 这三种码又是用来干嘛的呢 众所周知 在计算机的世界只有01 那么显然所有的数都得转成二进制 这样计算机才能够理解 如何将一个十进制的数转成二进制就不说了 说下原
  • 计算机中的二进制表示-4和5

    十进制 二进制 5 00000000 00000000 00000000 00000101 4 11111111 11111111 11111111 11111100 负数的二进制如何得出 相信正数的二进制表示大家都懂 但是这个 4怎么来的

随机推荐

  • 怎么使用51单片机实现人脸识别?

    使用 51 单片机实现人脸识别可以通过以下步骤来实现 准备必要的硬件设备 包括 51 单片机 摄像头和相应的连接线 安装并配置相应的开发环境 如 Keil IAR 等 准备人脸识别所需的人脸数据库 这可以通过手动收集人脸图像并进行标记来实现
  • linux内核态和用户态(通俗易懂)

    一 内核态 用户态概念 内核态 也叫内核空间 是内核进程 线程所在的区域 主要负责运行系统 硬件交互 用户态 也叫用户空间 是用户进程 线程所在的区域 主要用于执行用户程序 二 内核态和用户态的区别 内核态 运行的代码不受任何限制 CPU可
  • 在为水质担忧吗?——水质检测大屏展示系统启动(inscode直观运行)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • 动态规划法求解编辑距离问题

    问题描述 设A和B是两个字符串 现在要用最少的字符操作次数 将字符串A转换为字符串B 这里所说的字符操作共有3种 1 删除一个字符 2 插入一个字符 3 将一个字符替换另一个字符 例如 A sfdqxbw B gfdgw 结果为4 问题求解
  • STM32超声波模块测距

    特别注意 单独t link只能提供3 3v电压 模块接5v电压只能收到3 3V 供电的时候请接上micro口 模块介绍 HC SR04超声波模块可提供2cm 400cm的距离感测功能 测量精度可以达到3mm 通过声音340m s t 2可以
  • TCP3次握手连接协议和4次握手断开连接协议

    TCP IP 状态机 如下图所示 在TCP IP协议中 TCP协议提供可靠的连接服务 采用三次握手建立一个连接 如图1所示 SYN包表示标志位syn 1 ACK包表示标志位ack 1 SYN ACK包表示标志位syn 1 ack 1 1 第
  • 关于stm32f429的MDA2D的M2M模式

    LTDC的使用问题 可参考官方例程的配置 需要注意的是 它只是一个LCD控制器 需要定义缓存的地址 可以设置在flash里 但是不便于操作 一般还是建议设置外部SDRAM里 LTDC中DMA2D的使用问题 429中LTDC的2D加速功能还比
  • 记Tomcat删除war包问题

    由于不清楚tomcat部署原理 误认为tomcat部署完成之后 可以把war删除 然后以后每次部署 只需要增量部署就行了 然后还怕由于war包的存在 增量部署的内容会被覆盖掉 不清楚war包什么时候会自动重新部署 于是 rm rf mm w
  • Python将.py文件打包成.exe可执行文件

    1 安装Pyinstaller库 pip install pyinstaller 2 在 py文件的所在文件夹Shift 右键 打开后输入pyinstaller F 要打包的文件名称 例如Mqtt py F参数表示覆盖打包 如果有旧的会覆盖
  • [电路设计]按键方案

    电路设计 按键方案 本文记录和介绍几种按键解决方案 包括普通按键 按键编码电路 ADC按键的工作原理 1 普通按键 一般使用的按键原理图如下图所示 由按键 上拉电阻和消抖滤波电容组成 按键断开时 K e y I i n
  • 级数求和公式

    级数求和公式是用于求解有限的或无限的等差 等比数列的总和 它的一般形式为 Sn a1 a2 a3 an 其中 a1 为该级数的首项 an 为该级数的末项 Sn 表示该级数的和 1 如果是有限等差数列 其求和公式为 Sn n a1 an 2
  • Spring Cloud Eureka注册中心组件搭建

    第一步 Idea 新建spring boot项目 选中Cloud 中 Eureka Server 第二部 配置文件 将application application 后缀改为application yml 也可以不修改 我是用的yml 粘贴
  • 计算机指令格式

    计算机的指令格式与机器的字长 存储器的容量及指令的功能都有很大的关系 从便于程序设计 增加基本操作并行性 提高指令功能的角度来看 指令中应包含多种信息 但在有些指令中 由于部分信息可能无用 这将浪费指令所占的存储空间 并增加了访存次数 也许
  • idea中处理依赖注入爆红问题

    1 这是idea里的编译异常 这里会出现依赖注入爆红的情况 有以下两种方式 1 1 方式一 在进行注入的时候 并没有UserMapper这个接口 所以爆异常 解决方式 需要创建一个UserMapper接口并交给Spring容器管理 1 2
  • 【转】伺服电机三环控制的原理(位置环,运动环,电流环)

    运动伺服一般都是三环控制系统 从内到外依次是电流环速度环位置环 1 首先电流环 电流环的输入是速度环PID调节后的那个输出 我们称为 电流环给定 吧 然后呢就是电流环的这个给定和 电流环的反馈 值进行比较后的差值在电流环内做PID调节输出给
  • 剑指offer(C++版本)

    剑指offer c 版本 二维数组查找 替换空格 从尾到头打印链表 重建二叉树 用两个栈实现队列 旋转数组的最小数字 斐波那契数列 跳台阶 矩阵覆盖 二进制1的个数 数值的整数次方 调整数组顺序使奇数位于偶数前面 链表中倒数第k个结点 反转
  • 【ANN预测】基于遗传算法优化 ANN附matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • qt在windows下交叉编译arm架构程序

    1
  • 《Kubernetes部署篇:Ubuntu20.04基于二进制安装安装kubeadm、kubelet和kubectl》

    一 背景 由于客户网络处于专网环境下 使用kubeadm工具安装K8S集群 由于无法连通互联网 所有无法使用apt工具安装kubeadm kubelet kubectl 当然你也可以使用apt get工具在一台能够连通互联网环境的服务器上下
  • 单淘汰赛制两队相遇算法

    对于这种单循环赛制acm也是常遇到这样的题那么 对于这样的比赛我们要怎么模拟所有的可能是一个问题 我们如何判断两个队在某一轮是否会遇到呢 我们其实可以利用二进制的性质 设某一轮比赛为i 求j和k两只队伍是否能比赛 下面我们用二进制来表示队伍