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%的程度都不到),没 ...
随机推荐
- java基础-idea的使用-day07
目录 1. idea的获取 2. 已经安装的idea 如何卸载 3. idea的安装与破解 3. 设置 4. 写代码常用快捷建的使用 1. idea的获取 链接:https://pan.baidu.c ...
- APB Slave状态机设计
`timescale 1ns/1ps `define DATAWIDTH 32 `define ADDRWIDTH 8 `define IDLE 2'b00 `define W_ENABLE 2'b0 ...
- CSS - 使图片自适应
img { height: 100%; object-fit: cover; }
- Python学习之十二_tkinter的学习与使用
Python学习之十二_tkinter的学习与使用 摘要 本来想说会用QT5进行界面编程 但是发现比较繁琐 还是先学习使用 tkinter的方式进行界面化的编写和学习了 基础知识 tkinter是一个 ...
- [转帖]什么是ClickHouse?
什么是ClickHouse? ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS). 在传统的行式数据库系统中,数据按如下顺序存储: Row WatchID JavaEn ...
- [转帖]THE OSWATCHER ANALYZER USER'S GUIDE
oswbba THE OSWATCHER ANALYZER USER'S GUIDE Carl DavisMay 7, 2019 To see how to use this tool and it' ...
- [转帖]Innodb存储引擎-备份和恢复(分类、冷备、热备、逻辑备份、二进制日志备份和恢复、快照备份、复制)
文章目录 备份和恢复 分类 冷备 热备 逻辑备份 mysqldump SELECT...INTO OUTFILE 恢复 二进制日志备份与恢复 快照备份(完全备份) 复制 快照+复制的备份架构 备份和恢 ...
- Navicat For Redis 的学习与使用
Navicat For Redis 的学习与使用 背景 周末在家看了几个公众号: 说到Navicat 16.2已经有了 Redis的客户端. 想着前段时间一直在学习Redis, 但是没有GUI的工具, ...
- [转帖]银河麒麟服务器操作系统V10SP1-x86_64系统环境下部署aarch64虚拟机
文章目录 主机系统环境 搭建aarch64虚拟机环境 ①安装"虚拟系统管理器" ②编译安装Qemu for Aarch64 ③获取aarch64架构的qcow2镜像 ④使用qcow ...
- [转贴]30 分钟学会 AWK
30 分钟学会 AWK https://mp.weixin.qq.com/s/X0ire4dYiceC2CzPU6JsSw? Linux爱好者 2017-01-08 (点击上方公众号,可快速关注) ...