蒟蒻的第一篇题解。由于正值期末周,只能匆忙地vp了一场div3,并只出了A~E。

A

白给模拟题,但也是失误很大的一个题(7分钟时才出,属实是太慢了...)

B

一道典题,之前做过类似的。

统计所有数的和sum,只有当sum % n == 0时成立,即每个数最终都必须为sum/n。

注意到最左边的数只能通过靠左位置来变动,所以依次让从左到右的数变为sum/n即可。最后判断末尾的两个数是否经过前面的操作变为了sum/n。

C

数学题,但其实赛时并没有写出正解,而是靠 \(O(n^2)\)暴力 + 卡时限而过的。

一个性质: a是9的倍数 <-> a的所有位数字之和是9的倍数 ,这个性质与3的情况是一样的。

注意到只能操作2,3两个数,且每个数只能操作一次。即:

  • 2 -> 4 , 总和加2
  • 3 -> 9 , 总和加6

统计串中2,3的个数,则问题变成:有x个2和y个6,问能否通过对其任意选择,使得最后选择的数的总和为9的倍数。

赛时直接暴力枚举了2,6的所有可能的个数情况暴力判断。但其实不需要这样,因为可以发现:当 \(cnt2>=8\) 时,就已经覆盖了所有的可能情况。因为每9个2一定是9的倍数,可以直接提出来模掉,3的情况也同理。所以对于任意>=9个数量的2,它的情况和模9后的数量情况是一样的。因此对于任意\(cnt2\)和\(cnt3\),只需要分别枚举到\(min(cnt2,8)\)和\(min(cnt3,8)\)即可。

D

经典数位贪心题

对于一个数,它的高位数字越大时,无论低位数字的情况,这个数字一定越大。

所以从左到右地考虑左移每一个数字,只要可以让高位变得尽可能大,就进行一次操作,否则停下来并对下一位操作。这样每一步都能让高位尽可能地大,答案也一定是最优解。

code

E

经典dp模板题

状态定义:\(dp[i][j]\)表示对于串a的前i个字符和串b的前j个字符,能够和c的前\(i+j\)个字符的最大匹配字符数。

则 $ans = lena + lenb - dp[lena][lenb] $

状态转移方程:

dp[i][j] = max(dp[i][j] , dp[i - 1][j] + (a[i] == c[i + j]))

dp[i][j] = max(dp[i][j] , dp[i][j - 1] + (b[j] == c[i + j]))

\(O(n^2)\)转移即可,注意初始化要全面。

code

F

简单数学 + ST表维护区间gcd

题意是要对于给定的一个区间\([l,r]\),找到一个最大的模数\(m\),使得对应区间内每个数取模后结果都相等。

对于区间\([l,r]\),需要满足:

a[l] % m = a[l + 1] % m = ... = a[r] % m

考虑任意两个\(x\),\(y\),有:

x mod m = y mod m  <==> |x - y| % m = 0

同时注意到,对于区间\([l,r]\)和\(m\),只要每两个相邻元素满足上述关系,则由链式捆绑,上上行的等式关系也一定成立。故m必须是每两个相邻元素差的绝对值的约数。为使\(m\)最大,则\(m\)即为它们的最大公约数。

综上,对于每个区间,答案都是对应区间内所有相邻元素差的绝对值的\(gcd\)。对于q次查询区间,直接ST表维护区间gcd即可。

code

G

树形dp

状态定义:\(dp[u]\)表示考虑以u为根的子树,从根节点u开始向下删除某条路径,可以得到联通块数量的最大值。

状态转移:考虑u的所有儿子v,现在所有的\(dp[v]\)已经计算完成,要计算\(dp[u]\)。由于只能删除某一条路径,所以要么不选儿子(即只删除节点u,此情况极容易忘记),要么选择其中的一个儿子v并向下走。前者情况即为儿子的个数;后者情况应为(假设删的儿子为v1):

dp[v1] + cntson - 1

加号后面为常量,若让此式最大化,即找一个最大的\(dp[v]\)转移即可。

现在考虑计算答案:

对于题述的路径的全集,即为所有点的以下三者的总和:

  1. 从u出发,只选择一个儿子向下走
  2. 从u出发,选择其中两个儿子向下走
  3. 只选择一个单独的结点u(即路径上只有这一个点,也是极容易忘记的情况!)

对于1,只需要选择一个最大的\(dp[v]\)即可,但不要忘了u的父亲所在的联通块的贡献(此处还需要额外考虑u有没有父亲,即u是不是根节点):

max(dp[v]) + cntson - 1 + [u不是根节点]

对于2,需要选择前二大的\(dp[v]\):

maxfr(dp[v]) + maxse(dp[v]) + cntson - 2 + [u不是根节点]

对于3,即为连接u的结点数量:

G[u].size()

三种情况取最大值即可。最后对于每个点的这三种情况再取一次最大值,即为所有路径的答案。

code

