AtCoder Beginner Contest 287 A-G 赛时思路+正解

news2024/11/20 14:35:09

在这里插入图片描述
一把给我加到1219了,青大小蒟蒻表示很开心。

A - Majority
题意 问你 " F o r " "For" "For"字符串数量是否比 " A g a i n s t " "Against" "Against"数量多。
思路 m a p map map暴力即可。
A题代码

B - Postal Card
题意 给你一个长度为6的字符串数组 S i S_i Si,以及长度为3的字符串数组 T i T_i Ti,问你长度为3的字符串数组是否在 S i S_i Si的后缀(后面三个)出现过。
思路 m a p map map暴力哈希记录前面的最后三个字符组成的子串,暴力判断即可。
B题代码

C - Path Graph?
题意 问你图是不是一条链
思路 找一个度数为1的点暴力dfs即可,细节是暴力dfs的时候只能往下递归一次。
C题代码

D - Match or Not
题意 给定两个字符串 s s s t t t,问从字符串 s s s中把长度为 x x x的前缀和长度为 ∣ t ∣ − x |t| - x tx( ∣ t ∣ |t| t表示字符串 t t t的长度)的后缀拼起来,问你能否与字符串 t t t相等, x < = ∣ t ∣ x <= |t| x<=t , s . s i z e ( ) < = 2 e 5 s.size() <= 2e5 s.size()<=2e5,对于不同的 x x x输出一行。
思路 找 s s s串和 t t t串的最长前缀和最长后缀,然后对于每个 x x x我们判断前缀和后缀是否分别在最大前缀和最大后缀内部即可。
D题代码

E - Karuta
题意 给定字符串数组 S i Si Si,问每个字符串与其他字符串的最长公共前缀是多少,字符串的字符总和保证不超过5e5。
思路 这是一道字典树模板题,赛时抄了板子就过了。
E题代码

F - Components
题意 给你点数为 n n n一棵树,我们从中选择非空点集(点集种类有2n-1种),子图由你选的点集,以及原树上能在点集相连的所有边组成, n < = 2 e 5 n <= 2e5 n<=2e5,题目求生成的子图连通块的个数为 x x x的子图种类有多少,不同的 x x x在不同行输出 。建议看洛谷题意配合我的题意去理解。
思路 是一道比较典型的树上背包题目,我们把连通块个数看成物品的容量,然后考虑点选不选对连通块的影响,我们选择多开一维表示该节点是否被选。树上背包没有优化的时候是 O ( n ∗ m 2 ) O(n * m ^ 2) O(nm2)的,赛时搜了树上背包优化,发现可以通过只枚举子树大小来优化树上背包,可以优化到 O ( n 2 ) O(n^2) O(n2)的,复杂度解决了,我们考虑状态转移,我们考虑从下向上合并,当前的节点是 u u u,以及合并的容量为 m m m,当前是否选了 u u u节点 s t st st,考虑合并已经合并的 u u u子树和未被合并的 j j j子树( j j j u u u的儿子) ,我们考虑四种情况:
1. u u u子树 u u u节点被选, j j j子树 j j j节点被选,我们发现 j j j节点所在的连通块会与 u u u所在的连通块合并,合并之后的连通块个数是 m u + m j − 1 m_u + m_j - 1 mu+mj1,为什么减1呢,因为 j j j节点所在的连通块会与 u u u所在的连通块合并,导致连通块个数减1,剩下的不变。
2. u u u子树 u u u节点被选, j j j子树 j j j节点不被选,合并之后的连通块个数是 m u + m j m_u + m_j mu+mj
3. u u u子树 u u u节点不被选, j j j子树 j j j节点被选,合并之后的连通块个数是 m u + m j m_u + m_j mu+mj
4. u u u子树 u u u节点不被选, j j j子树 j j j节点不被选,合并之后的连通块个数是 m u + m j m_u + m_j mu+mj
然后 d f s dfs dfs递归即可。
F题代码

