「考试」省选39
非常值得反思的一场考试
考完改了20分钟就AK了。。。
T2的预处理处理到了n−2???
处理到n−1就A了。
T3的一个循环写错了位置,往下调了一格就A了。???
自闭场。
明天就noi online了。。
诶。。状态什么时候能来啊。
行吧,就这样吧。
T1
讲过。
将ai,bi连边。
将会形成环和链,统计一下环的个数。
然后链分为三种。
缩掉中间的那些非0部分可以分成:
0→0
0→x
x→0
设分别有A,B,C个。
然后枚举一下第二种的个数。
看他们单独组成的环有多少个:
为什么要-1呢?
意思是说我把这个位置以后作为划分的部分全作为这个0\rightarrow 0的附属品。
然后这样相同的板子一共有A-1个。
放进去一起排列。
然而这些板子是一样的。
所以除掉了(A-1)!
相当于元素各不相同的插板。
然后设第三种单独成环的贡献为g(i)
所以:
最后是0\rightarrow 0的贡献了。
因为这A个物品的取值是不一样的。
然后把他们全都卷到一起就可以了。
复杂度O(n^2)。
T2
其实挺简单的。
就是一个容斥。
首先发现三条边均不存在的条件不是很好满足。
然后可以搞一个容斥。
答案就是:
无限制贡献-至少有一条边的贡献+至少有两条边的贡献-至少有三条边的贡献。
第一个直接枚举每个位置不限制然后线性计算即可O(n)
第二个枚举边然后计算O(m)
第三个枚举中间点然后枚举出边计算O(m)
第四个三元环计数O(m\sqrt{m})
这样就可以出答案了。
T3
一个exsam。
比较难写不好调。
然后思路上挺简单的。
把substring那个题复杂化一点就行了。
建一个exsam就可以解决第一个和第三个问题。
第二个和第四个可以用LCT维护parent树,每个节点维护一下对于不同串的endpos集合大小就可以。
具体来说。
第二个操作就找到当时的那个前缀节点。
然后查询在当前parent树上当前然后查询一下某一个串的endpos集合大小。
第四个操作就直接在树上跑,然后最后跑到某个节点,把上面每个串的endpos集合大小取一个max即可。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络