比赛记录(51~60)

news/2024/12/22 14:24:39/文章来源:https://www.cnblogs.com/dzbblog/p/18447330

51 CSP-S 模拟赛32

1 得分

题目 T1 T2 T3 T4 总分
得分 \(4\) \(20\) \(11\) \(27\) \(62\)

排名:rank \(9\)

真正炸裂的一集。

2 题解

T1

考虑到边数较少,于是考虑能不能枚举边相关信息。通过部分分可以有如下讨论:

  • \(c_u\ne c_v\) 时,意味着原先两点间有的边没了,那么两端的两个点只能选其一。
  • \(c_u=c_v\) 时,意味着原先两点间没有边有了,那么这一条边可选可不选。

于是发现每一条边的决策只有两种,而边数 \(K\) 只有 \(20\),所以可以 \(O(2^K)\) 枚举边的状态。

接下来判断选择的边是否有冲突,以及每一个岛屿上选的边能不能构成完全图即可。

T2

首先考虑没有吃糖果变胖的机制,我们怎么走可以使初始体重最大。这就是经典问题 [货车运输],显然走的路径一定是最大生成树上的路径。

那么有了这个机制这个性质也不会变,所以考虑在最大生成树基础上求解。又由于这是边权问题,考虑 Kruskal 重构树来解决。对于单次合并的两个子树 \(u,v\),设其子树权值和为 \(s_u,s_v\),子树本身最大答案为 \(a_u,a_v\),连接两子树边权为 \(w\)

那么此时一定是先吃其中一颗子树,再吃另外一颗最优。假设先吃 \(u\),那么此时答案会变为 \(\min\{w-s_u,a_v-s_u\}\)。先吃 \(v\) 同理。

最后根节点的 \(a\) 即是答案。

T3

容易发现,整个给钱的过程就是将儿子从小到大填满,然后再一点点往父亲给。所以如果一个节点需要 \(k\) 的钱来填它的子树,那么子树权值和比 \(k\) 小的兄弟应该都被填满,其他的兄弟都应该填上 \(k\)。那么我们就可以知道它的父亲需要的钱是 \(\sum\min\{sum_x,k\}\)

暴力跳的复杂度是 \(O(n^2)\),考虑优化。不难发现的是,如果在某一次跳的时候出现了 \(sum_x>k\) 的情况,那么 \(k\) 就会至少翻一倍。而 \(k\) 最多就是 \(V=\sum v_i\),所以出现上述情况的次数不超过 \(\log V\)

考虑从这里入手,我们把这样的节点称为关键点,然后利用倍增求出每一个点跳到下一个关键点的价值和以及需要多少钱才能跳到该关键点。这样复杂度就是 \(O(n\log V)\)​ 的了。

T4

讲得比我清楚。

52 CSP-S 模拟赛33

1 得分

题目 T1 T2 T3 T4 总分
得分 \(100\) \(100\) \(50\) \(25\) \(275\)

排名:rank \(3\)

2 题解

T1

直接上并查集。对于一组 \((x,y,z)\),我们将 \(x+i\)\(y+i\) 连边,同时标记 \(x+z\)\(y+z\) 要不同。求答案的时候从头开始贪心,求出冲突的集合中已经确定了的值,求出这些值的 \(\text{mex}\) 就是当前答案。

T2

超级大水题,先 BFS 算出每个点与传送门的连通性,然后传递闭包算传送门之间连通性,最后查答案的时候枚举一下即可。上述过程全部可以 bitset 优化,复杂度 \(O(knm+\dfrac{k^3}{w}+\dfrac{qk^2}{w})\)

T3

首先发现 \(p\) 两边的 \(l,r\) 互不影响,因此先求出前缀和,则只需要让 \(sa_r-ksb_r\)\(-sa_l+ksb_l\) 分别最大即可。

发现上面两个式子都是 \(y=kx+b\) 的一次函数的形式,也就是说每一个位置都对应一条直线。而我们要求的就是再 \(x=k\) 处与所有直线交点的最大值。这个就是李超线段树的经典问题了。

当然我们需要先离线,然后边插入边查询即可。

T4

讲得很好。

53 CSP-S 模拟赛34

1 得分

题目 T1 T2 T3 T4 总分
得分 \(9\) \(50\) \(20\) \(0\) \(79\)

排名:rank \(15\)

依然炸裂的一集。

2 题解

T1

考虑从 \(k\) 处掰开序列,然后分别求前缀和。问题就转化为移动 \(l=r=1\) 两个指针,使得每一次的 \(s_l+s_r\) 都不大于 \(0\)

考虑贪心。我们显然是每一次只将 \(l,r\) 中一个移到值更小的位置。但是这样只能将 \(l,r\) 分别移到最小值处。不过发现后面的移动倒过来和前面是一样的,所以倒过来再跑一边即可。

T2

首先要观察到每一次会至少删一半的数,所以有效的 \(k\) 只有 \(\log n\) 个。

发现去掉序列最大值后两边可以分开求解。设 \(dp(i,j,0/1,0/1)\) 表示序列长度为 \(i\),不超过 \(j\) 次操作就删到不能再删的序列方案数。后面的 \(0/1\)​ 表示左 / 右是有一个比该序列所有数都大的数还是没有。接下来我们只需要枚举最大值位置、两个子区间的状态即可,复杂度 \(O(n^2\log n)\)

转移方程大致如下:

