当前位置: 首页 > news >正文

10.17 CSP-S模拟33 改题记录

HZOJ

写在前面

貌似没啥可写。。。大概就是二十多分钟写完T1然后写T2,一直想假一直写挂然后写了三个多小时,好在写出来了。T3看不上,T4正解需要的东西都写了然后喜提0pts,甚至不如输出0的37pts。

《夜信》

今晚会把那天的萤火
送到你的窗边
嗯 是我爱你这句话
我们的初吻在我脑海里浮现
那么 无论何时 闭上眼睛
嗯 到遥远的地方去
宛如波浪停留过的
沙滩上所写的字
你好像已渐渐远去 消失不见
总让我想念又想念
虽然我无法在此
诉说我内心深处的话语
是我爱你这句话啊
名为你的幸运
会怎样来到我身边呢
现在如果我们能在一起的话
啊 该多么美好
宛如波浪停留过的
沙滩上所写的字
你好像已渐渐远去 消失不见
想念 又更想念了
虽然无法在我的日记里
诉说我内心深处的话语
我爱你这句话
今夜会把那天的萤火
呈现在你的窗边
嗯 愿会是个好梦

A. Divisors

签到题。本来以为还要容斥啥的,但是范围直接模拟就能过,然后就过了。

B. Market

罪魁祸首。题意是给定若干个商店及其开店的时间和卖的东西的价值和费用,给定若干个询问,对于每个询问给出开始购物的时间和有的钱,每个商店只能买一个东西,求问最多能买到多少价值的东西。

数据范围粗看是简单的背包dp(实际上也是)。然后大概就是觉得不可能考这么简单的东西,然后往最小费用最大流上面想了。还好及时反应过来开始写背包。然后就发现如果以价值为第二维那答案没有连续性,没法二分出答案;以花费为第二维空间又开不下,时间也不允许那样转移。然后就手搓主席树,发现小点能过大点WA。开大空间反而RE。然后意识到树上也开不下这么多点,而且其慢无比。然后就苦想inf秒。然后突然意识到可以把价值上树,还不用动态开点,遂A之。此时据结束还有5min。

C. 连通性

不要容斥呜呜呜。题意是有一份错误的floyd代码判图的连通性,求问对于给定的\(n\),只有\(n-m\) 个点可以进行中转时该求出的连通性仍然完全正确的连接方式数。

转化题意。将点分为两类,一类为前\(n-m\) 个点,二类为其余点。对于前\(n-m\) 个点,其内部转移不受影响。二类点以一类点可以向二类点或一类点转移,但是一类点无法通过二类点向其他点转移。这启示我们一个连同块内每个二类点必定会和一个一类点相连,且没有任何一个二类点能作为割点。

考虑只有一类点的情况,那答案直接就是\(n\) 个点无向图的数量。只有二类点,那么同一连通块内的每一个点对都有直接的边相连。

那对于一张普通的图,我们就可以把其分为只有一类点,只有二类点和既有一类点又有二类点的连通子图。

对于既有一类点又有二类点的连通块,根据上面的分析,二类点至少和一个一类点相连且不能是割点。

我们首先可以容斥求出\(i\) 个点无向连通图的数量\(g_i\),用简单无向图的数量减去不连通的数量,不连通的个数可以通过枚举任意一个点所在连通块的大小取得:

\[g_n=h_n-\sum_{i=1}^{n-1}g_i\times 2^{\frac{i(i-1)}{2}} \times \binom{n-1}{m-1} \]

考虑求出答案\(f_{n,m}\)。由于连通块是无序的,为了方便转移,我们强制编号为\(n\) 的点在最后一个连通块。

我们先考虑全是二类点的情况:

\[f_{n,m}=\sum_{i=1}^{m} f_{n-i,m-i} \times \binom{m-1}{i-1} \]

即枚举符合条件的子图,再加上若干个二类点连通块的方案数。

然后就可以在连通块内加上一类点了:

\[f_{n,m}=\sum_{i=1}^m \sum{j=1}^{n-m} f_{n-i-j,m-i} \times \binom{m-1}{i-1} \times {n-m}{j} \times (2^j-1)^i \times h_i \times g_j \]

即枚举符合条件的子图再分别枚举添加的一二类点数求得方案数。

然后就是\(O(n^4)\) 预处理\(O(1)\) 查询。

代码实现就是把式子直接上去。

D. 树

题意是给定一棵树。给定若干点对。确定所有树边的方向,使得能满足所有点对能从一方到另一方。求满足限制条件的树边方向组合数。

其实赛时把该写的结构都写得差不多了,至于没写出来,是我太唐了。首先可以知道,如果一条边不被任何一条路径经过,那么它两个朝向都可以选。由于限制条件,某些边就只能选择同一个方向。不会二分图怎么办?考虑将所有路径拍到点上,那么就将所有点拆成两个,一个代表向上的边,一个代表向下的边。然后遍历所有边时在同一个方向上的边用并查集合并,然后转折点出就反方向的边相连。这样最后出现在同一个并查集内的边的就都要选/不选。所以如果最后某一个节点拆出的两个点在同一个集合内,则说明如果要满足条件就必须既要有向上的边又要有向下的边,显然这样不满足题目要求,可以判无解。那么显然每个并查集可以对答案产生2的贡献(向上向下二选一)。所以答案就是\(2^{并查集个数/2}\)。(一条边没有被经过,所以其不会被合并,所以可以算作一个独立的集合)(除以2是因为一正一反会算重)。

然后就考虑如何维护。暴力跳肯定不行。那考虑树链剖分,然后上线段树维护集合情况。理论复杂度\(O(nlog^2n)\),虽然本地跑大样例会T,但是交上去能过,虽然是最劣解而且比倒数第二慢了两倍。

然后要注意各种空间开的倍数,还有不同位置使用的变量下标/含义应该相同,不能混用,否则就狂RE不止。

http://www.jsqmd.com/news/15567/

相关文章:

  • 包装类(基本数据类型对应的引用数据类型)
  • luogu P7915 [CSP-S 2021] 回文
  • 字典树 Trie 乱讲
  • 系统稳定性监控
  • USACO 绿-蓝 思维题小记
  • Day16-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\classlei
  • 一个实用的短视频脚本创作指令分享
  • redis和mysql之间的数据一致性
  • ubuntu允许root登录桌面系统
  • 申威(sw_64)架构下如何安装java-1.8.0-swjdk的rpm包?​
  • AI协科学家:技术革命还是安全噩梦?
  • 一个决定
  • 详细介绍:k8s部署前后分离架构微服务——跨域和缓存问题
  • npm镜像配置
  • 实用指南:计算机毕设java基于mybatis的医用器械管理系统 基于 SSM+JavaWeb 的医用器械全流程管理平台 Java+MySQL 的医疗物资一体化系统
  • 一些特性
  • 央链知播受权发布:图说《“可信资产 IPO + 数链金融 RWA” 链改 2.0 六方共识》 - 详解
  • AGC 板刷记录1
  • 2025.10.17总结
  • 记Windows 11环境Rust下载安装配置流程
  • K8s学习笔记(九) job与cronjob - 教程
  • [HZOI]CSP-S模拟33
  • [PaperReading] VLM2Vec-V2: Advancing Multimodal Embedding for Videos, Images, and Visual Documents
  • 通用UI界面设计
  • ffmpeg使用
  • 2025.10.17总结 - A
  • ShandongCCPC2024
  • Ubuntu创建python桌面图标
  • 标悬浮展开多级菜单
  • 深入解析Pure恶意软件家族:从RAT到构建器再到开发者