qbxt2023国庆刷题 Day6 ~ Day7

Day6

100+30+100+0,rk3 ,考成这样还能 rk3 ,好怪啊
虽然但是 T3 是在 oeis 上找的,虽然写了随机数但还是运气好过掉了
T2 应该是写寄了吧,感觉自己做法并没有什么问题

T1

比较典的题,并查集维护下一个没被删的点即可

复杂度 O((n+Q)α(n))

T2

题目里的同构二字提醒的很明显了,要用树哈希判树同构

题目显然是 dp

dpu 表示以 u 为根的答案。分析样例可以发现对于数形态相同的子树有以下两种性质:

  1. dp 值相同
  2. 对这些子树的根分配的问题等价于可重集问题:找一个长度为 n 的可重集,所有数 m 的可重集方案数。问题是一个插板法,把 m 个板子插到 n 个空格里

因此我们只需要这么做就可了,复杂度 O(n2) ,我用 map 因此多了 O(logn)

T3

一个 2×2 的矩形只能放一个棋子,我们可以把一个 2n×2n 的格子中每个 2×2 的格子看成一个点,这样我们就可以把格子看成 n×n

考虑当一个棋子放到了小格子的左上角,则在这个小格子左上角的所有小格子,他们都只能放到左上角。同样的,对于右下角某个小格子放了一个棋子,则在这个小格子右下角所有小格子都只能放到右下角。连接这两个小格子之间的一个阶梯,右上和左下都填成小格子填在右上和左下的方案

考虑暴力的计算这个贡献,我们暴力枚举左上角 (a,b) 和右下角 (c,d) ,用组合数填阶梯

一些细节:当 a=0,b=0 是会算到 a=0,b>0 的情况,要去重

T4

  1. 如果我们有一个数不想要,比如说 9 ,我们可以 9 ,然后再乘起来
  2. 如果有一些数不想要,比如 1,2,3,4,5 ,我们可以把他们加在一起后开根

根据小学数学知识拉格朗日差值,考虑当 m=1 时,我们可以这么构造,假如 x1=2 ,我们可以让 f(x)=(x1)(x3)(x4)...(x9)×y1 来得到答案

m1 时,我们可以构造多个 f1(x),f2(x) ,然后把他们加起来即可

然后我们没有考虑完,因为 y1 从何而来?我们发现 y1 可以二进制分解,而二进制分解我们只需要多个 2 乘起来。而 2=1+1 ,因此我们可以凑出 y1 ,完结

