首页 > 其他分享 >2024 11~12 月 做题记录(待更新)

2024 11~12 月 做题记录(待更新)

时间:2025-01-18 10:24:22浏览次数:1  
标签:11 3k 12 frac 复杂度 个数 2024 sum 2k

CF2047D Move Back at a Cost

要使字典序最大,每次都要找到最小的数,把它前面的数都后移.

因为可以钦定后移的顺序使得后移的数按升序排列,所以每个数最多被移位一次.

定序后开两个队列模拟即可.

CCPC2024 上海F 羁绊大师

将羁绊相同的英雄相连,因为英雄至多 \(2\) 个羁绊,所以度数不超过 \(2\).

因为度数不超过 \(2\),所以只有环和链. 先选环,然后从大到小选链.

如果恰好能选满选中环上的点,那么是最优的,接下来考虑怎么处理这个背包问题.

用 bitset 进行 dp 数组移位,时间复杂度为 \(O(\frac{n^2}{w})\),\(w\) 是字长,足够通过本题.

因为 \(\sum i = n\),所以重复的 i 可以多项式快速幂转移,并不会算复杂度,反正过了(设定阈值 k=16,重复次数小于 k 正常转移),对于每个 \(i\),设其重复了 \(k\) 次,将 \(k\) 二进制分组,拆成 \(k=2^0+2^1+\cdots+2^x+(k-2^{x+1}+1)\) 的 \(O(\log k)\) 个数,这些数恰可以表示 \(i\) 被选了 \(0\sim k\) 次,最劣情况 \(k\) 全相同,总复杂度是 \(O(\frac{n}{w}\sqrt\frac{n}{k}(\log k+1))\),\(k=1\) 时有复杂度为 \(O(\frac{n^\frac{3}{2}}{w})\).

CF2047E Adventurers

二分答案 \(k\),按 \(x\) 坐标升序枚举 \(x_0\),用大根堆加删点维护保证至少 \(k\) 个点在各自的区域即可. 复杂度 \(O(n\log^2 n)\). 离散化后把大根堆换成桶做到 \(O(n\log n)\).

CF2050G Tree Destruction

设 \(f_{u}\) 表示在 \(u\) 为根的子树中删除端点是 \(u\) 的路径能得到的最大联通块个数.

设 \(S\) 是 \(u\) 的子节点集,转移即为 \(f_u=\max\limits_{v\in S} f_v -1+|S|\).

再考虑端点的 LCA 是 \(u\) 的路径,处理 \(u\) 的子节点对应 \(f\) 的最大和次大值即可.

Ucup '3 S1 C Cherry Picking

把每个连续的 \(01\) 段看成一个联通块,枚举 \(r_i\) 删除 \(r_i\) 对应的位置,每当联通块被删完,用并查集合并联通块,维护左右端和大小即可.

Ucup '3 S1 D Dwarfs' Bedtime

首先询问 \(0\) 时刻的状态,然后找到状态不同的时刻.

考虑询问过了时间 \(x\) 后的状态不同,那么最多只要再询问 \(x-1\) 次.

所以可以在询问 \(0\) 时刻后的第 \(i\) 次询问询问过了时间 \(50-1-i\) 的时刻的状态.

Ucup '3 S1 J First Billion

因为是随机数据,讲一下 VP 场上乱搞的做法,把 \(n\) 个数等分成两个集合 \(A\) 和 \(B\),每次随机 \(A\) 中的一个数并从 \(B\) 中选一个数交换使得 \(A\) 的和与 \(10^9\) 的差的绝对值最小. 交了一发就过了,跑了 1805ms,后来测了一下大概有 \(20\%\) 的概率能跑进 2s.

考虑确定性算法,即 meet in the middle,把 \(n\) 个数分成两部分,分别计算两部分和的可能取值,可以做到 \(O(n2^{n/2})\) .

考虑 \(n\) 个数一共能凑出 \(2^n\) 种和,\(2^n\) 远大于和的上界 \(2\times10^9\).

