[abc复盘] abc297 20230409
[atc复盘] abc297 20230409
- 一、本周周赛总结
- A - Double Click
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- B - chess960
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- C - PC on the Table
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- D - Count Subtractions
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- E - Kth Takoyaki Set
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- G - Constrained Nim 2
- 1. 题目描述
- 2. 思路分析
- 3. 代码实现
- 六、参考链接
一、本周周赛总结
- 这次学了个nim游戏-sg函数。
- A 模拟。
- B 模拟。
- C 贪心模拟。
- D GCD模拟。
- E堆模拟-超级丑数。
- F 不会。
- G nim游戏-sg函数。
A - Double Click
链接: A - Double Click
1. 题目描述
2. 思路分析
按题意模拟即可。
3. 代码实现
def solve():n, d = RI()a = RILST()for i in range(n - 1):if a[i + 1] - a[i] <= d:return print(a[i + 1])print(-1)
B - chess960
链接: B - chess960
1. 题目描述
2. 思路分析
- 模拟,学了个单词parties:奇偶性。
3. 代码实现
def solve():s, = RS()d = defaultdict(list)for i, c in enumerate(s):d[c].append(i)k = d['K'][0]x, y = d['R']if not x < k < y:return print('No')x, y = d['B']if x % 2 == y % 2:return print('No')print('Yes')
C - PC on the Table
链接: C - PC on the Table
1. 题目描述
2. 思路分析
- 直接遇到合法就替换即可。不会更差。
3. 代码实现
def solve():h, w = RI()for _ in range(h):s, = RS()p = list(s)j = 0while j < w - 1:if s[j] == s[j + 1] == 'T':p[j] = 'P'p[j + 1] = 'C'j += 1j += 1print(*p, sep='')
D - Count Subtractions
链接: D - Count Subtractions
1. 题目描述
2. 思路分析
- 如果研究过循环相减法和辗转相除法,会知道循环相减法的劣势在于:当a,b差特别大时,a每次减少的幅度很小,需要更多的时间;辗转相除法可以一次把a中可能减去的b全部减完,节省了时间。
- 因此用辗转相除法模拟即可。
3. 代码实现
# Problem: D - Count Subtractions
# Contest: AtCoder - AtCoder Beginner Contest 297
# URL: https://atcoder.jp/contests/abc297/tasks/abc297_d
# Memory Limit: 1024 MB
# Time Limit: 2000 msimport sysRI = lambda: map(int, sys.stdin.buffer.readline().split())
RS = lambda: map(bytes.decode, sys.stdin.buffer.readline().strip().split())
RILST = lambda: list(RI())
DEBUG = lambda *x: sys.stderr.write(f'{str(x)}\n')MOD = 10 ** 9 + 7
PROBLEM = """https://atcoder.jp/contests/abc297/tasks/abc297_d
输入a,b(1<=a,b<=1e18)
你可以执行以下操作直到a==b- 如果a>b,令a=a-b- 如果a<b,令b=b-a
问能执行多少次操作
"""
"""发现就是gcd操作,直接用取模模拟即可。
"""# ms
def solve():a, b = RI()if a < b:a, b = b, aans = 0while b:c = a // bans += ca %= ba, b = b, aprint(ans - 1)if __name__ == '__main__':solve()
E - Kth Takoyaki Set
链接: E - Kth Takoyaki Set
1. 题目描述
2. 思路分析
- 跟超级丑数一个套路,用小顶堆模拟,每次用堆顶的最小值拿出来,和每种价格组合一下入堆。注意记录vis数组。。
3. 代码实现
PROBLEM = """https://atcoder.jp/contests/abc297/tasks/abc297_e
输入n(<=10),k(<=1e5),然后输入长度为n的数组a(1<=a[i]<=1e9),a[i]代表第i种章鱼烧的价格。
每种章鱼烧可以取任意个,你可以选任意个章鱼烧组合起来计算总价,请问能组合成的第k小总价是多少。
"""
"""跟超级丑数一个套路,用小顶堆模拟,每次用堆顶的最小值拿出来,和每种价格组合一下入堆。注意记录vis数组。
"""# ms
def solve():n, k = RI()a = RILST()a.sort()h = [0]p = {0}for i in range(k):x = heappop(h)for v in a:c = x + vif c not in p:p.add(c)heappush(h, c)print(heappop(h))
G - Constrained Nim 2
链接: G - Constrained Nim 2
1. 题目描述
2. 思路分析
- nim游戏可以用SG函数解决。
- SG(x) = mex{SG(y)|y是局面x的所有后记局面}
- SG定理:
- g是总体局面,它可以分成n个互相独立的局面:在本题就是n堆石子。
- g = g1+g2+g3_…+gn
- SG(g) = SG(g1)^ SG(g2)^ …^SG(gn)
- 当SG(g)=0的时候,这个局面的玩家必败。
- 对一堆石子打表一下找规律,发现循环节是(l+r),且从0向上增长,每l个一跳,就再除以l。
3. 代码实现
PROBLEM = """https://atcoder.jp/contests/abc297/tasks/abc297_g
nim游戏2,输入n(<2e5) l r(l,r<1e9),和长为n的数组a(a[i]<1e9)。a[i]代表第i堆石子的数量
First和Second两名玩家做游戏,轮流从任意一堆石子中取走l~r个石子,不能完成操作的玩家失败。
最优操作下问谁赢。
"""
"""nim游戏可以用SG函数解决。
SG(x) = mex{SG(y)|y是局面x的所有后记局面}
SG定理:- g是总体局面,它可以分成n个互相独立的局面:在本题就是n堆石子。- g = g1+g2+g3_..+gn- SG(g) = SG(g1)^SG(g2)^..^SG(gn)
当SG(g)=0的时候,这个局面的玩家必败。
对一堆石子打表一下找规律,发现循环节是(l+r),且从0向上增长,每l个一跳,就再除以l。
"""# 163 ms
def solve():n, l, r = RI()a = RILST()s = 0def sg(x):return x % (l + r) // lfor v in a:s ^= sg(v)if s:print('First')else:print('Second')
六、参考链接
[abc复盘] abc297 20230409相关推荐
- 复盘二进制的习题(2)
338 Counting Bits.输入一个整数n,对于 0 ≤ i ≤ num,计算每个数的二进制1的个数.例如:num = 5 返回 [0,1,1,2,1,2].希望能在O(n)的时间内完成.这里 ...
- ICPC2020小米网络选拔赛第一场复盘
1.看题 第一次组队打ICPC,可能任务分配上还有待优化 但是有个团队,感觉安心好多. 我们有三个人,开始是分开来,每人看三题 djn看ABC,jyf看DEF,我看GHI,JK没人看 我开始只来得及看 ...
- 数据分析复盘报告,用Excel轻松搞掂!
说在前面: 大家好,我是爱学习的小xiong熊妹. 才6月第一周,我的领导,作为大厂的得力基层领导,就迫不及待地让我开始写上半年复盘报告了,我真的是一口气差点上不来~ 我们知道,做数据分析一般有3个场 ...
- 20181217股市复盘
[中国A股市场最早.最准.最有良知的股市复盘节目] 各位投资朋友大家好,欢迎收听<抢财猫每日复盘>,我是你们的老朋友波哥. 节目语音收听地址:https://www.ximalaya.co ...
- 有效沟通bic法则_销售员的黄金法则,ABC三角沟通法则,借力使力不费力,附PPT...
"先生,您的这个价格,实在太低了,我做不了主,我得请示下领导--"类似的场景,你应该遇见过很多次. 我们在买东西时,和销售员砍价,很多销售员,都会抛出这么一招,"请示领导 ...
- [atc复盘] abc296 20230401
[atc复盘] abc296 20230401 一.本场总结 二. A - Alternately 1. 题目描述 2. 思路分析 3. 代码实现 三.B - Chessboard 1. 题目描述 2 ...
- 复盘一次服务安装失败问题
目录 前言 问题描述 问题分析 日志分析 重启失败服务 解决方案 总结 前言 记录一下本周服务改造过程踩坑经历.近期在做服务改造接入统一配置中心,对一些早期的服务进行升级,由此带来了不少问题,好在都在 ...
- Linux编程题:信号量同步三进程依次打印若干次ABC
三个进程依次打印ABC..... 思路及大致流程如下: 思路取自这位大哥: Linux编程题:创建3个线程分别打印abc,用信号量进行同步_cleverlemon的博客-CSDN博客 这位大哥写的是线 ...
- AI视频行为分析系统项目复盘——技术篇4:deepsort原理图
0 背景 见<AI视频行为分析系统项目复盘--技术篇1> 1 目标 尽力绘制详尽的原理图,弄懂deepsort的全局和细节,希望具备以下能力: 精通--能够魔改算法. 一叶知秋--深入了解 ...
最新文章
- 【Java】LeetCode 225. 用队列实现栈
- SQL begin end 块作用
- Web API-如何将Controller的返回值转换成HTTP response消息
- Oracle11gR2_ADG管理之恢复主库的truncate表实战
- 【Elasticsearch】Elasticsearch 热点线程 hot_threads
- Flink-org.apache.flink.streaming.api.windowing.windows.Window
- XenCenter创建VM过程
- 高优先权调度算法和高响应比优先调度算法
- 手机短信注册页面h5css3+html5模板
- FPGA学习笔记-IP核
- 万字胶囊网络超详细总结(原理加pytorch代码)
- 微博相册图片获取工具
- vue-print 实现打印功能
- clientX、offsetX、screenX、pageX的区别
- 【STM32系列汇总】博主的STM32实战快速进阶之路(持续更新)
- 利用 Lanczos 方法实现张量的 HOSVD 分解
- 亚马逊宣布与大自然保护协会合作,投资巴西基于自然的碳移除解决方案
- 【SAP BW】BW非累积模型构建
- C#开发WINCE系统的PDA程序,GetSystemMetrics获取屏幕长宽以达到自适应分辨率
- (转)Java RMI远程方法调用详解