CSP2019题解

格雷码

按照生成的规则模拟一下即可。

代码

括号树

看到括号匹配首先想到用栈,然后又在树上就可以想到可追溯化栈。
令\(a_i=1\)表示\(i\)号节点上的括号为(,否则为)
记栈为\(stk\),其中元素个数为\(top\)。
设\(f_i\)表示加上节点\(i\)所对应的括号所增加的贡献,\(g_i\)表示这个点的答案,转移很显然:
\[
\begin{aligned}
\begin{cases}
f_i=0&(a_{fa_i}=1)\\
f_i=f_{fa_i}&(a_{fa_i}=-1)\\
f_i=0&(a_i=-1,top=0)\\
f_i=f_{stk_{top}}+1&(a_i=-1,top>0)\\
g_i=g_{fa_i}&(a_i=1)\\
g_i=g_{fa_i}+f_i&(a_i=-1)
\end{cases}
\end{aligned}
\]
然后就没了。

代码

树上的数

Link

Emiya 家今天的饭

因为主要食材最大值只会有一个,钦定最大值是哪一个,又因为每一种烹饪手法最多选一次,设\(f[i][j][k]\)表示目前在第\(i\)中烹饪手法,现在做了\(j\)道菜,最多的食材用了\(k\)次,转移很显然就不写了,那么最后你把不满足要求的减掉就行了,这样子是\(O(n^3m)\)的。

考虑优化这个状态,设\(f[i][j]\)为目前在第\(i\)中烹饪手法最大值与其他的的差为\(j\)的方案数,和前面一样容斥就优化成了\(O(n^2m)\)的了。

代码

划分

有一个比较显然但是并不会证的结论就是令最后一段的和最小。

记数列前缀和为\(s_i\),
设\(f_i\)表示\([1...i]\)最后一段最小时,最后一段为\([f_i,i]\),那么有转移

\[
f_i=\max j,\{0\leq j\leq i-1,s_j-s_{f_j}\leq s_i-s_j\}
\]

然后因为\(s\)单调,把这个式子化一下就是\(2s_j-s_{f_j}\leq s_i\),注意到一个单调队列优化\(dp\)的形式所以直接用单调队列优化dp即可。

因为要高精度,所以只能用\(f\)数组往前推求答案。

代码

树的重心

注意一棵树的重心肯定是在其根节点所在重链上的,那么你每次断边时找到最深的满足条件的点\(x\),因为如果重心有两个的话肯定是父子关系,所以再判断一下\(fa_x\)是不是满足条件即可,这样子的话复杂度\(O(n^2)\)。

考虑优化这个东西,在重链上构造一个倍增数组跳重链,然后每次像普通倍增一样即可,然后需要换根,复杂度\(O(n\log n)\),细节见代码。

代码