G - Balance Update Query
题意 给你 n n n个种类的物品,每个物品有 S S S分数和 V V V容量,执行以下三个操作:
1.把种类 x x x的物品的得分改为 y y y
2.把种类 x x x的物品的容量改为 y y y
3.选 x x x个物品,如果当前可选的容量小于 x x x输出-1,否则输出选择的 x x x个物品( n n n类物品种选择)的最大得分和 。
n < = 1 e 5 , s < = 1 e 9 , x < = 1 e 4 n <= 1e5 , s <= 1e9 , x <= 1e4 n<=1e5,s<=1e9,x<=1e4
思路 看到题之后我一眼平衡树,然后想了2 m i n min min之后发现可以离线用一种更简单而且套路的方法去做,我们考虑对 s s s得分离散化,然后考虑建两个树状数组(下标的含义是得分权值)分别维护容量和得分总和,然后我们考虑用二分套树状数组的方法去解决此问题,即二分得分权值,把大于等于得分权值的物品全部加进去,然后判断个数是否满足小于等于 x x x。然后一道看起来很复杂的问题用了比较经典的方式去解决了。
G题提交

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/183217.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑技巧:教你关闭Win11内存压缩,解决电脑卡顿的问题

很多朋友都注意到&#xff0c;Win11默认开启了内存压缩功能。内存压缩顾名思义&#xff0c;可以压缩内存中的数据&#xff0c;让内存占用更少&#xff0c;同时减少Swap频次&#xff0c;带来更高的I/O效率。 但与此同时&#xff0c;压缩数据需要耗费CPU资源&#xff0c;一些朋友…

Dr4g0n-b4ll靶机总结

Dr4g0n-b4ll靶机渗透测试总结 靶机下载地址: https://download.vulnhub.com/dr4g0nb4ll/Dr4g0n-b4ll.zip 打开靶机,使用nmap扫描靶机的ip和所有开放的端口 可以看到靶机开放了80端口和22端口 根据80端口打开网站 信息收集,目录爆破 在robots.txt下发现一串base64编码 eW91IG…

编写循环(RH294)

循环这东西你早就懂的不是么就像python里的for一样在ansible中 使用loop关键字来实现迭代简单循环简单循环中一般使用loop关键字来开始循环使用循环变量item来存储每个迭代过程中使用的值举个例子 栗子啊首先让我们拿出两个任务片段- name: Postfix is runningservice:name: po…

索引15连问

前言 大家好&#xff0c;我是田螺。 金三银四很快就要来啦&#xff0c;准备了索引的15连问&#xff0c;相信大家看完肯定会有帮助的。 公众号&#xff1a;捡田螺的小男孩 1. 索引是什么&#xff1f; 索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录&am…

从C语言的使用转换到C++(下篇)——刷题、竞赛篇

目录 一、CSTL的简介 二、STL的使用详解 2、1 STL之动态数组vector的使用 2、2 STL之集合set的使用 2、3 STL之映射map的使用 2、4 STL之栈stack的使用 2、5 STL之队列queue的使用 2、6 STL之unordered_map和unordered_set的使用 三、总结 标题&#xff1a;从C语言的使用转换…

还不会SpringBoot项目模块分层?来这手把手教你

文章目录前言&#x1f34a;缘由⏲️本文阅读时长&#x1f3af;主要目标&#x1f468;‍&#x1f393;试用人群&#x1f381;快速链接&#x1f369;水图正文&#x1f96b;1.IDEA新建项目&#x1f32d;2.创建子模块-dependencies(依赖层)&#x1f3af;重点&#x1f36a;3.创建子模…

【寒假小练】day2

前言 日积跬步&#xff0c;能至千里。 水平有限&#xff0c;不足之处望请斧正。 选择题 1、以下程序运行后的输出结果是( ) #include <stdio.h> void fun(char **p) {int i;for(i 0; i < 4; i) {printf("%s", p[i]); } int main() {char *s[6] {"…

Python 本地django外部网络访问

目录 一、前提 1、确定在本地可以访问 二、 本地django项目外部网络访问 1、在settings中配置允许所有服务器访问&#xff08;局域网访问&#xff09; 2、Host配置 3、使用内网穿透工具&#xff08;ngrok&#xff09;&#xff08;外部网络访问&#xff09; &#xff08;…

Acwing---1224. 交换瓶子

交换瓶子1.题目2.基本思想3.代码实现1.题目 有 N 个瓶子&#xff0c;编号 1∼N&#xff0c;放在架子上。 比如有 5个瓶子&#xff1a; 2 1 3 5 4 要求每次拿起 2 个瓶子&#xff0c;交换它们的位置。 经过若干次后&#xff0c;使得瓶子的序号为&#xff1a; 1 2 3 4 5 对于这…

【第26天】SQL进阶-查询优化- performance_schema系列实战二:锁问题排查(MDL锁)(SQL 小虚竹)

