首页 > 其他分享 >JSOI2018 部分题解

JSOI2018 部分题解

时间:2023-06-09 09:46:14浏览次数:49  
标签:JSOI2018 题解 贡献 长距离 https loj 区间 学生 部分

目录

潜入行动

一眼直接 DP。

设 \(f_{i,j,0/1,0/1}\) 表示 \(i\) 子树内放了 \(j\) 个监听设备,\(i\) 是否被子结点覆盖,\(i\) 是否放了监听设备,\(i\) 子树内除了 \(i\) 都被覆盖的方案数。

转移是一个树形背包,时间复杂度 \(\mathcal{O}(nk)\),只是常数有点大。

https://loj.ac/s/1788791

防御网络

先考虑图是一棵树怎么做。

对于每条边计算贡献,那么答案就是所有边的贡献之和。容易发现,不妨设这条边两端的点数分别为 \(x\) 和 \(n-x\),那么该边贡献就是 \((2^x-1)(2^{n-x}-1)\)。

再考虑仙人掌的情况。建出圆方树,为了方便可以直接 DFS 建树。

对于每条割边,其贡献也可以按照上面这种方式计算。而对于环边,我们考虑把环拿出来,把子树内有被选的点的点打上标记,那么这种分配方案的贡献就是环长减去相邻打标记的点之间的最长距离。

那么我们可以把所有子树的 \(size\) 排成一排,枚举第一个子树内有被选的点的点以及这个最长距离(注意这里不考虑最后一个到第一个的距离),然后进行一个 DP:设 \(f_{i,0/1}\) 表示选了 \(i\),之前是否已经有相邻的点达到了最长距离。转移是一个显然可以用前缀和优化的式子。计算总贡献时枚举最后一个选了的点,方案数 \(\times\) 环长减最长距离 就是贡献。

https://loj.ac/s/1789208

列队

肯定的是,在集合后学生的相对位置不会改变。

于是维护一棵主席树,每次将第 \(i\) 个学生的位置插入,维护区间学生个数和学生位置的编号和。

对于询问到的区间 \([l,r]\),有以下几种情况:

  • 区间内没有学生;
  • 区间内的学生全都往左跑;
  • 区间内的学生全都往右跑;
  • 区间内的学生有往左跑的,也有往右跑的;

第 \(1\) 种可以直接返回 \(0\),第 \(2\) 种和第 \(3\) 种可以用等差数列求和公式计算,第 \(4\) 种直接递归两个子树。

https://loj.ac/s/1409101

标签:JSOI2018,题解,贡献,长距离,https,loj,区间,学生,部分
From: https://www.cnblogs.com/xsl19/p/jsoi2018-sol.html

相关文章

  • 【刨根问底】BigDecimal 案例和部分源码分析
    本文总以下几个部分:前言Bigdecimal定义Bigdecimal创建方式Bigdecimal部分源码分析Bigdecimal坑Bigdecimal使用建议Bigdecimal工具类前言在咱们开发过程中很容易遇到计算的问题,普通计算其实也还好使用int、long、double、float基本上能应付。但是如果涉及到数据类型转后在处理等......
  • Competitive Programmer 题解
    题目传送门一道模拟题。纯模拟肯定不行,考虑优化。\(60=2^2\times3\times5\),也就是说我们判断组合后的数字能否被\(2\),\(3\),\(10\)整除即可。如果这个数能被\(2\)整除,那么原数一定会存在偶数;如果这个数能被\(3\)整除,那么它的数字和应该也能被\(3\)整除;如果这个数......
  • CF547E Mike and Friends题解
    题目链接温馨提示:做本题之前可以先尝试这个:洛谷P2414阿狸的打字机(是简单版的uwu)。首先,这个题涉及多模式串匹配,首先想AC自动机。但是有个问题:我们如何去计算一个串出现的次数呢?我们先考虑查询一个串\(a\)在串\(b\)中出现的次数。首先,在AC自动机上有一个性质,就是如果......
  • rsa加解密的内容超长的问题解决
    一.现象:     有一段老代码用来加密的,但是在使用keyA的时候,抛出了异常:javax.crypto.IllegalBlockSizeException:Datamustnotbelongerthan117bytes。老代码已经做了分段的加密,应该是已经考虑了加密长度的问题才对。换了另一个线上代码中的keyB,正常加......
  • 【前端跨域】CORS跨域问题解决思路
    目录一、Nginx跨域配置二、Spring项目跨域配置参考资料一、Nginx跨域配置在Nginx中配置跨域请求,主要可以通过设置HTTP响应头部的方式进行。以下是具体实现步骤:在Nginx的配置文件中找到对应location配置块,例如:server{listen80;server_nameexample.com;......
  • [第五届蓝桥杯省赛C++B组]省赛全题目题解
    文章目录快速分支通道酒精与饮料切面条李白打酒史丰收运算打印图形奇怪的分式六角填数蚂蚁感冒地宫取宝小朋友排队1.题目啤酒和饮料算法标签:枚举题目描述:题目答案:题目思路:题目代码:2.题目切面条来源:第五届蓝桥杯省赛C++B组算法标签递推题目描述:题目答案:题目思路:题目代码:3.题目......
  • [第七届蓝桥杯省赛C++B组]省赛全题目题解
    文章目录快速分支通道煤球数目生日蜡烛凑算式快速排序抽签方格填数剪邮票四平方和交换瓶子最大比例煤球数目题目来源:第七届蓝桥杯省赛C++B组算法标签:递推题目描述:题目答案:题目思路:题目代码生日蜡烛题目来源:第七届蓝桥杯省赛C++B组算法标签:枚举,双指针题目描述:题目答案:题目思路:题目代......
  • 离散数学(屈婉玲)第二版 第五部分 图论 总结
    第5部分  图论前言:图是我们日常生活中一个很常见的概念,我们学习时会画思维导图,思维导图有节点,有路线;生活中会用到地图导航,有起点有终点有路线。而图论中的图便是生活中以及数学中具象事物抽象化的体现。前言的前言:若有错误之处或不完整之处希望指出,虚心接受任何批评和建议!一.......
  • Android问题解决:android.util.Base64.encode 导致签名不匹配 SignatureDoesNotMatch
    文章目录前文:遇到问题一问:为什么SignatureDoesNotMatch二问:为什么SignatureDoesNotMatch三问:Signature请求参数为什么多了%0A四问:Signature为什么多了换行五问:android.util.Base64.encode的用法前文:遇到问题在折腾《ESP32-C3入门教程——导读》时,需要对接阿里云物联网平台。想要......
  • 互联网的边缘与核心部分
    边缘部分是用户直接使用,用来进行通信和资源共享。核心部分由大量网络和连接网络的路由器组成。这部分是为边缘部分提供服务的。边缘部分处在互联网边缘的部分就是连接在互联网上的所有的主机。这些主机又称为端系统(endsystem)。主机间的通信其实是进程间的通信。在网络边缘的......