(dp[i][j][0][0] += dp[k - 1][j][0][1] * dp[i - k][j][1][0] % Mod * C[i - 1][k - 1] % Mod) %= Mod;
(dp[i][j][0][1] += dp[k - 1][j][0][1] * dp[i - k][j - 1][1][1] % Mod * C[i - 1][k - 1] % Mod) %= Mod;
(dp[i][j][1][0] += dp[k - 1][j - 1][1][1] * dp[i - k][j][1][0] % Mod * C[i - 1][k - 1] % Mod) %= Mod;
int x = (dp[k - 1][j][1][1] - dp[k - 1][j - 1][1][1] + Mod) % Mod;
int y = (dp[i - k][j][1][1] - dp[i - k][j - 1][1][1] + Mod) % Mod;
(dp[i][j][1][1] += (dp[k - 1][j][1][1] * dp[i - k][j][1][1] % Mod - x * y % Mod + Mod) % Mod * C[i - 1][k - 1] % Mod) %= Mod;

T3

我们建立两张图,一张是原图,另一张是反图。于是原问题就相当于从两张图的原点走到终点的费用和。

考虑二维 Dijkstra,设 \(dis(x,y)\) 表示第一张图走到 \(x\),第二张图走到 \(y\) 所用费用最小值,使用与 Dij 相同的转移方式即可。为了维护已走过的车站,再开一个 bitset \(sta(x,y)\) 存此时走过的站点。转移时根据这个加上对应权值即可。

T4

显然使用扫描线,对于每一个区间维护当前覆盖该区间且删除时间最晚的矩阵,利用并查集更新即可。

具体还是看这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808085.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.Java集合框架_List接口

集合与数组的区别数组:长度开始时必须指定,而且一旦指定,不能修改。 保存的必须为同一类型的元素。 使用数组进行增加/删除元素比较麻烦。集合:可以动态保存任意多个对象,使用比较方便。 提供了一系列方便操作对象的方法: add、remove、set、get。 使用集合添加,删除新元…

20240924

[牛半仙的妹子 Tree(tree)](http://ac.robo-maker.cn/d/contest/p/ZY1044?tid=66f28cd11bca2159e88c8fb0) 我们会发现其实牛半仙发癫时就等于将以前的标记清空,从头开始,所以我们可以考虑根号分治,如果两个牛半仙发癫的时间间隔小于 \(\sqrt n\) ,那么我们可以直接暴力枚举两…

『模拟赛』冲刺CSP联训模拟2

『模拟赛记录』冲刺CSP联训模拟2Rank 不重要了A. 挤压 你说的对,期望怎么能算签呢? 一个重要的性质:一个数的平方可以在二进制下表示为 \(\sum_{i,j}\ s_i\ s_j\ 2^{i+j}\),所以就可以分别求每一位对答案的贡献了。 设 \(f_{i,1/0,1/0}\) 表示到第 \(i\) 个数我们枚举的两位…

PbootCms上传图片变模糊、上传图片尺寸受限的解决方案

在使用PbootCMS的过程中,如果上传的图片被压缩变得模糊,通常是因为上传的图片尺寸过大。PbootCMS 默认的上传图片限制宽度为 1920 像素,缩略图的限制大小为 10001000 像素。可以通过调整这些参数来解决这个问题。 解决方案打开 config.php 文件 调整 max_width 和 max_heigh…

ROS基础入门——实操教程

ROS新人可看ROS基础入门——实操教程前言 本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。Ruby Rose,放在这里相当合理前言:本文初编辑于2024年10月24日 CSDN主页:https://blog.csdn.net/rvdgds…

PbootCMS增加可允许上传文件类型,例如webp、mov等文件格式扩展

在PbootCMS中增加可允许上传的文件类型(例如 webp、mov 等文件格式),需要在多个地方进行配置。以下是详细的步骤: 操作步骤 1. 修改 config.php 文件 首先需要修改 config.php 文件,增加允许上传的文件类型。打开 config.php 文件打开 config.php 文件,通常位于 /config …

出现“登录失败,表单提交校验失败”,请检查服务器环境

如果出现“登录失败,表单提交校验失败”,请检查服务器环境,然后刷新页面重试,或者删除 runtime 文件夹,然后刷新页面重试。 操作步骤删除 runtime 文件夹使用 FTP 客户端或 SSH 连接到服务器。 删除 runtime 文件夹:bashcd /path/to/your/site rm -rf runtime刷新页面清除…

多次密码错误导致登录界面锁定,可以删除网站的 runtime 文件夹

如果多次密码错误导致登录界面锁定,可以删除网站的 runtime 文件夹,然后刷新页面重试。 操作步骤删除 runtime 文件夹使用 FTP 客户端或 SSH 连接到服务器。 删除 runtime 文件夹:bashcd /path/to/your/site rm -rf runtime刷新页面清除浏览器缓存。 重新访问后台登录页面扫…

红日靶机(三)笔记

VulnStack-红日靶机三 概述 相交于前边两个靶场环境,靶场三的难度还是稍难一点,有很多兔子洞,这就考验我们对已有信息的取舍和试错,以及对渗透测试优先级的判断。涉及到对数据库操作的试错,对 joomla 框架 cve 的快速学习,php 中 用到disabled_function 的 bypass ,对li…

快乐数学2勾股定理0000000

2 勾股定理 在任意一个直角三角形中,两条直角边的平方和等于斜边的平方。 a + b = ca 和 b 分别表示直角三角形的两条直角边长度。 c 表示斜边长度。我们大多数人都认为这个公式只适用于三角形和几何图形。勾股定理可用于任何形状,也可用于任何将数字平方的公式。 2.1 了解面…

信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重叠子问题、无后效性

PDF文档公众号回复关键字:202410041 P7074 [CSP-J2020] 方格取数 [题目描述] 设有 nm 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的…

python相平面 图形

二阶非线性自治系统绘制相平面图。假设我们有一个简单的阻尼摆系统,其状态方程可以表示为: \[ dx1/dt = x2 \\dx2/dt = -cx2 - gsin(x1) \] import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint # 定义系统的状态方程 def pendu…