贪心、二分、模拟

  • n 个线段选最多不相交

    右端点排序
    但有个神奇的东西,我们把两个相交的线段连边,这个问题就变成了最大独立集,而且图也不是二分图
    这个图有一个性质:所有环都是三元环,比如:

    1 2
    1 3
    2 4
    3 4
    

    这个样子是不可能出现的
    因此如果给你一个这样的图,我们可以把他转换成原问题。我们没必要把线段构造出来,但对于一个三元环,里面肯定选的一个点是度数最小的

  • n 个任务,第 i 个结束时间 di ,完成需要 ti 的时间,如果超出时限产生超出部分的贡献。让贡献最大值最小

    1. ti 排序?
    1 100
    10 10
    
    1. diti 排序?
    1 2
    10 10
    
    1. 二分答案+线段树?
      确实可以,但老师要除排序线性贪心

    其实这题只要按照 di 排序就行了,但看起来完全不符合直觉,因为你排序甚至和 ti 没有关系。我们证明一下:
    显然我们的贪心策略一定不存在空隙和逆序对
    考虑任意一个没有空隙的策略 O ,都可以通过交换一个逆序对让答案变得不劣
    假设 dj<di ,则先做 i 后做 j 的延迟是: max(fidi,fjdj) ,先做 j 后做 i 的延迟是: max(fjdi,fidj) 。显然 fidjfjdj,fjdifjdj ,因此交换会更优

  • bzoj #4391

    fi 表示前 i 轮大的赢赢得最多,显然贪心选 >ai 的最小的数。设 gi 表示后 i 轮小的赢赢得最多,显然贪心。合并求最大
    合并会出现重复选的情况,但因为如果重复,不如交换,因为一个最大一个最小,交换后不劣

  • AGC018C

    模拟费用流
    如果只有两种币,我们可以假设全选 B ,然后我们可以按 aibi 排序,然后把一些 B 币换成 A 币,换言之前 X 个选 A ,后 Y 个选 B
    而有了 C ,我们可以枚举 A/CB/C 的分界点,然后就变成了两个二元问题,直接用上面那个方法做就行

  • 1 走到 n ,每次可以向右走一步,或 pi 的概率梭哈到 n ,或 1pi 的概率落到 ai ,问最优策略下期望时间
    n105,1aii

    通常看到期望题,第一反应是 dp
    dpi 表示 in 期望时间
    dpi=min{1+dpi+1,pi+(1pi)(1+dpai)}
    显然 dp 有后效性,而且因为有 min 高斯消元也做不了
    我们发现假如 i 是我们最优的梭哈点,我们从 1 一步一步走到 i ,然后梭哈一把,如果失败了,他跳到了 ai ,作为一个有贪心思想的人,我们肯定会走到 i 再梭哈,因为他是我们的最优梭哈点,否则我们不如第一次就在 ai 梭哈

  • ABC155D

    非常典的一道题的魔改,因为有负数
    判一下就行了,复杂度 O(nlogA)

  • 01背包
    n40,V,vi,wi109

    数据范围想让 O(2n2)
    Meet In The Middle

  • AGC006D

    tip1:中位数是一个非常抽象的东西,他的难度其实是和求排名不相上下的。而求排名我们要怎么做?二分答案。我们可以二分答案,然后把原问题转化为只有 01 的情况,这个问题就会相对好做一些
    我们发现如果我们遇到两个连续的 1 1 ,那他会一直往上走,直到遇到边边角; 0 0 的情况也同理
    所以原问题就变成了找到距离对称轴最近的 1 10 0,不会出现 1 10 0 距离对称轴距离相等的情况,因为中间的部分必须是 0 1 交替的。所以我们每次取最近的就可以成为答案;如果没有 0 01 1 ,说明序列一定 01 交替,直接看对称轴左右的数即可

  • ARC016D

    老师曰:期望问题,要么组合计数要么 dp

    dpi,j 当前在 i,HP=j 的期望到 n 点时间

    1 走到 n ,每次可以向右走一步,或 pi 的概率梭哈到 n ,或 1pi 的概率落到 ai ,问最优策略下期望时间
    n105,1aii

    这题我们解决时用了贪心来避免了 dp 的后效性,我们能否把结论同时用在这题上呢?实际上是不行的
    我们是不是还在讲二分?我们为什么不二分 dp1,H 的值呢,因为答案显然具有单调性,所以我们就判断即可
    其实这个思路在之前的 qoj 的某常比赛里见过,见这里

  • CF1244F

    是否还记得我们讲的AGC006D这题?
    先考虑一个链会怎么样?会发现对于一个 1 1 ,他会不断往外扩展,因此在他变成一半 0 一半 1 时,操作次数不会超过 O(n)

  • CF117C

    方法1:因为是竞赛图,有环一定有三元环,缩点
    方法2:考虑一个点 x ,一定能找到两个点 y,z 满足:

    x -> y
    x -> z
    y -> z
    

    xz 这条边一定是没有用的,因为如果我们能找到一点 a 使 x,z,a 成为三元环,那 ya 中一定有一边,如果 ya ,那 x,y,a 成为三元环;否则 y,z,a 成三元环。因此我们可以把边 xz 删掉
    于是在图中把若干条边忽略掉后,每个点最多一个出边,因此我们只要枚举两个点,再看和他相连的点是否成环即可。复杂度 O(n2)

Day7

70+0+0+20rk36T1 寄了, T2 码量题, T3 写寄了, T4 暴力。考的不好, T1 写了两个小时,时间规划不合理

发现自己的代码功底并没有想象的好,不如说变坏了

T1

K=2 时把矩阵分成了两部分,那猜测答案把矩阵分成 K 部分

把矩阵开成一个邻接矩阵,那 AK 就是长度为 K 的路径,题目要求没有,那我们把点分成 K1 部分,每部分两两连边

让答案最大,答案就是 nK ,注意微调一下

老师曰:要注意矩阵的图论意义

T2

倍增+换根即可,但赛时难写

赛时想得线段树二分,也可

T3

曾经某个刷题营的某场比赛 T1 用到了一个性质:点越早到越好,因此求最短路

看数据范围,显然分层图

赛时的我考虑对于一个路径用一个中转点建一个类似前缀和的操作,但会有负环,解决方法是对于中转点记录转移前缀,只向后转移,比较麻烦

今天第一次知道分层图跑最短路可以每一层图分别跑,然后合并 dp

我们考虑只建 type=0 的边,先考虑第一层,从 1 开始跑最短路,跑完后我们考虑用 dp 来跑到下一层。具体的,我们设 gi 表示当前层从可到达点到 i 点的最短路,起初 gi=Fk,i ,之后对于每一个魔法道路,更新 gu=min(gu,gv+wait(u,v)+w) ,最后 Fk+1,i=gi 作为下一层的已知节点即可。

T4

先观察序列打标,发现有一个规律:毎隔 4 个里只有一个绝对值不和别的一样,还有每隔 4 个变一下符号,还有 fnfn+1 毎隔 4gcd(fn,fn+1)=fn ,否则 gcd(fn,fn+1)=1

