ABC 312
前三题氵
给定一个由 (,?,) 组成的字符串。每个 ? 可以设定为任意括号。求有几种设定方法使得整个是合法括号序列。
套路,dp
给定 \(n\) 个两两不相交的长方体,对每个长方体,求有多少个长方体与其有公共面。
有一个可以大幅度优化代码麻烦程度的小技巧:因为坐标范围很小,我们直接把每个长方体拆成 \(x*y*z\) 个小立方体看就行。
对于第 \(i\) 个长方体的每个小立方体 \((a,b,c)\),让它相邻的六个小立方体都统计一下:我的相邻小立方体有来自第 \(i\) 个长方体的。这其实就等价于有公共面。
有 \(n\) 个东西类型为 \(0,1,2\)。
类型 \(0\) 的是罐头,无限制,有一个价值。
类型 \(1\) 的也是罐头,需要开罐器,也有一个价值。
类型 \(2\) 的是开罐器,有一个可开罐数量。
只能选 \(m\) 个东西,求最大价值和。
这题比 E 氵
考虑枚举拿的开罐器数量,同时维护此时的最大价值和。
用一个 multiset 保存当前持有的罐头。初始时把最大的 \(m\) 个类型 \(0\) 加入 multiset 并令初始价值和为它们的价值和。(赛时居然把所有类型 \(0\) 的都加入 multiset 了,一定注意是最大的m个)
然后枚举拿的开罐器数量,注意开罐器一定是按照可开罐数量从大到小拿。(如果某次发现上一次的总可开罐数量已经足够开启所有罐头,就 break)
假设这次拿的开罐器可以打开 \(x\) 个罐头,接下来从上一次开罐的结尾开始,再把之后的 \(x\) 个罐头加入 multiset,同时也令当前价值和加上这 \(x\) 个罐头。
最后把 multiset 中多余的罐头去掉。(注意要考虑拿了一些开罐器)这时剩下的就是拿这么多开罐器的答案了。
每次让 \(ans\) 和维护的最大价值和取 \(\max\) 即可。
找出树上有多少个三个点的点组,使得不存在一条简单路径包含这点组内的三个点。
每一个符合要求的三点组 \((i,j,k)\),一定唯一存在一个结点 \(v\),使得 \((i\rightarrow v,j\rightarrow v),\;\,(j\rightarrow v,k\rightarrow v),\;\,(i\rightarrow v,k\rightarrow v)\) 这三对路径中,每一对路径都存在一个非 \(v\) 的结点重复。(说人话就是从点 \(v\) 往外辐射出去)
因此只需要考虑每一个点 \(v\),统计对应的 \((i,j,k)\) 个数,加起来就是答案。
而假设固定了点 \(v\),\((i,j,k)\) 的个数就是从 \(v\) 的每个儿子子树的规模中,任取三个相乘的和。(例如 \(v\) 有 \(4\) 个儿子,\(4\) 颗子树的规模分别为 \(2,1,1,3\),答案就是 \((2*1*1+2*1*3+1*1*3\))
如果 \(v\) 的子结点不足 \(3\) 个,对答案的贡献为 \(0\)。
“任取三个相乘的和” 这个问题可以用 DP 解:\(dp_{i,j}\) 表示前 \(i\) 个元素任取 \(j\) 个数相乘,求和是多少。时间复杂度 \(O(\)序列长度\()\)。
因此对于一个固定的结点 \(v\),它对答案的贡献可以以 \(O(sons[v])\) 的复杂度求出,\(sons[v]\) 是以 \(v\) 为根时 \(v\) 的子结点个数。
但是还有一个问题:以 \(v\) 为根时,各子结点的子树规模怎么求?其实做一遍换根 DP 就行。
总复杂度 \(O(n)\)。
其实这题用到的知识点并不超纲。赛时卡在了如何求出“任取三个相乘的和”上。
ABC 312的更多相关文章
- Codeforces Round #312 (Div. 2) ABC题解
[比赛链接]click here~~ A. Lala Land and Apple Trees: [题意]: AMR住在拉拉土地. 拉拉土地是一个很漂亮的国家,位于坐标线.拉拉土地是与著名的苹果树越来 ...
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- 【IOS】将一组包含中文的数据按照#ABC...Z✿分组
上一篇文章[IOS]模仿windowsphone列表索引控件YFMetroListBox里面 我们一步步的实现了WindowsPhone风格的索引. 但是有没有发现,如果你要实现按照字母排序,你还得自 ...
- 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }
平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...
- 学习Python的ABC模块(转)
http://yansu.org/2013/06/09/learn-Python-abc-module.html 1.abc模块作用 Python本身不提供抽象类和接口机制,要想实现抽象类,可以借助a ...
- 将abc的全排列输出
#include "iostream" using namespace std; void swap(char a[],int i,int j){ char temp; temp= ...
- 关于String str =new String("abc")和 String str = "abc"的比较
String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc&qu ...
- linux rpm -ivh MySQL-server-5.5.31-2.el6.i686.rpm
linux rpm 安装mysql异常: [root@localhost upload]# rpm -ivh MySQL-server-5.5.31-2.el6.i686.rpmerror: Fail ...
- IE9 使用document.getElementsByName("abc") 不能获取到名称相同SPAN元素
<div name="abc"></div> <input name="abc" type="text" /& ...
- 经典String str = new String("abc")内存分配问题
出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没 ...
随机推荐
- shell脚本(4)-格式化输入
一.read命令 1.概念: 默认接受键盘的输入,回车符代表输入结束 2.read命令选项 -p:打印信息 -t:限定时间 -s:不回显 -n:输入字符个数 3.举例说明 (1)模拟登录 [root@ ...
- java 文件上传 :MultipartFile 类型转换为file类型
通过前台进行文件上传并保存服务器. 1.从前台解析得到的文件类型为 MultipartFile 类型,在进行解析的时候,我们需要将 MultipartFile 类型转换为file类型,然后将文件上传到 ...
- 基于java+springboot的酒店预定网站、酒店客房管理系统
该系统是基于Java的酒店客房预订系统设计与实现.是给师弟开发的毕业设计.现将源代码开放出来,感兴趣的同学可以下载. 演示地址 前台地址: http://hotel.gitapp.cn 后台地址: h ...
- AHB-SRAMC Design-02
AHB-SRAMC Design SRAMC(另外一种代码风格)解析 SRAM集成,顶层模块尽量不要写交互逻辑 module ahb_slave_if( input hclk, input hrest ...
- (保姆级)服务器-Zabbix6.0使用Python脚本实现带图片的邮箱的报警
前言 近期在琢磨Zabbix邮箱报警的功能,但是网上的教程通常是4.0或5.0版本Zabbix,并使用Python2.7环境,运行在新版本Zabbix6.0上有颇多问题,为此我基于原先教程修改基于Za ...
- [转帖]Kafka关键参数设置
https://www.cnblogs.com/wwcom123/p/11181680.html 生产环境中使用Kafka,参数调优非常重要,而Kafka参数众多,我们的java的Configurat ...
- [转帖]AnolisOS8安装ntp同步时间
https://www.wlnmp.com/post-673.html 在AnolisOS8中默认不再支持ntp软件包,时间同步将由chrony来实现,如果你习惯了使用ntp来同步时间,一时难以去适应 ...
- 在线安装gfortran的方法-CentOS8 or 阿里龙蜥
在线安装gfortran的方法-CentOS8 or 阿里龙蜥 背景 在阿里云上面进行了 speccpu2006的测试验证 但是发现总是很多包安装不过去 原因是阿里最小化安装的龙蜥系统. 缺少很多编译 ...
- github-keydb 知识
https://github.com/Snapchat/KeyDB KeyDB is now a part of Snap Inc! Check out the announcement here R ...
- Rendezvous hashing算法介绍
Rendezvous hashing Rendezvous hashing用于解决分布式系统中的分布式哈希问题,该问题包括三部分: Keys:数据或负载的唯一标识 Values:消耗资源的数据或负载 ...