PeaceSheep's blog PeaceSheep's blog
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)

PeaceSheep

以最简洁、易懂的话解决问题
首页
  • 分类
  • 标签
  • 归档
相关链接
提建议&咨询&赞赏
GitHub (opens new window)
  • OS比赛

  • 程序设计

    • domjudge相关的一些常见问题
    • resolver滚榜工具使用指南
    • 暑期集训

      • 关于"暑期集训"目录的说明
      • 7月22日-ABC149
        • \[ABC149-A\]字符串
          • 题意
          • 解法
        • \[ABC149-B\]贪婪的高桥
          • 题意
          • 解法
        • \[ABC149-C\]下一个质数
          • 题意
          • 解法
        • \[ABC149-D\]预测与限制
          • 题意
          • 解法
        • \[ABC149-E\]贪婪的高桥
          • 题意
          • 解法
        • \[ABC149-E\]贪婪的高桥
        • \[ABC148-F\]玩树上的标签游戏
          • 题意
          • 解法
      • 7月23日-ABC150
      • 7月24日-ABC151
  • 竞赛
  • 程序设计
  • 暑期集训
PeaceSheep
2024-07-25
目录

7月22日-ABC149

# [ABC149-A]字符串


# 题意

拼接两个字符串TTT和SSS。

# 解法

  1. 直接定义两个string类型变量SSS和TTT并输入。
  2. 输出T+ST+ST+S即可。

# [ABC149-B]贪婪的高桥


# 题意

第一个人有A块饼干,第二个人有B块饼干。第一个人会先吃自己的,把自己吃完再吃第二个人的。问K次之后两个人分别有多少饼干。

# 解法

分类讨论即可。

如果K≤AK \leq AK≤A,直接输出A−KA-KA−K和BBB,即第一个人吃掉自己的KKK块饼干。 如果A<K≤A+BA < K \leq A+BA<K≤A+B,则输出000和B−(K−A)B-(K-A)B−(K−A),即第一个人吃完自己的饼干,又吃了第二个人K−AK-AK−A块饼干。

如果K>A+BK > A+BK>A+B,直接输出000和000,因为两个人的饼干都被吃完了。


# [ABC149-C]下一个质数


# 题意

找到大于或等于XXX的最小质数。

# 解法

从XXX开始往后枚举,判断是不是质数。

判断一个数字XXX是否是质数的方法为:令iii从222一直枚举到X\sqrt{X}X​,如果XXX除以iii的余数为0,则XXX不是质数。如果一直枚举到X\sqrt{X}X​都没有出现能整除的情况,则XXX是质数。

拓展:素数筛,本题用不到,感兴趣的同学可以了解。


# [ABC149-D]预测与限制


# 题意

剪刀石头布游戏,已知机器的手势序列,如果自己赢了,在出剪刀、石头、布三种手势的情况下,获得三种不同的得分。

有一个限制,第iii轮不能出和第i−ki-ki−k轮一样的手势。

# 解法

我们假设没有限制,那么就都出赢的手势就可以。

假设i=10,k=5i=10,k=5i=10,k=5。如果第555轮出的石头,并且第101010轮也需要出石头才能赢,那么第101010轮就只能输(因为规则限制)。假设我们为了让第101010轮赢而放弃第555轮,第101010轮赢和第555轮赢,获得的得分是一样的。

本题前面出的手势对整体得分没有影响,无后效性,可以使用贪心。


# [ABC149-E]贪婪的高桥


# 题意

高桥在一个聚会上进行多次握手以增加聚会的快乐度。每位普通嘉宾有一个代表其“力量”的数值。高桥通过同时握住两位嘉宾的手来增加快乐度,快乐度的增加等于这两位嘉宾力量值的和。

# 解法

从n个人中任意选两个(允许相同),最多有n×nn \times nn×n中选法,需要找出这些选法中,组合出来最大的mmm个。

由于nnn较大,不能把所有组合都计算出来再排序。可以使用二分答案,假设我们按照能获得的快乐值从最大到最小的顺序握手,二分最后一次握手能达到的最大的快乐值。


# [ABC149-E]贪婪的高桥


二分的对象是最后一次握手可以获得的最大快乐度xxx。二分范围是[1,2×A[𝑛]][ 1,2×A[𝑛] ][1,2×A[n]],其中𝐴[𝑛]𝐴[𝑛]A[n]是排序后的最大力量值(因为两个最大值握手得到的快乐度最高)。

二分快乐度,判断是否可以进行MMM次快乐度大于等于midmidmid的握手,如果有,则 l=mid+1l=mid+1l=mid+1,否则r=midr=midr=mid;

验证函数 check(x):

  • 对于每个固定的xxx,我们需要判断是否可以进行MMM次快乐度大于等于xxx的握手。
  • 对于每个嘉宾iii,我们计算需要的另一位嘉宾的最小力量x−A[i]x - A[i]x−A[i],使用二分查找在排序后的数组中找到这个最小力量的位置 pos。
  • 所有大于等于这个力量的嘉宾都可以与嘉宾iii握手,累计这样的握手数 cnt 和相应的快乐度总和 ans。
  • 使用前缀和数组来快速计算所有符合条件嘉宾的力量和。

需要注意的是,可能有多个组合的快乐值和最后一次握手的相同,因此还需要减去那些。


# [ABC148-F]玩树上的标签游戏


# 题意

这道题目是一个关于树形结构的追捕游戏,其中包含一个由N个顶点组成的树,Takahashi和Aoki分别站在不同的顶点上。游戏的规则是,Takahashi试图尽可能延长游戏时间,而Aoki则试图尽快结束游戏。两人轮流移动到相邻的顶点,如果两人达到同一顶点,游戏结束。题目要求计算在两人都采取最优策略的情况下,Aoki需要执行多少次移动才能结束游戏。

# 解法

考虑记录所有点到uuu和到vvv的最短距离,由于只有n−1n-1n−1条边,可以使用DFS算法完成。

如果点iii到vvv的距离小于点iii到uuu的距离,这意味着TTT不可能会来到这里,因为TTT需要尽可能延长游戏时间。

如果点iii到vvv的距离大于点iii到uuu的距离,则记录这个iii到vvv的距离,选一个最大的即可。

由于问题询问的是AAA的行走次数,因此最终答案需要减一。

编辑 (opens new window)
上次更新: 2025/04/15, 10:52:45
关于"暑期集训"目录的说明
7月23日-ABC150

← 关于"暑期集训"目录的说明 7月23日-ABC150→

最近更新
01
ubuntu安装g++显示已有但是输入g++又找不到命令
04-15
02
使用cloudflare-r2搭建webdav
04-08
03
LLM聚合平台客户端对比
03-29
更多文章>
Theme by Vdoing | Copyright © 2022-2025 PeaceSheep
冀ICP备2022004632号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式