pkusc/wc 做题记录题解

news/2025/1/9 4:52:24/文章来源:https://www.cnblogs.com/HaHeHyt/p/18657652

鲜花

所有题目来源:search pku in qoj

参考文章:

  • DaiRuiChen's blog:PKUSC2024,云浅's blog:THUSC/PKUSC 2024

  • cyfff's blog:PKUWC2024,realskc's blog:PKUWC2024 Day1,PKUWC2024 Day2

  • ix35's blog:PKUSC2023,aleph1022's blog:PKUSC 2023 D1T3,max67's blog:PKUSC2023

pkusc 2024 Day1

T1 (回文路径)

原中原:P4324

给定 \(2\times n\) 网格,每个格子上有一个字符,考虑一条只能向下和向右走的路径,如果路径上每个字符连成的字符串是回文串,称这条路径是好的,求最长好路径。
\(1\le n\le 10^5\)

$\texttt{solution}$

枚举回文中心在啥位置,不妨设在第一行。二分出在第一行能走到的最长距离(容易证明这样贪心是对的),然后往下走,再二分在第二行能移动到最长距离。

判断回文用哈希即可,复杂度 \(O(n)\)

\(\texttt{record}\)

T2 (正方形计数)

给定凸 \(n\) 边形 \((x_1,y_1)\sim(x_n,y_n)\),求有多少正方形(可以是斜正方形)在该多边形内。

\(1\le n\le 8,1\le x_i,y_i\le 2000\)

$\texttt{solution}$

考虑枚举正方形的一条边向量 \((\Delta x,\Delta y)\),然后对起点坐标有若干限制,可以写成半平面交的形式。

相当于数某个多边形内部整点数,可以拆成对 \(\mathcal O(n)\) 条线段下方的区域内数点个数,类欧几里得算法解决。

时间复杂度 \(\mathcal O(nV^2\log V)\)


但是本题小常 \(V^3\) 能过,于是有如下做法:

直接记录凸包当 \(x=t\) 时包含的整点区间 \(l_t,r_t\)

然后同样枚举正方形的一条边向量 \((\Delta x,\Delta y)\),然后枚举起点 \(x\) 坐标,此时起点 \(y\) 坐标限制显然是一个区间,通过 \(l,r\) 算出即可。

上下界实现精细一点就能通过。

\(\texttt{record}\)

T3 (独立)

弱化版:P8352。

给定 \(n\) 个点的树,每个点点权在 \([1,m]\) 中随机,求所有方案下树上最大权独立集的和。

数据范围:\(1\le n\le 2000,1\le m\le 10^{8}\)


pkusc 2024 Day2

T1 (分流器)

在一张 \(n+1\) 个点的有向图上,\(1\sim n\) 出度都为 \(2\),且边 \(i\to j\) 满足 \(i<j\)。称每个点的两条出边为左右手。在这个图上做一个投球游戏,多次在 \(1\) 放球,每次球从 \(x\) 的左手滚下,然后交换 \(x\) 的左右手。

求最小周期,即最少放球个数使得左右手状态和初始状态一致。

\(1\le n\le 5\times 10^4\)

$\texttt{solution}$

考虑维护 \(1\sim i\) 的最小周期,并且求出此时每个点被经过的次数 \(f_{i}\)

可以据此计算出 \(f_{i+1}=\sum\limits_{i+1\in \mathrm{out}(u)} \dfrac{f_u}2\),如果 \(2\nmid f_{i+1}\) 那么最小周期要翻倍,每个 \(f_i\)\(\times 2\)

一个较好的实现是令 \(f_{1}=2^n\),令 \(k=\min\limits_{i=1}^n \mathrm{lowbit}(f_i)\),答案就是 \(2^{n-k+1}\),压位高精度维护。

时间复杂度 \(\mathcal O\left(\dfrac {n^2}{\omega}\right)\)。—— $\texttt{solution by Dairuichen}$

\(\texttt{record}\)

T2 (排队)

给定 \(n\) 个区间 \([l_i,r_i]\),定义 \(f_i(x)=x+[l_i\le x\le r_i]\)\(q\) 次询问 \(L,R\),求 \(f_R(f_{R-1}(\cdots f_{L}(0)))\)

\(1\le n,q\le 10^6\)

$\texttt{solution}$

扫描线,设当前扫描到 \(R\)\(x_L=f_R(f_{R-1}(\cdots f_{L}(0)))\),容易发现 \(x_L\) 单调不增。

