AtCoder Beginner Contest 356

Contest

从比赛开始第三分钟开始记:

  • 00:00~00:02:A 题。

  • 00:02~00:07:B 题。

  • 00:07~00:16:C 题。

  • 00:16~00:43:D 题。

  • 00:43~01:02:E 题。

  • 01:02~结束:摆烂。

A - Subsegment Reverse

  • 给定 n,l,r。输出将序列 A=(1,2,,n)[l,r] 翻转后的样子。
  • lrn100

模拟。可以用 reverse 函数。

B - Nutrients

  • m 种营养成分。对于第 i 种营养成分,他的目标是每天摄入至少 Ai 单位。今天,他吃了 n 种食物,从第 i 种食物中摄入了 Xi,j 单位的营养成分 j。判断他是否满足了所有 m 种营养成分的目标。
  • n,m100Ai,Xi,j107

m 个桶维护每种营养的数量。

C - Keys

  • 你有 n 把编号为 1,2,,n 的钥匙。其中一些是真正的钥匙,而其他的是假钥匙。

    有一扇门,你可以插入任意数量的钥匙。只有当至少插入 k 把真正的钥匙时,门才会打开。

    你对这些钥匙进行了 m 次测试。第 i 次测试如下:

    • 你向门插入了 ci 把钥匙 ai,1,ai,2,,ai,ci

    • 测试结果用一个英文字母 ri 表示:

      • ri= o表示第 i 次测试时门X打开了。

      • ri= x表示第 i 次测试时门X没有打开。

    2n 种可能的组合,确定哪些是真正的钥匙,哪些是假钥匙。在这些组合中,找出不与任何测试结果矛盾的组合数量。

  • k,n15m100

2n 暴力枚举每种钥匙是不是真的。检查即可。

D - Masked Popcount

  • 给定 n,m,求 i=0npopcount(k&m)
  • n,m2601

xi 表示 x 的第 i 个二进制位。

逐二进制考虑。若当前枚举位 i,我们需要计算:

有多少 x[0,n] 使得 (x&m)i=1

m 是个定值。如果 mi=0,那么显然上述答案为 0。否则上述答案为:

有多少 x[0,n] 使得 xi=1

类似于数位 DP。拆贡献答案为:

(j=i+1aj×2j1)+ai×(1+j=0i1aj×2j)

E - Max/Min

  • 给定 n,a1an。求 i=1n1j=i+1nmax(ai,aj)min(ai,aj)
  • n2×105ai106

首先可以统计 a 中每种元素的出现次数 cnti,然后将 a 排序并去重。令 b1bm 为去重后的 a,那么答案为:

i=1n1j=i+1nmax(ai,aj)min(ai,aj)=i=1m1j=i+1mcntbi×cntbj×bibj=j=2mi=1j1cntbi×cntbj×bibj=j=2mcntbj×i=1j1cntbi×bibj

后面这坨预处理 cnti 前缀和并整除分块。总时间复杂度 O(nai)

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