省选考试总结(1)
省选集训考试总结
-
3-17 (出题人: fateice ?(题风很像,但没有落款))
-
得分情况 :
-
题目:
-
T1 : 容斥
有一个长度为的排列,的一些位置已经确定了.请求出有多少种方案
对于所有 都满足 . 对取模. ()
这题容斥,我考试时候只想到的容斥...
后来发现那个用一个鬼畜的式子能变成...
其实答案就是.
上面就是就是可以没有在中出现,并且自己的位置存在的数的个数.
就是所有没在中出现的次数个数.
那么我们就是可以这样理解咯... 就是表示至少有个数可以对应在原位置上的方案数.
那我们就是要求有个数对应在原位置上的方案数 那么直接容斥算就行咯QAQ
容斥其实就是,一个算的加上去,两个算的减一个,三个算的加回来,然后又减掉.(用了组合数的一些性质吧.)
-
T2 : 点分治 (暂时不填了TAT)
-
T3 : 有意思的鬼畜spj题
有一个数列生成器,给定正整数和实数时,它会生成一个满足以
下条件的数列:-
数列长度为 );
-
对于数列中的每个元素,它有的概率为,有的概率为
,其中是一个在中均匀随机的整数。
有组数据,每组数据给定正整数以及一个按以上方式生成的数列,你
需要求出和的值。保证. ()说到这题,我就必须要提一下他鬼畜(
坑比)的得分机制 .对于一个测试点,若分值为,你的正确率为,则你的得分为,
一个的得分为所有测试点得分的最小值。这个意思就是,如果你正确率为就是一半的分,如果为就基本没分了,并且取一个的最低分..
fuck但其实题目并不是很难...瞎搞就行了qwq
这道题可以随机两个数和然后,假设他们是一个组,我们就能令它们的为那么我们就能求出另外一个.
然后对于这对进行一下
check
就行了,不行的话就继续随机... 可以玄学证明它正确性很高... -
-
-
总结:
今天还行qwq... 跪烂Hany01怒吊T2!!! 以后要多熟练计数题了!!!不要太怕麻烦啊!!!!
-
3-23 (出题人: h10 )
-
得分情况 : ......(倒数了...(暴力分滚粗了TAT))
-
题目 :
-
T1 : DFS
给你一颗有 个点的树,每个点有个权值.一个点的答案为,其他所有点和它的距离小于等于它到根节点距离的权值和. (即 ). 问每个点最后的答案. ( )
我们直接算一个点的答案好像不太好算.... 但我们可以考虑每个点对于哪些点的答案产生了贡献
即一个点 它会对它到根节点上路径的中点的子树产生贡献 其他地方不存在了
-
T2 : 矩阵快速幂
给定函数 , 定义 .
有 组询问,每次给你两个数 和 , 求 的值. ( )
这道题不难想到一个朴素的dp,考虑在第 层中,每个数对于 层哪些数的需要的系数. 不断迭代下去就行了.
每层最多需要的状态,是它因子的个数, 内最多的也就 个,我们可以记这个为 .
最后每个 乘上 所对的系数就行了.
这样似乎可以直接倍增做(狄利克雷卷积的结合律?) 复杂度
但我不会啊TAT...
不知道这个性质就用矩阵快速幂就行了.
构造一下这个转移 然后复杂度就是
然后加一下一些鬼畜的优化,就能跑到 然而这题只给了 ..
但我们可以继续优化qwq
有一个叫做乘法同构的东西,如果两个数同构那么它们的答案(系数)是一样的.(总共 个)
然后再预处理 的矩阵,然后就可以做了qwq 复杂度
还有特别多鬼畜的做法(狄利克雷卷积,组合数学,DAG计数.....)
-
T3 : 瞎搞交互题
给你一颗二叉树,一开始把你丢到深度为 的一个位置.. 每个点连出三条边,三种颜色表示.
然后你可以进行两个操作 和 . 分别是移动一个位置,查询你当前的深度.
次数上限为 ; 上限为 . 让你在这些限制内走到根节点. ( )
不难发现 次数很少... 所以我们就可以多
每 个七八遍就询问你当前的深度(不走回头路) 然后我们就可以求出你当前位置 和之前位置 的 .
我们就退回到那个位置就行了.
为什么对呢qwq 你可以考虑一下期望... ( 次 期望向上跳 层)
下面是 的讲法...
我们发现有2分之一可能深度减1;4分之一可能深度减2;8分之一可能深度减3...
于是愉快的在测距期望initialDeep/2次的情况下找到出口
-
-
总结 :
今天题目并不难, 可惜没勇气刚题...
T1模型简单,应该多想一会的qwq
T2那个矩阵快速幂想出来了,自以为能过 😦
T3也不是很难,要多想点瞎搞啊!!!
ak了三十人的壮观场景qwq Orz zhou888 ShichengXiao 日常ak!!!
-
T3-25 (出题人: __debug )
-
得分情况 :
-
题目:
-
T1 : 奇妙的dp(dp套dp)
给出一个长度为 的序列 , 请你求出有多少种 的排列, 满足 是它的一个 .
( )
原题是 BZOJ3591
这道题的思想极其的巧妙,就是运用了 套 的思路.
我们考虑我们 求 的方法. 我们会用一个 记忆 值为 时候的最小的 .
然后这个可以每次二分查找,然后去更新.
我们就可以把这当做 的状态来转移.
因为 是满足单调递增的, 所以我们只要存在哪些数被我们选择了.
然后我们就可以用三进制来模拟一下这个状态.
表示没有考虑这个数; 表示考虑了这个数,并且这个数还在 数组中; 表示考虑了这个数,但这个数已经不存在 数组中了.
然后压一下状态,然后枚举数字转移找位置的时候可以用一个单调队列去维护.
那么总复杂度就是 , 而且状态数很少跑的非常快.
建议看看代码:
-
T2 : 平面图,分治
给定一个正 边形及其三角剖分, 共 条边 ( 条多边形的边和 条对角线), 每条边
的长度为 .
共 次询问, 每次询问给定两个点, 求它们的最短距离.( )
这道题思路我大概明白了,不想去写TAT
挂一下题解算了.....
由于给出的图是一个多边形的三角剖分, 因此每条对角线都将这个多边形分成了两部分, 考虑
分治.每次在当前多边形中选出一条对角线使得两部分点数尽可能均匀,, 可以证明最坏情况下存在任
意一侧不少于 的分法.这条对角线两侧就形成了两个子多边形, 递归下去直到当前多边形为三角形为止, 并通过 计算出每个子多边形上每个点到选定的对角线两点的距离.
询问的时候只要判断一下两个点是否在选定的对角线同侧, 如果是则递归求解, 否则可以通过
之前预处理出的距离简单计算.
找对角线的时候可以直接找环上距离最远的对角线.其实这题和 【ZJOI2016】旅行者 差不多
都是平面图上求点对距离,代码比较繁琐.
就是一开始利用了分治预处理的思路.
这因为平面图的转移只能从一些特定的地方走,而不会去跳.
那么我们每次预处理出里面一些特定点到其他所有点的距离就行了.
有时间回来补补...
-
T3 : 最小割
有一个 的地图, 地图上的每一个位置可以是空地, 炮塔或是敌人. 你需要操纵炮塔消灭
敌人.
对于每个炮塔都有一个它可以瞄准的方向, 你需要在它的瞄准方向上确定一个它的攻击位置,
当然也可以不进行攻击. 一旦一个位置被攻击, 则在这个位置上的所有敌人都会被消灭.
保证对于任意一个炮塔, 它所有可能的攻击位置上不存在另外一个炮塔.
定义炮弹的运行轨迹为炮弹的起点和终点覆盖的区域. 你需要求出一种方案, 使得没有两条炮
弹轨迹相交. 求能消灭的最多敌人.( )
这题做法十分巧妙啊!!qwq
小范围,加限制,而且很难思考出来正解...那么我们考虑一下网络流(费用流)吧2333
这个建模十分的奇妙,先讲一下怎么建,再讲为什么这样建吧.
- 每个点拆成两个点,分别去考虑列和行的边. 我们记为 . 然后 有一条流量为 的边.
- 超级源向每个纵向炮台( ) 连一条流量为 的边.
- 每个横向炮台向超级汇( ) 连一条流量为 的边.
- 然后考虑每个纵向炮台,它延伸到它能取的最大的值( ) 的点,我们沿途连边 ( ) ,流量为 ( 是起点的权值,如果为负数那么我们设为0).
- 然后考虑每个横向炮台,也和上面相同,我们只是把边反过来了,并且这里的 是终点的权值.
最后的答案就是 . ( 为这个图的最小割)
这是因为你考虑这个最小割的意义,就是你炮台撞车了,然后要沿路退回,损失的价值.(然后要使得这个损失最小)
然后最后使得行列割断,那就是整个图就合法的情况,不存在两个炮台攻击区域相交.
还有一点,为什么一定要拆点.
不拆点的话,我们会发现,会有一种神奇的走法 列 行 列,那如果一个行和多个列相交,那就会十分的鬼畜.(答案会变大)
此处拆点,限制了只能有一次从列变成行.
_debug 学 matthew99 的方言是真的像qwq
-
总结 :
仍然没有过题,但暴力分拿的很足,比较开心qwq 而且很多都是原题,证明自己刷题不够啊!!
今天的题解法都很神,而且很巧妙 没有太难的算法或者数据结构,但就是想不出...
希望思维能提高啊!!! 日常orz zhou888 (A了T1, CF rank 3上首页) !!!
-
3-26(出题人: __debug 讲题人 : h10 23333)
-
得分情况 : (成功诠释打铁滚粗)
-
T1:hash or kmp
给定字符串 和 , 定义两个字符串匹配当且仅当 , 对于 的字符集有一个映射 , 然后使得 的一个子串和一一对应. (例如 但 )
然后问你 上哪些位置和 对应.
( 字符集大小 )
看到这道题很容易想到 hash 可是我的hash状态选错了...
虽然也求了一个 Last 和 Next 数组可是它的位置不同我判不出来... (还调了4hour)
我们可以这样思考,只要对于所有种类字符,存在一种它们排列方式唯一确定,且它的相对位置也唯一确定.
那么我们可以这样做 记一个 为上一个和 这个位置上的字符一样的位置. 同义,只是下一个.
然后用 和 之间的间隙 来当做它的哈希值(平常我们用它的字符编号,作为标识,本题显然不适合咯)
然后如果对于当前的 它的 不存在于当前你枚举的 的子串中,就跳过.
而且在滑动的时候,对于你删去的位置也要剔去它的下一个位置的贡献.
虽然好讲,代码却一点都不好写.... 调了很久qwq
kmp 就是要魔改一波 fail 数组,就是它失配函数...(但我kmp不记得了啊啊)
这题我也挂一下代码吧...(细节很重要啊) 怕挂掉打了双哈希,其实单的够了...
-
T2 : 拉格朗日乘数
在平面上找 个点, 要求这 个点离原点的距离分别为 . 最大化这 个点构成的
凸包面积, 凸包上的点的顺序任意.(不要求点全在凸包上)这题爬山和贪心轻松就有 分的高分...
正解我原来也不知道是啥东西去搜了一波定义.
设给定二元函数 和附加条件 , 为寻找 在附加条件下的极值点 , 先做拉格朗日函数 , 其中 是参数.
令 对 和 和 的一阶偏导数等于零,即
由上述方程组解出 及 , 如此求得的 , 就是函数 在附加条件 下的可能极值点.
若这样的点只有一个 , 由实际问题可直接确定此即所求的点.
大概定义是这样的吧 知乎上有更好的介绍 qwq 在知乎上学算法2333
这个可以运用在本题上,只是这题变成高维,换为多元函数.
此处的 ,
也就是当 时要使得面积和 最大.
此处乘数 . 至于为啥,导入之前的偏导就可以了qwq
导数运算高中会学的... 这里只需要简单的套公式就行了..
此处 关于 单调.
然后你就二分一下 然后去 check 一下(用之前的约束条件 就行了)
最后算答案.... 但 check 那里的 的两个出口看不太懂...(就是 值 和 会有两种不同的判断)
以后有时间再回来补补这些东西吧....
ps : 最近求导和积分好多啊 , 怕不是微积分专题...
-
T3 : 线段树合并和分裂
给定一个长度为 的正整数序列 . 现在有 次操作, 分为两种:
- : 将区间 降序排序 或升序排序
- : 询问区间 内元素之积的十进制下最高位
这题我看到就想到原来做过的一道题 BZOJ4552 ...
当初只会咸鱼的二分答案转化成01序列 然后线段树维护....
后来看了下 fjzzq大佬的博客 发现可以直接用线段树分裂和合并去维护.
这种东西往往都能玄学地达到正确复杂度...
利用这种动态开点的值域线段树可以解决一堆有序集合进行合并/分裂/查询k小的问题,最好用的就是在排序问题中。
然后这题有个巧妙的技巧... 就是每个数取个 然后乘法变成加法 , 只要维护加法就行了. 然后答案就是小数点后一位的数字... 精度根本不会萎qwq
-
-
总结 :
今天决策失误了... T1明明知道自己的那个方法很难打而且容易挂 , 还花那么久去打 , 真是石乐志
后面两题部分分很多啊!!! 希望以后能多冷静一会,整体把控.. 一道题要估计细节多 要超过 那就把优先级放低.
然后找最容易拿的分去做qwq
__EOF__

本文链接:https://www.cnblogs.com/zjp-shadow/p/8631696.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】