线段树维护所有 \(x_i\),二分出 \(x_L\in[l_i,r_i]\)\(L\) 区间,区间加即可。复杂度一只 $\log$。

\(\texttt{record}\)

T3 (最短路径)

给定纯随机的 \(n\) 个点 \(m\) 条边的带权有向图,\(q\) 次随机询问某对点 \(S\to T\) 的最短路。

\(1\le n\le 2\times 10^5,1\le m\le 3\times 10^6,1\le q\le 10^4\)


pkuwc 2024 Day1

T1 (Caught in the Middle)

给定一个长度为 \(n\) 的仅包含 L,R 的字符串 \(s\)Alice,Bob 博弈,Alice 先手。

每次操作时,假定当前剩余字符串为 $s$。如果 $s$ 为空串,则此时操作者输掉游戏。否则操作者可以选择整数 $i\in [1,|s|]$。

如果 \(s_i = \texttt{'L'}\),则操作后剩余字符串为 \(s_{1}s_{2}\cdots s_{i-1}\);如果 \(s_i = \texttt{'R'}\),则操作后剩余字符串为 \(s_{i+1}s_{i+2}\cdots s_{|s|}\)

求在最优情况下谁会获胜。

$\texttt{solution}$

RL 分别看成左/右括号,发现答案是括号序列能否匹配。

证明就考虑一个括号序列任意操作一次后,把和其匹配的另一个括号也操作一下就仍然是括号序列。

而不是括号序列时操作从左到右第一个有多余 L 的那个 L 就一定能操作成括号序列。

如果没有多余的 L,则一定能找到一个 R 使得操作其合法。

\(\texttt{record}\)

T2 (最小值之和)

T3 (堆操作练习题2)


pkuwc 2024 Day2

T1 (圆)

\(\text{round}(x)\) 表示 \(x\) 的四舍五入。给定 \(n\) 个恰好一位的小数,构成了可重集 \(S\)。你可以进行两个操作:

  • 取出 \(x\in S\),放入 \(\text{round}(x)\)

  • 取出不同的 \(x,y\in S\),放入 \(x+y\)

你要使最终集合 \(S\) 中只剩一个数,并最大化这个数。

\(1\le n\le 10^6,a_i\in [0,10)\),保证 \(a_i\) 都只有一位小数。

$\texttt{solution}$

十分位 \(\ge 5\) 的直接四舍五入,\(=0\) 的不影响答案。接下来贪心地做匹配:

  • 优先匹配 \(4,1\),然后把所有 \(4\) 变成 \(3\)(容易证明这不影响答案)

  • 再依次做 \(3+2,3+1+1,3+3\) 的匹配,然后把所有 \(3\) 变成 \(2\)(容易证明这不影响答案)

  • 最后匹配 \(2+2+1,2+1+1+1,2+2+2,1+1+1+1+1\),就求完了答案。复杂度线性。

\(\texttt{record}\)

T2 (排序)

T3 (栈)


pkusc 2023 Day1

T1 (Border)