如果 b20 ,那由辗转相除 a2,b2 即可

我们处理 g=gcd(a1fn+a2fn+1,fn)=gcd(a2fn+1,fn) ,而因为相邻的两个数是互质的,因此 g=gcd(a2,fn)=gcd(fnmoda2,a2) ,因此直接矩阵优化

知道 g 后,我们就可以知道 gcd(a1fn+a2fn+1,b1fn)=gcd(a2fn+1,gb1) ,因此我们只要看左边这部分在 modgb1 的值即可

  • UOJ #67

    1. 不能是割点
    2. 度数为 m(n2)

    没了

  • CF1151E

    经典性质:连通块个数=保留点数-保留边数
    对于保留点数是好算的,考虑保留边数,考虑一条边会对哪些答案贡献,直接算即可
    树上也可做

  • P4643

    一道非常 trick 的题
    有点权有边权,很麻烦,我们考虑把边权去掉
    把边权放到点权上,每个点权权值为相邻边权 12
    因为如果两个点在两个集合,一减就没有贡献了,而如果两个点在一个集合,一加就会产生边权的贡献

  • P6185

    看一眼觉得是图论题,但图在哪里?
    看到一个二元关系,我们都想给他建一条边对吧?
    发现操作有传递性,比如 x,y 为一类操作, y,z 为二类操作,那我们可以发现 x,z 成为了第一类操作;相同的,第一类操作+第一类操作=第二类操作;第二类操作+第二类操作=第二类操作
    既然有传递关系,我们就可以把问题建成一个图,然后看联通块之间的关系。具体的,我们对于一个操作,如果是一类操作边为 1 ,否则为 0 ,则两点距离 mod2 就是这两点的操作
    于是我们可以二分图染色, 1 边染不同颜色, 0 边染相同颜色,如果不能染说明出现奇环了,则可以在保证总和奇偶性不变的情况下任意的加减。而如果染成功了,那二分图左右两部分的综合分别是不变的,而且在集合内部无论怎么操作都可以实现

  • CF827D

    先把最小生成树求出来。对于非树边,要想进入最小生成树,他的边权必须比这个环上最大的边小即可;对于树边,考虑所有覆盖他的非树边的权值最小值更小即可。但怎么找呢?我们考虑线段树懒标记的思想,对于一个非树边,他就是让他和树上路径的值取一个 min ,考虑完所有非树边后更新一遍倍增,把 tagpush 下去,然后直接做即可
    这题说明倍增也是可以修改的,对于一些不具有可减性,且先修改后询问的操作,可以用倍增

  • P5590

    tip1:这道题是差分约束
    disi 表示 1i 的路径,显然 1i 的所有路径等长,说明 disy=disx+wi ,但我们不知道边权啊,因此 1wi=disydisx9 ,直接差分约束

  • P6186

    fi 表示 i 左边比他大的位置个数,没跑一次冒泡排序就会让 fi1 ,因此答案为 max(fiK,0)

  • AT_acl1_b

    题目让求 2n|k(k+1) 最小的 k ,发现 gcd(k,k+1)=1 ,因此 2na×b ,我们枚举 a,b ,于是我们让找 ax=k,by=k+1 ,一减变成 exgcd ,复杂度 O(2ω(n)logn)

  • AT_arc074_c

    考虑一个朴素的 dp :设 dpi,j,k,l 表示前 i 个数,最后一个红在 j ,绿在 k ,蓝在 l 的方案数,但我们发现 ai 这个限制没有用。我们可以设 dpi,j,k 表示前 i 个数,和 ai 不同的在 j ,和 ai,aj 都不同的在 k 方案数。复杂度 O(n3)

  • CF1442D

    朴素 dp :设 dpi,j 表示前 i 个数组删了 j 个最大答案。 dpi,j=max{dpi1,jk+sumk} ,复杂度 O(nmk)
    这题有一个关键结论:如果 k 能正好取完一个数组,那一个数组要么不取,要么全取。因为数组是不降的。我们枚举哪个数组不能全取,剩下的做背包即可。可这相当于有一个数是会被删除的,我们怎么办呢?分治即可,设分治到 [l,r] 时表示刨去这个区间中物品的答案,对于每次去左子树时把右子树加入背包,右子树同理

  • CF559C

    可达某场比赛考了这题。dp + 容斥即可。总方案数=所有方案数-过一个黑点+过两个黑点-...。把 n 个点按照 x 为第一关键字, y 为第二关键字排序。设 dpi 表示从左上角走到 i 这个黑点,带容斥系数,然后每次从左上角的节点转移过来即可
    据说有恰好经过 k 个黑点的加强版问题

posted @   FOX_konata  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示