所以可以把 \(n\) 个数并成 \(x\) 个数,在 \(O(x2^{x/2})\) 的复杂度凑出和是 \(10^9\) 的方案.

和大概可以认为是均匀分布的,所以凑不出 \(10^9\) 的概率大概为 \((1-5\times10^{-10})^{2^x}\),当 \(x = 36\) 时约等于 \(1.2\times10^{-15}\).

ICPC2022 沈阳A Absolute Difference

把两个区间分裂使得所有区间不交或者相等.

对于不交的区间前缀和处理,对于相等的区间算区间长度除以 \(3\) 的贡献即可.

需要单独考虑所有区间和为 \(0\) 时区间取到的概率.

ICPC2022 沈阳F Half Mixed

一维情况下子矩阵的个数是 \(\sum\limits_{i=1}^ni=\frac{n(n+1)}{2}\),所以有解的必要条件是 \(n(n+1)\) 是 \(4\) 的倍数.

令 \(a_i\) 表示矩阵的极大连续 \(01\) 段长度,有 \(\sum a_i=n\),Pure 子矩阵的个数为 \(\sum \frac{a_i(a_i+1)}{2}\).

要解 \(\sum a_i^2 = \frac{n(n+1)}{2}\),初始置 \(a_i\) 全为 \(1\),贪心的让 \(a_i\) 取到最大值,发现总有解.

于是二维情况复制一维情况即可.

CF1966D Missing Subsequence Sum

将 \(k-1\) 二进制分组可以构造出 \(1 \sim k-1\).

加入 \(L_0=k+1\),能够表示 \([k+1, 2k]\). 加入 \(L_1=2k+1\),能够表示 \([2k+1,4k+1]\backslash\{3k+1\}\).

于是考虑加入 \(3k+1\). 下次再加入 \(L_n=2L_{n-1}=2^{n-1}(2k+1)\) 时,本来不能表示的 \(L_n+k\) 可以用 \((L_n-(2k+1))+(3k+1)\) 表示,其中 \(L_n-(2k+1)=(2^{n-1}-1)(2k+1)\) 是可以不使用 \(3k+1\) 就能得到的,因为只有 \(L_n+k=2^n(2k+1)+k\) 会用到 \(3k+1\).

ICPC2019 徐州J Loli, Yen-Jen, and a graph problem

注意迹(trial)可以重复经过相同点.

使用增量法:假设已经构造好了 \(n=k\) 的情形,考虑 \(n+2\) 的情形怎么构造.

也就是往 \(n\) 的完全图里加两个点,得到长度为 \(n\) 和 \(n+1\) 的迹.

K10.jpg

CF2048D Kevin and Competition Memories

记 Kevin 的 rating 为 \(x\) 如果能全选难度 \(\leq x\) 的题目就全选.

否则排名只取决于最简单的题目,选完难度 \(\leq x\) 的题目尽可能选大的题目即可.

所以可以把难度 \(\leq x\) 的题目难度设成 \(+\infin\), 双指针计算 Kevin 的排名.

CF2048E Kevin and Bipartite Graph

\(n\) 种颜色对应 \(n\) 个森林,一个森林最多有 \(|V|-1=2n+m-1\) 条边.

最多染 \(n(2n+m-1) \geq 2nm\) 条边,所以 \(m\leq 2n-1\).

构造考虑右边每个点每种颜色连 \(2\) 条边,左边 \(2n-2\) 个点被连 \(2\) 次,首尾两个点被连 \(1\) 次.

CF2048F Kevin and Math Class

按 \(b_i\) 从大到小构建并查集,如果左右的并查集已经构建好就进行合并,维护 \(dp_{i,j}\) 表示在 \(i\) 的并查集中 \(j\) 次除法得到最小最大值.

再维护 \(g_{i,j}\) 表示在 \(i\) 的并查集中不使用最小 \(b_i\) 进行 \(j\) 次除法得到的最小最大值.

