当前位置: 首页 > news >正文

[acwing周赛复盘] 第 69 场周赛20220917

[acwing周赛复盘] 第 69 场周赛20220917

    • 一、本周周赛总结
    • 二、4615. 相遇问题
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 三、4616. 击中战舰
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 四、4617. 解方程
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 六、参考链接

一、本周周赛总结

  • T2卡半天很难受,赛后得知是9月6号下午茶原题,更难受了。
  • T3位运算找纸笔找半天,很难受。
  • 总之难受。 在这里插入图片描述

在这里插入图片描述

二、4615. 相遇问题

链接: 4615. 相遇问题

1. 题目描述

在这里插入图片描述

2. 思路分析

签到题,速度加起来计算时间。
最后乘回去判断整除。

3. 代码实现

import collections
import io
import os
import sys
from collections import deque

if sys.hexversion == 50923504:
    sys.stdin = open('input.txt')
    RI = lambda: map(int, input().split())
else:
    input = sys.stdin.readline
    input_int = sys.stdin.buffer.readline
    RI = lambda: map(int, input_int().split())

RS = lambda: input().strip().split()
RILST = lambda: list(RI())

MOD = 10 ** 9 + 7


def solve(x,y,a,b):
    # print(x,y,a,b)
    ans = (y-x)//(a+b)
    if ans * (a+b) == y-x:
        print( ans)
        return
    print(-1)


if __name__ == '__main__':
    t, = RI()
    for _ in range(t):
        x,y,a,b = RI()

        solve(x,y,a,b)

三、4616. 击中战舰

链接: 4616. 击中战舰

1. 题目描述

在这里插入图片描述

2. 思路分析

CF原题

  • 先扫描所有已经攻击过的位置,由于这些位置上都没有船,那么船都分布在空位中。
  • 处理出所有空位,计算每个空位最多能放多少艘船,假设是c;现在已知有a艘船,那么这a艘船分布在这c个位置里。
  • 每次打击的最优方案显然是每次覆盖一艘船,我们如果打c-a次,可能正好打不中,那么打hit = c-a+1次就可以了。
  • 从空位中找hit个位置即可。

3. 代码实现

import collections
import io
import os
import sys
from collections import deque
from functools import lru_cache

if sys.hexversion == 50923504:
    sys.stdin = open('input.txt')
    RI = lambda: map(int, input().split())
else:
    input = sys.stdin.readline
    input_int = sys.stdin.buffer.readline
    RI = lambda: map(int, input_int().split())

RS = lambda: input().strip().split()
RILST = lambda: list(RI())

MOD = 10 ** 9 + 7


def solve(n, a, b, s):
    ks = [-1]
    for i, v in enumerate(s):
        if v == '1':
            ks.append(i)
    ks.append(n)
    kong = []
    c = 0
    for i in range(1, k + 2):
        d = ks[i] - ks[i - 1] - 1
        c += d // b
        kong.append((d, ks[i - 1], ks[i]))
    hit = c - a + 1
    print(hit)
    ans = []
    for d,i,j in kong:
        while i+b< j:
            i += b
            ans.append(i)
            if len(ans) == hit:
                print(' '.join(map(lambda x: str(x + 1), ans)))
                return




if __name__ == '__main__':
    n, a, b, k = RI()
    s, = RS()

    solve(n, a, b, s)

四、4617. 解方程

链接: 4617. 解方程

1. 题目描述

在这里插入图片描述

2. 思路分析

这题找纸笔找半天,难受啊。

位运算知识。

  • 这题涉及到异或,异或是个性质很特殊的运算:
    • 通常如果搜索题出现异或,即状态转移通经过异或,则一般都需要遍历,因为很难有累计公式。
    • 异或同时具有加法和减法的性质:不进位的加法/不借位的减法。
  • 说回这题,由于题目给出的公式很难搞,我们先简单转化一下:a-x=a^x。
  • 题目转化为,有多少个x满足被a-x=a^x。
  • 即多少个x能满足:异或即减法
  • 我们列一下01的异或组合发现:
    1. 1^0=1-0
    2. 1^1=1-1
    3. 0^1=1!=0-1
    4. 0^0=0-0
  • 也就是说,当a的对应位是0的时候,x对应位只能是0,一种情况;
  • 当a的对应位是1的时候,x对应位可以是1或者0,都满足减法等于异或。
    在这里插入图片描述

3. 代码实现

import collections
import io
import os
import sys
from bisect import bisect_right
from collections import *
from itertools import accumulate
from math import inf

if sys.hexversion == 50923504:
    sys.stdin = open('input.txt')
    RI = lambda: map(int, input().split())
else:
    input = sys.stdin.readline
    input_int = sys.stdin.buffer.readline
    RI = lambda: map(int, input_int().split())

RS = lambda: input().strip().split()
RILST = lambda: list(RI())

MOD = 10 ** 9 + 7


def solve(a):
    # a = 1
    # print(a)
    c = bin(a).count('1')
    # a.bit_count() py3.10以上才有
    print(2**c)


if __name__ == '__main__':
    t, = RI()
    for _ in range(t):
        a, = RI()
        solve(a)



六、参考链接

相关文章:

  • CSDN编程竞赛-第六期(上)
  • 基于 V2X 的车联网安全互信体系架构分析
  • 【图像检测】基于 AlexNet 和 SVM 实现异常螺母检测附matlab代码
  • vue开发-从源码开始解读一个智慧园区项目
  • 接入Twitter和Facebook分享踩坑记录
  • 这次主要的配置
  • 工作5年,没接触过高并发编程,这正常吗?
  • 【微信小程序】带你进入小程序的世界
  • 机器学习-线性回归 二维问题
  • 分享从零开始学习网络设备配置--2.1 交换机基本配置
  • 大数据ClickHouse进阶(九):ClickHouse的From和Sample子句
  • vue3 | HighCharts实战自定义封装之径向条形图
  • Web前端系列技术之Web APIs基础(从基础开始)③
  • 线段树基本操作——建树+单点修改+区间查询
  • python/php/java/nodejs通讯录管理系统vue+elementui
  • [nginx文档翻译系列] 控制nginx
  • HomeBrew常规使用教程
  • Java编程基础24——递归练习
  • Java读取Properties文件的六种方法
  • JS+CSS实现数字滚动
  • Laravel 实践之路: 数据库迁移与数据填充
  • mysql 5.6 原生Online DDL解析
  • overflow: hidden IE7无效
  • php面试题 汇集2
  • 百度地图API标注+时间轴组件
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 码农张的Bug人生 - 见面之礼
  • 入口文件开始,分析Vue源码实现
  • 深度学习中的信息论知识详解
  • 事件委托的小应用
  •  一套莫尔斯电报听写、翻译系统
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #LLM入门|Prompt#3.3_存储_Memory
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (c语言)strcpy函数用法
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (七)Java对象在Hibernate持久化层的状态
  • (实战篇)如何缓存数据
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)memcache、redis缓存
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • . NET自动找可写目录
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • :中兴通讯为何成功
  • @GetMapping和@RequestMapping的区别
  • [ IO.File ] FileSystemWatcher
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BROADCASTING]tensor的扩散机制
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)