回城传送–》《32天SQL筑基》 文章目录零、前言一、什么是MDL锁二、什么时候适合加MDL锁三、 实战演练3.1 数据准备&#xff08;如果已有数据可跳过此操作&#xff09;3.2 开启第一个会话&#xff0c;显式开启一个事务&#xff0c;并执行一个update语句不提交3.3 开启第二个会话…

机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼

水调歌头明月几时有 北宋苏轼 明月几时有&#xff0c;把酒问青天。 不知天上宫阙&#xff0c;今夕是何年。 我欲乘风归去&#xff0c;又恐琼楼玉宇&#xff0c;高处不胜寒。 起舞弄清影&#xff0c;何似在人间&#xff1f; 转朱阁&#xff0c;低绮户&#xff0c;照无眠。 不应…

idea 配置tomcat 运行jsp项目

1、复用idea打开jsp项目 2、添加tomcat配置 3、点击后会出现配置框,这里画框的地方都选上&#xff0c;版本选择1.8&#xff0c;其他的信息内容默认后&#xff0c;点击确认 4、点击 File->Project Structure,弹出界面选择Project&#xff0c;这里sdk选择1.8&#xff0c;语言选…

#7反转链表#

反转链表 1题目链接 链接 2思路 思路1(暴力): 定义两个指针或者三个指针 这里选择三个指针 清晰一点 头部 头部的下一个 头部的下一个的下一个 n1 n2 n3 做好n2和n1的连接: n2->nextn1 然后: n2n1 n3n2 n3n3->next 相当于三个指针都往…

JAVA混合使用函数式接口(BiPredicate和Consumer)、泛型、lambda表达式、stream流,优化List求交集和差集后的通用处理

文章目录前言项目场景两个List求交集和差集BiPredicate和Consumer基本介绍优化目标一步步优化代码最后前言 本文主要讲的是一个小的功能代码的优化案例&#xff0c;用到的知识点主要包括函数式接口&#xff08;BiPredicate和Consumer&#xff09;、泛型、lambda表达式、stream…

100天精通Python(数据分析篇)——第73天:Pandas文本数据处理方法之查找、替换、拼接、正则、虚拟变量

文章目录每篇前言一、Python字符串内置方法1. 文本查找2. 文本替换3. 文本拼接4. 正则提取二、Pandas实现文本查找1. str.startswith(字符串)2. str.endswith(字符串)3. str.index(字符串, start0, endlen(string))4. str.rindex(字符串, start0, endlen(string))5. str.find(字…

工具技巧和读文档 | 读函数式编程接口文档 | 匿名内部类 | lambda表达式 |IDEA

Function接口&#xff0c;函数式接口 按入参返回值分类&#xff0c;大概分为4种类型&#xff0c;再加上多个入参就又多了Bi开头的两种。 有CtrlP的时候不懂参数列表该写啥&#xff0c;就先CtrlALT看下入参类型的相关实现类&#xff01; 一些实用的快捷键&#xff1a;Ctrl P看参…

AORT:一款功能强大的多合一网络侦查与数据收集工具

关于AORT AORT是一款功能强大的多合一网络侦查与数据收集工具&#xff0c;该工具的主要目的是帮助漏洞Hunter和渗透测试人员完成网络侦查环节的各类任务。AORT基于Python开发&#xff0c;使用起来非常简单且方便&#xff0c;并且支持跨平台&#xff08;只要安装了Python 3即可…

怒删虚拟机,FPGA开发新宠-几步在Windows上安装桌面化Linux

Linux上运行Vivado这类EDA工具要比Window上快很多&#xff0c;大概就是优化的问题&#xff0c;所以选择Linux上开发是一个比较好的选择&#xff08;主要是免费&#xff09;。国内习惯了Win系统&#xff0c;所以用Linux比较少&#xff0c;那么有没有既可以在Windows上做一些文档…

Python爬虫(4)-Selenium模拟鼠标操作

在Selenium4.2以后的版本里面鼠标的操作方法都封装在了ActionChains中需要时直接取即可。 1.鼠标双击 使用方法就是调用ActionChains然后传入你需要点击的按钮的位置即可 ActionChains(driver).double_click(f1).perform() perform()的意思就是执行所有ActionChains中的动作 …

python字典应用

python字典应用 文章目录python字典应用一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤字典的综合案例使用collections模块的defaultdict类来实现创建字典。拓展知识一&#xff1a;内置函数globals()和locals()拓展知识二&#xff1a;有序字典 collections.Ord…