首页 > 其他分享 >2024.01.25 近期练习

2024.01.25 近期练习

时间:2024-01-26 22:00:29浏览次数:32  
标签:25 背包 2024.01 复杂度 练习 sqrt 那么 考虑 回文

CF1856E2

如果 \(n\le 5000\) 考虑怎么做。
首先我们对于每个节点只考虑大小关系,最后只需要从小到大标号即可。
我们考虑把答案放到 LCA 处统计。
若其只有两个儿子 \(v_1,v_2\),那最多只有 \(siz_{v_1}\times siz_{v_2}\) 个会被统计,即令 \(v_1\) 所有数大于 \(v_2\)。
若有多个儿子,就是把儿子子树的大小分成两个集合,使得两个集合差最小。
可以用 01 背包解决。然而 \(O(n^2)\)。考虑 \(n\le 1e6\),如何优化 01 背包?
可能有关 bitset。注意到背包所有元素的和是 \(O(n)\)。所以不同大小的个数是 \(\sqrt n\) 的。
不妨二进制拆分做 01 背包,复杂度是 \(O(\frac{1}{\omega}n\sqrt n \log n)\)。
此外,如果有一个儿子大小超过一半,是不用做背包的,这保证了复杂度。
所以树的 \(siz\) 是分一半最优,总复杂度可以用主定理计算。
实现的话,需要使用动态大小的 bitset,
可以手写 bitset,或提前开好所有 \(2^k\) 大小的,用的时候用一个最合适的。
这种问题有关排列,应考虑相对顺序。再转化为背包,应想到 bitset,再观察背包的性质。

CF1764F

连接 \((i,j)\),就意味着把 \(i\to j\) 的路径作为环。\(f_{i,j}\) 就是其他点到这个环的距离和。
可以求出每个点的一条出边,也就是若 \(j\) 是 \(f(i,j)\) 除了 \(i\) 以外最大的,那么存在 \((i,j)\)。
注意到若 \((X,Y)\) 包含 \((x,y)\) 路径,那么 \(f_{X,Y}<f_{x,y}\)。
显然,若环的大小越大,那么每个到这个环的距离和就越小。
所以我们可以断言原树的形态是以 \(f(i,j)\) 为边权的最大生成树。
当树的结构被确定后,那么边权也很容易。
钦定 \(1\) 是根,\(w_{i,j}=\dfrac{f(i,i)-f(i,j)}{siz_j}\)。
这种问题要联想到生成树。

CF1827C

关于回文先想到使用 Manacher 算法。
我们借助 CSP2023T2 的算法,设 \(f_i\) 表示以 \(i\) 开头的回文串数量。
\(f_i=1+f_j\),\(j\) 是 \(i\) 右边第一个满足 \([i,j]\) 回文的位置。
问题转化为求右边第一个回文的位置,即求每个位置右边第一个包括它的回文中心。
考虑从左向右扫描,然后每扫到一个回文重心,就更新前面的。
也就是区间取 \(\min\),想到可以用吉司机线段树。
然而是不必要的,考虑并查集优化,并查集维护 \(r_i\) 表示右边第一个还未更新的。
那么直接暴力即可,因为每个点只会被第一次更新。
由于只有一次被更新,所以复杂度是 \(O(n)\) 的。
这种问题需考虑 DP,以及并查集优化。

CF1887D

我们发现正面去处理这个问题是很难的。
转化题意,由于有 \(\min\) 也有 \(\max\),枚举其中一个 \(\max\)。
考虑枚举切割点 \(a_i\),使得 \(a_i\) 是左边部分的最大值,且右边都大于 \(a_i\)。
设 \(a_x\) 是左边第一个大于 \(a_i\) 的,那么 \(x<l\le i\)。
设 \(a_y\) 是右边第一个大于 \(a_i\) 的,\(a_z\) 是 \(y\) 后第一个小于 \(a_i\) 的,那么 \(y\le r< z\)。
那么这个问题就很容易地转化为了矩阵加法,可以直接扫描线解决。
那么查询就是单点查询罢了。
这种问题就是需要反方向考虑,之后就是扫描线模型了。

CF1508D

经典套路,把 \(i\) 向 \(a_i\) 连边,形成若干的置换环。
注意到我们对于一个环,可以令其变成一个菊花,即不断地对一个点操作消去出边。
如果只有一个环,那么问题轻松解决。
如果有多个环呢,交换其中两个环中的一对就可以变成一个环。
把剩下的点进行极角排序,然后相邻的两个点进行操作:
如果两个点所在的环还没有并在一起就交换这两个点,用并查集维护。
发现这样是不可能与菊花相交,因为这些边都在菊花相邻边之间。
最后再做一遍开头那个算法即可。
这种问题首先应处理排列,关于相交的问题可以用极角排序。