CSP2019题解的更多相关文章

  1. CSP2019 题解

    CSP2019 题解 D1T1 格雷码(code) 题目传送门 https://loj.ac/problem/3208 题解 按照题意模拟就可以了. 对于第 \(i\) 位,如果 \(k \geq 2 ...

  2. CSP2019 树的重心 题解

    本题当然可以通过大力讨论每棵子树的size的大小关系,然后用各种数据结构暴力维护.但是我更倾向于用一种更为性质的做法. 首先讲一下我在考场上想到的做法(没写).就是考虑换根,在换根的过程中计算每一条边 ...

  3. csp2019 Emiya家今天的饭题解

    qwq 由于窝太菜了,实在是不会,所以在题解的帮助下过掉了这道题. 写此博客来整理一下思路 正文 传送 简化一下题意:现在有\(n\)行\(m\)列数,选\(k\)个数的合法方案需满足: 1.一行最多 ...

  4. CSP2019 树上的数 题解

    题面 这是一道典型的部分分启发正解的题. 所以我们先来看两个部分分. Part 1 菊花图 这应该是除了暴力以外最好想的一档部分分了. 如上图(节点上的数字已省略),如果我们依次删去边(2)(1)(3 ...

  5. CSP2019 Emiya 家今天的饭 题解

    这题在考场上只会O(n^3 m),拿了84分.. 先讲84分,考虑容斥,用总方案减去不合法方案,也就是枚举每一种食材,求用它做超过\(\lfloor \frac{k}{2} \rfloor\) 道菜的 ...

  6. 【CSP2019】题解合集

    诈个尸 先挖坑 虽然连去都没去但还是想做做 今年貌似比去年还毒瘤啊... yrx.hjw都进了省队线tql orz (myh:没AK真丢脸 Day1T1 格雷码 Day1T2 括号树 Day1T3 树 ...

  7. 【比赛题解】CSP2019 简要题解

    D1T1 code 签到题,大家都会. 可以从高位往低位确定,如果遇到 \(1\),则将排名取反一下. 注意要开 unsigned long long. #include <bits/stdc+ ...

  8. [题解]CSP2019 Solution - Part B

    \(\text{orz}\) 一波现场 \(\text{A}\) 掉 \(\text{D1T3}\) 的神仙 D2T3 centroid Solution 考虑每个点 \(u\) 作为重心的贡献 假设 ...

  9. [题解]CSP2019 Solution - Part A

    至于为什么是 \(\text{Part A}\) 而不是 \(\text{Day 1}\) 那是因为 Day1 T3 还没改 (那这六题的 \(\text{solution}\) 就按难度顺序写吧) ...

随机推荐

  1. Windows7运行python3,提示缺少api-ms-win-crt-runtime-l1-1.0.dll

    一.实验环境 1.Windows7x64_SP1 二.操作步骤 2.1 python官网下载python3.6后,安装.运行,提示如下错误: 2.2 解决方式 去微软官网下载安装:KB2999226补 ...

  2. ELK 框架整体流程编写 以及logstash脚本编写

    Elasticsearch Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析.它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引 ...

  3. windows上mysql解压缩版本、centos上rpm方式的安装、初始化等

    一.windows版本: https://dev.mysql.com/doc/refman/5.7/en/windows-install-archive.html 启动或者暂停mysql服务: htt ...

  4. 记录一个 C# 导出 Excel 的坑

    Ø  简介 其实该文章并没有什么技术含量,只是记录下个人心得.在以后有朋友遇到类似问题,可以借鉴下,或者遇到相同问题时的提供个参考方向. 也算我的一个经历吧,这个问题我花了足足一天多的时间才找到问题, ...

  5. 【UOJ#389】【UNR#3】白鸽(欧拉回路,费用流)

    [UOJ#389][UNR#3]白鸽(欧拉回路,费用流) 题面 UOJ 题解 首先第一问就是判断是否存在一条合法的欧拉回路,这个拿度数和连通性判断一下就行了. 第二问判断转的圈数,显然我们只需要考虑顺 ...

  6. Docker 镜像-管理-导入-导出

    目录 Docker 镜像基本概念 Docker 镜像加速 Docker 镜像 常用命令 Docker 镜像的创建和导出导入 Docker 镜像基本概念 我们使用的容器都是基于镜像的,镜像是由多层组成的 ...

  7. Winform 美化

    首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件. 将主窗体FormBorderStyle更改为None,这样就得到了 ...

  8. Python - 错误和异常 - 第十九天

    Python 错误和异常 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python 有两种错误很容易辨认:语法错误和 ...

  9. js、jquery、css属性及出错集合

    *)注意使用jquery设置css的语法 css("propertyname","value");#单个时时逗号 css({"propertyname ...

  10. 【spring】spring aop

    Aspect-Oriented Programming (AOP) 一.官方介绍 通过提供另一种考虑程序结构的方式,面向方面编程(AOP)补充了面向对象编程(OOP).OOP中模块化的关键单元是类,而 ...