CF div3 991(A~G)的更多相关文章

  1. 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)

    GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL, ...

  2. UE4从零搭建CF游戏关卡(蓝图篇)

    一 往关卡中放置物体 二 Static Mesh 和 BSP 从今天开始我们要建立一个类似CF游戏的场景,不写一句代码,纯蓝图实现. 三 英语学习 今天早上开会,经理说了一件让我震惊的事情,她说最近大 ...

  3. visual studio code(vs code) 编译、运行、调试程序(调用g++)

    g++的安装过程忽略,记不清有没有"安装路径不能有空格"这种问题. 网上翻了几个博客,找到的配置文件在g++下都不能运行,遂折腾. 安装vscode与插件 插件为ms-vscode ...

  4. CF 214B Hometask(想法题)

    题目链接: 传送门 Hometask Time Limit: 2 seconds     Memory Limit: 256 megabytes Description Furik loves mat ...

  5. ProbS CF matlab源代码(二分系统)(原创作品,转载注明出处,谢谢!)

    %ProbS clear all;%% 数据读入与预处理 data = load('E:\network_papers\u1.base');test = load('E:\network_papers ...

  6. CF 213A Game(拓扑排序)

    传送门 Description Furik and Rubik love playing computer games. Furik has recently found a new game tha ...

  7. CF 338E Optimize! (线段树)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 出题人题解没看懂...囧. 然后看了下touris ...

  8. MySQL 5.7 虚拟列 (virtual columns)

    参考资料: Generated Columns in MySQL 5.7.5 MySQL 5.7新特性之Generated Column(函数索引) MySQL 5.7原生JSON格式支持 Gener ...

  9. Flash制作遇到的小问题1--为何变形需要将图形打散(Ctrl+b)

    今天上Flash实验课遇到一个小问题,就是我在画一个矩形如下图:

  10. vim 命令学习(基础篇)

    [1]三种模式 vi的三种模式:命令模式.末行模式.编辑模式. 三种模式相互切换逻辑与命令图: 1.命令模式是vi的默认模式(即每打开一个文件时的初始模式). 2.命令模式切换至末行模式,末行模式切换 ...

随机推荐

  1. 在Windows环境下使用AMD显卡运行Stable Diffusion

    现在用的电脑是 21 年配的,当时并没有 AI 相关的需求,各种各样的原因吧,抉择后选择了 AMD 的显卡,但在 2024 年的今天,使用 AI 进行一些工作已不再是什么罕见的需求,所以我也想尝试一下 ...

  2. windows当中C++版本的Opencv安装(动态库+静态库)

    主要参考2篇博客,其实就是dll文件和lib文件的使用方法而已.链接如下: 1.静态库opencv配置 2.动态库opencv安装

  3. 使用wxpython开发跨平台桌面应用,设计系统的登录界面

    一般的系统登统界面,设计好看一些,系统会增色不少,而常规的桌面程序,包括Web上的很多界面,都借助于背景图片的效果来增色添彩,本篇随笔介绍基于WxPython来做一个登录界面效果,并对系统登录界面在不 ...

  4. [python] Python异步编程库asyncio使用指北

    Python的asyncio模块提供了基于协程(coroutines)的异步编程(asynchronous programming)模型.作为一种高效的编程范式,异步编程允许多个轻量级任务并发执行,且 ...

  5. WiFi流量劫持—— 浏览任意页面即可中毒!

    大家都知道公共场所的Wifi安全性很差,但并不清楚究竟有多差.大多以为只要不上QQ.不登陆网站账号就没事了,看看新闻小说什么的应该毫无关系. 的确如此,看看新闻网页没有涉及任何敏感的账号信息.即便是数 ...

  6. qnap nas 下的 nasconfig_fs.img.tgz 及相关的一点记录

    QNAP NAS 已安装EntWare(先前的Optware已废弃,不适用),可以使用 opkg 命令安装软件包(如想利用arp命令查看局域网的IP地址及对应物理网卡地址,可使用opkg instal ...

  7. MiniTomcat 系列:第一章:解锁实现基础 HTTP 服务器的奥秘

    第一步:实现基础 HTTP 服务器 在这一章中,我们将从零开始编写一个简单的 HTTP 服务器.这个服务器的基本功能是监听一个端口,接收来自客户端的 HTTP 请求,并返回一个 HTTP 响应.我们将 ...

  8. uniapp 样式篇

    1.全局变量 项目根目录的 uni.scss 文件是uni-app内置的常用样式变量,这个文件会自动引入,开发者可直接引用这个变了 文件默认已经定义了常用的变量,开发者也可以在此基础上继续添加 /* ...

  9. 强网杯2023 谍影重重2.0 wp

    题目描述 小明是某间谍组织的一员,他终日监听着我国某重点军事基地的飞行动态,妄图通过分析参数找到我国飞的最快的飞机.我国费尽千辛万苦抓住了他,并在他的电脑上找到了一段他监听的信息,请分析出这段信息中飞 ...

  10. 鸿蒙NEXT开发案例:世界时间表

    [引言] 本案例将展示如何使用鸿蒙NEXT框架开发一个简单的世界时钟应用程序.该应用程序能够展示多个城市的当前时间,并支持搜索功能,方便用户快速查找所需城市的时间信息.在本文中,我们将详细介绍应用程序 ...