首页 > 其他分享 >Atcoder-ABC281-DEF题解

Atcoder-ABC281-DEF题解

时间:2022-12-10 23:12:02浏览次数:62  
标签:Atcoder 小中 10 题解 元素 leq 100 ABC281 dp

Atcoder Beginner Contest 281

D. Max Multiple (DP)

题意

在长度为 \(N\) 的序列 \(A\) 中,找到 \(K\) 个元素其和为 \(D\) 的倍数,找出满足要求最大的和,没有则返回 -1

数据范围

\(1\leq K \leq N \leq 100\)
\(1\leq D \leq 100\)
\(0\leq a_i \leq 10^9\)

思路

  • 观察数据范围 ,\(N,D,K\) 都是 100 以内,再尝试贪心选前 \(K\) 大来手摸一下,发现就是个经典的 DP 。
  • 容易设计出状态 \(dp_{i,j,k}\) 表示前 \(i\) 个选 \(j\) 个元素和的模数为 \(k\) 的最大和,答案为 \(dp_{N,K,0}\) 。
    • PS: 模数为 \(k\) 的这一维状态,灵感其实来源于一些数位 dp 的题目,但其实也算很常见的住哪个台设计了。
  • 转移:\(dp_{i,j,k} = \max(dp_{i-1,j,k}, dp_{i-1,j-1,(k-a_i)%D})\) ,当然 % D 以后要转成正数。
  • 时间复杂度 \(O(N*K*D)\)

Solution

评测记录

E. Least Elements (STL(multiset)、维护增量)

题意

给了长度为 \(N\) 的数列 \(A\) ,和整数 \(M,K\) 。

需要求出每个长度为 \(M\) 的连续子段中,前 \(K\) 小的元素和。

数据范围

\(1\leq K \leq M \leq N \leq 2\times 10^5\)
\(1\leq a_i \leq 10^9\)

思路

  • 从 \(K=M\) 开始考虑(其实是我最开始读错了以为就是个优先队列裸题)
    • 这种情况下,就是个优先队列裸题,考虑维护增量的方式,一个优先队列就搞定了。
  • 如果 \(K<M\) 呢?
    • 实际上依然考虑维护增量,每次移动的时候,在子段中将插入的元素为 \(x\),要被删除的元素为 \(y\) 。
    • 因为我们只关心前 \(K\) 小个元素的数值,因此简单分类讨论一下,考虑先做删除后做插入
    • 删除 \(y\) 。
    • \(y\) 不在前 \(K\) 小中,不做操作。
    • \(y\) 在前 \(K\) 小中,和应该减去 \(y\) ,并且调整第 \(k\) 小的元素为比它大的一个元素。
    • \(x\) 不在前 \(K\) 小中,不做操作。
    • \(x\) 在前 \(K\) 小中,第 \(K\) 小应该向更小的方向移动一次。
    • 将 \(x\) 插入。
  • 大概流程入上,思路出来就可以借用 STL 了。使用 multiset<pair<int,int>> 维护 {a[i], i} 即可。
  • 实现会有一些小细节但是不多,根据实现方式,我为了方便将 \(K=M\) 的 case 直接特判掉了,防止 RE。
  • 时间复杂度 \(O(N*logN)\)

Solution

评测记录

F. Xor Minimization (Trie 上分治 or DP)

原题:CF1285D

评测记录

标签:Atcoder,小中,10,题解,元素,leq,100,ABC281,dp
From: https://www.cnblogs.com/Roshin/p/ABC281.html

相关文章

  • ABC281D Max Multiple
    Sourcehttps://atcoder.jp/contests/abc281/tasks/abc281_dIdea由于选择引发的DP问题(背包问题)。不妨令\(dp[i][j][k]\)表示从\(a_1..a_i\)中选出来\(j\)个元素,使得他......
  • 常见问题解决 --- IDEA报错 org.apache.jasper.servlet.TldScanner.scanJars 至少有一
    问题描述 问题原因tomcat版本太高,代码使用的是低版本 解决办法降低tomcat版本。或者修改代码到高版本。  ......
  • [POJ1734]Sightseeing 观光之旅 题解
    无向图的最小环问题,前置芝士:\(\text{Floyd}\)传送门题目描述给定一张无向图,求图中一个至少包含\(3\)个点的环,环上的节点不重复,并且环上的边的长度之和最小。你需要......
  • 问题解决系列:io.lettuce.core.RedisCommandExecutionException_ CLUSTERDOWN
    问题场景程序调用​​redis​​集群,总是间歇性地提示报错,报错提示如下:org.springframework.data.redis.RedisSystemException:Errorinexecution;nestedexceptionisio......
  • P2018:消息传递题解——二次扫描与换根
    消息传递题面题目描述巴蜀国的社会等级森严,除了国王之外,每个人均有且只有一个直接上级,当然国王没有上级。如果A是B的上级,B是C的上级,那么A就是C的上级。绝对不会出现这样......
  • FJ的农场 题解
    原题见P4216首先\(\Theta(mn)\)暴力能够拿到\(30\)分,这个没有什么难度,可以参照一下我用来测试的暴力Link。首先让我们来简化一下题意:插入操作(即"\(Grow\)"),将树......
  • AcWing2437. Splay 题解
    题目大意:splay执行区间翻转示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+5;intn,m;structNode{ints[2],p,v;intsz,flag......
  • 洛谷P8767 [蓝桥杯 2021 国 A] 冰山 题解 splay tree
    题目链接:​​https://www.luogu.com.cn/problem/P8767​​鸣谢:这道题的顺利解决得到了​​7KByte​​大佬的大力帮助,在此再次表示感谢。首先,我的想法是这样的:使用一个spl......
  • 【题解】P8866 [NOIP2022] 喵了个喵(构造,adhoc)
    【题解】P8866[NOIP2022]喵了个喵题目链接P8866[NOIP2022]喵了个喵题意概述有一个牌堆和\(n\)个可以从栈底删除元素的栈,任务是要通过规则将所有的卡牌消去。开......
  • #yyds干货盘点#按钮点击重复提交问题解决
    提交按钮重复点击这是最常见的问题,重复提交会造成多条数据入库。点击提交给个loading提示过渡,期间按钮不可再次触发就可以。​查询按钮重复点击如果查询按钮点一下就设置loa......