给定长度相同的非空字符串 \(S,T\),对于任意 \(1 \le i \le |S|\),进行如下询问:

  • 假设将 \(S\) 的第 \(i\) 个字符替换为 \(T\) 的第 \(i\) 个字符,形成的新字符串 \(S'\) 的最长的 \(\text{border}\) 是多少。如果不存在 \(\text{border}\),则返回 \(0\)

询问互相独立。\(1\le n\le 2\times 10^6\),字符集为小写英文字母。

$\texttt{solution}$

特判掉 \(S_i=T_i\) 的位,答案就是原串的最大 \(\text{border}\)

首先如果原串的某个 \(\text{border}\) 在其不包含某一位,则直接贡献上去。

否则枚举 \(\text{border}\) 长度,二分哈希出第一个不同的位,修改成前缀或后缀的对应位值分别贡献上去。

所有过程均可用哈希实现。复杂度 \(O(|S|\log |S|)\)

\(\texttt{record}\)

T2 (狼人杀)

T3 (天气预测)

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

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

相关文章

荣耀再续 | 蚁景科技在第136届广交会测试赛中再获团体亚军佳绩

近日,在第136届广交会网络平台测试赛中,蚁景科技凭借卓越表现与精湛技术脱颖而出,斩获团体积分132分,再度荣膺第二名的佳绩,续写荣誉篇章。近日,在备受瞩目的第 136 届广交会网络平台测试赛中,蚁景科技凭借卓越表现与精湛技术脱颖而出。此次比赛由中国网络空间安全教育论…

altium designer中布线如何走圆角.如图所示。我按了shift+空格键。可依旧是走45读的角。麻烦指教啊。急求

按TP键,在PCB Editor_Interactive Routing中,看是否选择了Restrict To 90/45,取消勾选即可更多追问追答追问取消了还是没用 追答shift+空格键要多按几次,是循环切换的转载自: https://zhidao.baidu.com/question/536745523.html

nginx下载安装配置

nginx下载安装配置 环境:win10虚拟机Vmware,在linux(centos7.6)下安装nginx(nginx-1.20.2.tar.gz) 注意:在linux中,不是管理员登录,最好在指令前加上sudo提权,避免权限不够执行失败带来的麻烦,以下命令请都加上sudo,这是一个好习惯。 下载 https://nginx.org/ …

WindowsLog_Check:日志分析

声明免责 仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。介绍 该工具支持一键获取windows主机的日志,主机信息,GUI显示,支持使用微步KEY对文件进行MD5分析,支持检测相同MD5的文件,支持对内存进行字…

CDS标准视图:维护计划员组 I_MAINTENANCEPLANNERGROUP

视图名称:维护计划员组 I_MAINTENANCEPLANNERGROUP 视图类型:基础视图 视图代码:点击查看代码 @EndUserText.label: Maintenance Planner Group @Analytics: { dataCategory: #DIMENSION,dataExtraction : { enabled: true ,delta.changeDataCapture.automatic: true } } @V…

【Docker基础】Docker Desktop超详细入门使用指南

前言 大家好,我是小徐啊。今天介绍下什么是Docker Desktop以及如何使用。docker是一个帮助我们进行容器化部署的应用,但一开始,它只有命令界面,对于不太习惯使用命令的小伙伴比较难上手。所以,后来官方就出了一个可视化的软件Docker Desktop,帮助我们简单直观的使用docke…

BOE(京东方)联手故宫再度打造沉浸式数字展 引领数字艺术文化新篇章

2025年1月6日,由BOE(京东方)联合故宫博物院及腾讯主办的“‘纹’以载道——故宫沉浸式数字体验展”在苏州湾数字艺术馆盛大启幕,1月7日将正式开展。值此故宫博物院建院百年开年之际,BOE(京东方)凭借前沿数字技术,将故宫的瑰丽“国宝”以全新数字化形式串联起来,让故宫…

ASE80N10-ASEMI中低压N沟道MOS管ASE80N10

ASE80N10-ASEMI中低压N沟道MOS管ASE80N10编辑:ll ASE80N10-ASEMI中低压N沟道MOS管ASE80N10 型号:ASE80N10 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:80A 漏源击穿电压:100V RDS(ON)Max:9.5mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、低压MOS管 漏电流…

.net6之阿里云OSS

概念 集成阿里云OSS文件存储服务 引用阿里云包封装AliyunSmsClient(二次封装阿里云短信基类)public class AliyunOssClient{private readonly AliyunOssOptions _options;private readonly OssClient _client;public AliyunOssClient(IOptions<AliyunOssOptions> options…

React数值滚动效果,支持数值变化变化

效果:组件:(NumberScroller.jsx)/*** 数字滚动效果*/ import React, { useEffect, useState } from react; import PropTypes from prop-types;const NumberScroller = ({ targetValue = 0, decimalPlaces = 0, duration = 2000 }) => {const [value, setValue] = useSt…

C#笔记(1、钉钉机器人推送帆软报表图片)

C#笔记——钉钉机器人推送帆软报表图片(一)1、前言 ​ 2024年最后一个月,家里多了个小公主,在家休息了一段时间。2025年,休完假上班第一天,领导就说:哎,我看总部那边做了个每日产出的报表推送到钉钉群,来看计划达成率。我们基地这边能不能做啊。我心里默默一想,然后大…

Javascript实现asp.net mvc的checkbox基本功能

Html的checkbox使用很广的,它的状态,勾选与非选。初始状态,默认为非选。你可以设置它是勾选, 直在checkbox 标签中,添加checked属性。另外,在javascript可以这样,getById(Checkbox_IsPublished).checked = true; 或者,getById(Checkbox_IsPublished).setAttribute(che…