CF1491H

如果没有修改,我们可以借助“弹飞绵阳”的套路,分块,维护跳出这个块到哪。
先考虑查询的话,我们可以像类似树剖那样向上跳,复杂度是 \(O(\sqrt n)\) 的。
修改怎么办?对于散块来讲直接暴力重构。
整块怎么办?由于修改只有 \(-x\),如果 \(x\) 之和超过块长,那么所有元素一跳就出块了。
所以整块也暴力修改。注意到一个块只会被修改 \(\sqrt n\) 次,复杂度是 \(O({\sqrt n})^3=n^{1.5}\)。
当一个块超过 \(\sqrt n\) 修改时,直接打个标记即可。
这种大数据结构应考虑分块思想,以及考虑势能分析。

标签:25,背包,2024.01,复杂度,练习,sqrt,那么,考虑,回文
From: https://www.cnblogs.com/Simon-Gao/p/17990827

相关文章

  • 1.25
    今天实现前端职员的功能页面1insert.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>申请出差</title><linkrel="stylesheet"href="../Style.css"></h......
  • 每日一练 | 华为认证真题练习Day172
    1、关于OSPF的ASBR-SUMMARY-LSA中LSA头部他、信息描述错误的是A.LINKSTATEID表示ASBR的ROUTERIDB.ADVERTISINGROUTER表示该ABR的ROUTERIDC.ADVERTISINGROUTER字段永远不会改变D.METRIC表示该ABR到达ASBR的OSPF开销2、关于OSPF外部路由种类描述错误的是A.OSPF分为第一类......
  • STM32CubeMX教程25 PWR 电源管理 - 睡眠、停止和待机模式
    1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)STM32CubeMX软件(Version6.10.0)野火DAP仿真器keilµVision5IDE(MDK-Arm)ST-LINK/V2驱动XCOMV2.6串口助手2、实验目标使用STM32CubeMX软件配置STM32F407开发板的PWR电源管理,并了解STM32的睡眠、停止和待机模式3、实验......
  • [Bzoj 3252] 攻略 题解
    攻略题面\(n(\le2\cdot10^5)\)个点的有根树,\(k(\len)\)次从根走到叶子,每个点有权值,求经过的点的权值和的最大值.(同一个点只能算一次)Sol1我们设想一个叶子一个叶子加进去的过程。如果有两个从某个点到叶子的路径,我们可以如图把他分成两条路径。那么他满足贪心,也就是每次......
  • Programming Abstractions in C阅读笔记:p254-p257
    《ProgrammingAbstractionsinC》学习第70天,p254-p257总结,总计4页。一、技术总结1.minimaxstrategy(极小化极大算法)p255,Thisidea--findingthepositionthatleavesyouropponentwiththeworstpossiblebestmove--iscalledtheminimaxstrategybecausethegoa......
  • 1.25 两道结论题的解法与思考
    背景1:今天确实没啥好活可以整。背景2:今天确实被两道结论题整破防了。背景3:拒绝偷跑!卑力下降!背景4:当学校寒假的学科答疑和做题冲突的时候,果断选择做题!背景5:背景怎么成碎碎念了。背景6:原来是吐槽役。1.ARC094FNormalization给定\(\Sigma=\{a,b,c\}\)的串,每次可以......
  • 闲话1.25
    我想放假啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊写一天题,越来越难受了,想回家。周日还有模拟赛,没法打CF然后好好睡觉,妈的我想放假我想回家。我他妈想回家妈的。......
  • 2024/1/25学习进度笔记
    平方误差代价函数线性回归有一个训练集,我们选择了线性回归,那么要如何选择合适的参量使得我们的预测更为准确呢??我们知道了现有的数据是准确的,那么预测就要以现有的数据为根基,尽量的贴合现有的数据,使得差距最小,怎么衡量这个差距呢???我们把  平均平方和误差为了方便,我们又......
  • 240125 杂题选谈
    PKUSC2022Mahjonghttp://222.180.160.110:1024/contest/4813/problem/1https://www.bilibili.com/video/BV1JB4y1R7AP/这里是PKUSC当时的讲解视频。听说可以证明本题一定有\(\le5\)的解。好神奇。就比如说我们爆搜,\(9^4\times13^4\)这个显然干不动对吧,所以我们考虑......
  • 每日一题 2024-1-25
    1.题目(1278)原题链接给你一个下标从0开始的整数数组\(nums\)和一个整数\(k\)。请你用整数形式返回\(nums\)中的特定元素之和,这些特定元素满足:其对应下标的二进制表示中恰存在\(k\)个置位。整数的二进制表示中的1就是这个整数的置位。例如,\(21\)的二进制表示为......