然后就可以合并了,先计算不使用最小 \(b_i\) 对应的 \(ndp,ng\),再用最小 \(b_i\) 做除法转移. 一次复杂度 \(O(\log^2a_i)\).

实际上相当于在笛卡尔树中先计算左右子树再用根节点转移,这样比较自然,且不用辅助数组.

标签:11,3k,12,frac,复杂度,个数,2024,sum,2k
From: https://www.cnblogs.com/Lcyanstars/p/18678081

相关文章

  • 【2024年华为OD机试】 (A卷,200分)- 硬件产品销售方案(Java & JS & Python&C/C++)
    一、问题描述题目描述某公司目前推出了AI开发者套件,AI加速卡,AI加速模块,AI服务器,智能边缘多种硬件产品,每种产品包含若干个型号。现某合作厂商要采购金额为amount元的硬件产品搭建自己的AI基座。例如当前库存有N种产品,每种产品的库存量充足,给定每种产品的价格,记为price(不......
  • 【2024年华为OD机试】 (B卷,100分)- 流水线(Java & JS & Python&C/C++)
    一、问题描述题目描述一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。现给定流水线个数m,需要完成的作业数n,每个作业的处理时间分别为t1,t2,...,tn。请你编程计算处理完所有作业的耗时为多......
  • 华为2024嵌入式研发面试题
    01你认为最好的排序算法是什么?在实际的编程中,最好的排序算法要根据实际需求和数据规模来选择,因为每种排序算法都有其优势和劣势。以下是一些常见排序算法及其优缺点:冒泡排序冒泡排序是一种简单直观的排序算法,它的时间复杂度是O(n^2)。虽然它的时间复杂度比较高,但它的实现方......
  • 【搜索】洛谷P1123 取数游戏
    P1123取数游戏搜索顺序:按格子枚举。思想类比AcWing843.n-皇后问题按格子枚举方法,以及AcWing1116.马走日AcWing1117.单词接龙AcWing1118.分成互质组,体会恢复现场写在for循环内部与写在for循环外部的区别。最大的区别:恢复现场写在for循环外可以不用清空标记数组。......
  • 2024/1 期末考試游記
    day0&day1&day2&day3前面忘了中間忘了後面忘了。day4對了下化學貌似ak了先不噴。數學秒掉了最後兩個大題非常激動,考完去找同學對答案然後獲得了挂掉選擇T3T5和填空T-1的好成績。\(-15\)預定,爆炸了。物理秒掉了所有題,回來一對,T-2算錯了(可能是,至今不知道......
  • pkuwc2024 游记
    由于去不了noiwc所以只有这个了。Day1试机后直接开赛感觉不好。发现试机题有一道交互。看来今年有交互。入场看t2,2分钟会了根号做法并相信可以通过。花了1h写加调获得了58pts。然后先想t1。一边猜结论一边玩样例。小样例玩错了导致过不了。中间去卡了一会t2。并没有卵用。......
  • [20250117]记录下21c下使用gdb跟踪逻辑读遇到的问题.txt
    [20250117]记录下21c下使用gdb跟踪逻辑读遇到的问题.txt--//在21c下使用gdb跟踪逻辑读遇到的问题,困扰好几天,做一个记录。--//首先我以前写过1个gdb脚本跟踪逻辑读在11g下,使用遇到一些问题,发现21c下没有使用kteinpscan,kdifxs函数。--//我先注解这部分内容,测试看看。1.环境:SCOTT@boo......
  • 2024春秋杯冬季赛day1writeup_cyi
    ......
  • 关于函数(20250117)
    补充递归调用的补充:无限制的递归调用不会产生死循环,而是在栈区空间中,被调函数“入栈(保护现场)”产生的返回值地址占满整个栈区空间,程序直接崩溃。数组作为参数传递,传递的是数组的首元素地址。字符串数组的末尾存在‘\0’,因此字符串数组作为函数参数时,不需要元素个数作为函数参......
  • springboot高校学生饮食推荐系统(11175)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发......