AtCoder Beginner Contest 365 题解

AtCoder Beginner Contest 365

擦,F 假了

A

判断闰年

B

输出次大值的下标

用 pair 排序后即可

C

给定一个数组 An 和整数 M,尝试找到一个最大的 m,使得:

i=1nmin(Ai,m)M

不等号左边显然随着 m 的增大而增大,所以可以二分一个 m,然后判断即可

D

两个人玩 n 局剪刀石头布。已知 A 的每一局的决策,求 B 的决策在满足下面条件的情况下,最多能赢几局:

  1. B 的连续两局决策不同
  2. B 任意一把都不能输给 A

直接设计状态 f[i][0/1/2]表示玩了前 i 局游戏,第 i 局出 剪刀/石头/布 时最多能赢几局,直接转移即可。

E

给定序列 An,统计如下式子的值:

l=1n1r=l+1ni=lrAi

首先拆分成前缀和,记 BnAn 的异或前缀和,等价于求:

l=1n1r=l+1nBrBl1

观察发现就是求所有 yx2ByBx

拆位,每次统计第 i 位的贡献。

按顺序从左到右计算,每次枚举一个 i,变成统计有多少 j<i1 满足 Bj=0,Bi=1Bj=1,Bi=0

就是数 01 的个数,前缀和即可。

F

不难发现贪心地往右走直线是对的。

然后考虑用线段树上二分处理出 i 的上/下边界向右最多能走到哪里。到了极限之后,肯定就直接往上或往下走到边界

然后这个东西,你再加个倍增,就可以回答询问了。感觉不难吧,这个套路以前在 CF 见过。

赛时想的差不多,不过有个细节假了。

G

发现这是一道怎么看都不可能非多项式写的题。

考虑根号分治,对于段数小的,暴力统计,总共有 O(n) 种,统计复杂度 O(B),时间复杂度 O(nB)

对于段数多的,暴力统计他和别的段的答案,总共有 O(nB) 个,统计复杂度 O(n),时间复杂度 O(n2B)

均值不等式,B=n 最优。

posted @   lingfunny  阅读(109)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示