#2 2023.10.14

用 .xlsx 来记真是太傻逼了。换个 .md 来记。

256. xsy5244 数数 (calc)

打个表嬴麻了。

257. xsy5255 树树(tree)

长剖推推推,差分一下过了。

258. xsy5256 数树(graph)

按照值域分块,每个块记最前最后两个点。过了。

259. pjudge21792 【NOIP Round #6】抉择

不会做。考虑乱搞!

fi,v 表示前 i 个数,最后一个选的数是 v 的权值。记 mx=max(fi,v),发现对于 fi,v+vmxv 其实可以直接扔掉。写了这个玩意,跑得飞快。

然后 fst 了(草)。发现是忘记判 v&ai=0 的转移了。无能狂怒。

260. pjudge21793 【NOIP Round #6】重生

每个任务拆成两种思考。当场二分答案。然后发现是贪心地思考能思考的东西里权值最大的。

261. pjudge21794 【NOIP Round #6】遍历

圆方树板子题。

262. pjudge21795 【NOIP Round #6】排序

考虑如何 sort 一个 01 序列。先把相邻的同色块合并。注意到一次操作之后倒过来看,相当于区间 reverse。0101010101 这个东西,按照 2|1|2|1|2|1... 分段,所以 01|0|10|1|01|0|1 -> 1000111001,每次连续段会除以 3。做完了。

263. arc167c MST on Line++

不会做!身败名裂。

考虑计算 ai+1ai 的贡献,就是选 i 个 0,然后对于每个 0 之间的空位,长度 k 的话贡献减一。那就枚举 (l,r),声称 l,r 是 0,这一对的贡献就是 (n(rl+1)i2)

264. arc167d Good Permutation

从小往大扫。考虑第 i 个,找到最小的和它不在同一个环的点 j。如果 j<pi,就 swp(i,ipj)。否则如果第 i 个所在的环有且仅有 {1,..,i},也要 swp(i,ipj)

265. arc167e One Square in a Triangle

神仙构造。首先几个小的 S 不合法判掉(?。

考虑 S 是偶数的情况,取个以 S2 为底的三角形,这是容易的。

考虑 S 是奇数的情况。令 S=2x+1。 则构造 (1,s1),(0,0),(3,4x),这个三角形。考虑合法的正方形 (a,a+1)×(b,b+1)a=1 显然无解。a=0 有个 (0,0)。注意到 (1,32) 在三角形的边上,所以 a=1/2 也无解。

266. lg9746 「KDOI-06-S」合并序列

fl,r 表示 [l,r] 这个区间能不能缩成一个点。

fl,rfl,p1fu,vfp2,r[s(l,p1) XOR s(u,v) XOR s(p2,r)==0]

gr,v 表示最大的 l,使得存在 rrfl,r=1,s(l,r)=v

对于固定的 r,枚举 l,p1。发现这相当于要找看 [p1+1,r] 里能不能找到 u,v,p2。那记个 hv 表示最大的 u。每次算完 fl,r 之后顺便更新一下即可。

267. cf1868d Flower-like Pseudotree

想题的时候神志不清,当场暴毙。。

首先特判掉一些平凡的情况。比如是不是一个大环之类的。

扔掉所有叶子,然后假装环的长度是 2,把 deg 最大的两个点当作环点,变成两条链。发现如果链长度相等就做完了。链长度不相等考虑把多出来的那个点扔上去。发现扔不上去只有 O(1) 种情况。大力分讨就行了。

268.cf1864g Magic Square

考虑如果有两行移动了且移动距离相等,并且有一列移动了,则一定不合法。交换行列同理。

对于每一行,如果有数操作完行不变,这一行的移动距离只能是列的变化量。如果没有数操作完行不变,说明每一列都移动了,和上面矛盾。

那就对于当前局面,发现会有若干个合法的行或列,并且行和列只能存在一种。同时有就非法了。那就把答案乘上 cnt!。合法行的定义是转完之后,每个元素的列到了目标位置。行和列只能存在一种的证明是容易的,考虑交点即可。

269. xsy5247 树数(greedy)

鉴定完毕,不太想写。

考虑操作 2 怎么做。

假装 ux 子树里面。记 fu 表示 uu 的所有轻子树里到 u 的最小距离。枚举 u 这条重链上的每个点 v,往里的答案就是 min(fv+dis(u,v))=dis(u,topu)+min(fv+dis(v,topv))。所以记 gu=fu+dis(u,topu),维护 g 即可。往外的答案可以通过维护 hu=fudis(u,topu) 计算。维护 h 即可。

u 在外面的是容易的。发现操作 3 跟上面的讨论没啥区别。不管了。

考虑 rev(1,u)。每条重链 rev 的是重链的一个前缀。非常好维护啊.jpeg。然后有 O(log)f 需要处理,非常好维护啊.jpeg。

270. cf1731f Function Sum

非常傻逼的一个题。直接枚举每个点,权值,左右两边的信息。是个多项式,随便插插就搞定了。

271. cf623d Birthday

有点意思。

f(t) 是第 t 时刻依然存活的概率。答案就是 i+f(i)

注意到 f(t)=1i(1(1pi)ci),其中 ci 是这个人被抓的次数。发现每次选最优的人抓必然不劣。暴力模拟 106 轮即可。

272. cf923d Perpetual Subtraction

把式子写出来,发现是线性变换的形式,大概是要把一个上三角矩阵对角化。上三角矩阵的特征值就等于对角线上的值。所以特征向量可以直接 AvλIv=0 大力求出来。然后你发现 A=BCB1BB1 都非常好看,就做完了(?。

273. cf1427g One Billion Shades of Grey

感觉比较牛逼。

第一个思路是假装这东西是 p=1 的保序回归!所以还是可以整体二分。至于向 [a,b] 取整的证明,感觉不是很会证,也懒得看题解了,假装它是对的!

第二个思路是假装上面向 [a,b] 取整是对的。假装它是 01 序列,每个值都 01 一下就做完了。发现 O(n)dinic 的图都差不多,所以可以暴力退流降一下复杂度。

274. 浅谈保序回归问题 高睿泉

我来写个阉割版的学习过程!

前面的若干东西咕了。

保序回归的定义:有一个 DAG(*),uv 表示 fufv。对每个点有 (yi,wi)要求最小化 i=1nwi|fiyi|p,其中 p[1,+)

*:我也不太确定是不是一定要 DAG。感觉有些情况下不是 DAG 也能做(?)。有无懂哥指导一下。

p=1

称数列向 [a,b] 取整,即小于 a 的变成 a,大于 b 的变成 b。记 posp(S) 为满足 iSwi|yik|p 最小时的 k 的取值。在 p=1 的情况下,posp(S) 是一个区间。在 p>1 的情况下,posp(S) 是一个点。

引理:我们声称,对于一个区间 [a,b],如果不存在集合 S 使 posp(S)[a,b],且存在原问题的答案序列 fi 满足均不在 (a,b) 内,则 fi[a,b] 取整后等于令 fi[a,b] 的答案。证明可以使用若干调整和反证法!我不会证!我感性理解。

然后注意到,p=1 时,(i,i+1) 总是满足上述条件。就可以快乐二分了!

p>1

注意到,上述引理是成立的。但是要找个合适的区间。因为 posp(S) 构成的数集是稀疏的,可以取常见的区间 (mid,mid+ϵ)。此时分别计算 fi=mid 的权值和 fi=mid+ϵ 的权值。同除 ϵ 之后发现就是原函数在 mid 处的导数。至于 fifj 的条件可以看作 imidjmid,可以最小权闭合子图实现。这样可以求得原问题的 实数 解。

p>1 的整数解

假装我们现在正在进行 solve(l,r,vec)

rl>1 的时候,我们可以用上述算法递归 solve(l,mid,low)solve(mid,r,high)

rl=0 是容易的。

rl=1 时,不能使用上述算法!但是此时只有两种取值,所以也可以做一个最小权闭合子图,这样就做完了。

p=

要求最小化 maxi=1n(wi|yifi|),同样有 f 的偏序关系。

可以当场二分答案,然后做个 DAGdp,是 O(mlogv) 的。

后面的部分咕了。

275. loj #3301. 「联合省选 2020 A」魔法商店

我草来活了。

看一眼,发现价格最低的限制相当于以 a 做基,然后对于 vi=vap1 xor... xor vapk,连边 pji。价格最高同理。

那就是裸的 p=2 的保序回归。

276. cf1615h Reindeer Games

尼玛,这位更是重量级。

277. cf1854e Game Bundles

没猜错的话,大概是随若干个值很小的,和等于 30 的数。前面大力做背包。然后后面放 > 30 的数。

猜对了。

278. pjudge21739 【NOIP Round #5】青鱼和序列

把整个序列看作 01 序列,0 代表正的 a1,..,an,1 代表反的。

发现要么全是 0,要么 0 和 1 数量相等。直接算就行了。

279. pjudge21740 【NOIP Round #5】青鱼和怪兽

大概暴力转移会成环。那就二分答案,设 dpn,m=x,看最后自己能不能更新自己。

280. pjudge21741 【NOIP Round #5】青鱼和区间

草怎么没做出来。

设覆盖 i 的集合是 Si,问题转化成不能有 Si=Sj

考虑第一个没被选进区间的 ,找到一个最右的 j 满足 Sj=Si,把 [i,j] 看作一个子区间。假装这样可以搞出 t 个区间,贡献就是内部瞎选乘上 dpt

背包即可。

281. cf1838f Stuck Conveyor

假装我们已经找到了问题点的方向,那就可以很简单地 logn+1 次操作找出它的位置。

O(1) 次询问找到方向是容易的。可能会有点 corner case,不管了。

282. cf1781g Diverse Coloring

不会做呜呜呜呜呜呜呜呜。

声称除了四个点的菊花图,其余所有树的答案都是 nmod2

考虑构造。链和点数 3 是容易的。否则以某个三度点为根,记 du 表示 u 子树内,另外一种颜色减去 u 的颜色的个数。对于不是根的点,容易做到 du[1,2]

接下来暴力合并 drt,枚举 drt[4,5] 的每个可能的儿子的状态,发现把 drt 卡进 [1,1] 是相对容易的。其中有一种情况需要反转一条链。不过不重要!那就做完了。

283. pjudge21622 【ExPR #1】守卫 2

可以看出,每个点的答案,就是以它为根,进行某种直链剖分,最后前 k 长的链距离和。所以一个点的最优解是它的长链剖分。

考虑以直径的两端分别 dfs,最后答案取 max。钦定 u 有一条链通向 rt。考虑 uv 的变化,按照 v 是否是 u 的长儿子讨论,只会加入/删除 O(1) 条链,所以做完了。

题解看起来只用 dfs 一次,看起来和我差不多,但不钦点 urt 的链。换根的时候讨论一下就行。

284. pjudge21620 【ExPR #1】下降

草怎么还是不会。

考虑描述下降的过程。发现是从后往前扫,记录一个 vis 数组。扫到 x 的时候,找到 x 的第一个 visx=0 的位置 y,那么这个位置最终就会是 y。如果 y1,就把 visy 复制成 1

考虑如何 dp。设 fi,j 表示当前从后往前扫完 ivis 数组最底下的连续段长度恰好是 j 的方案数。假装我们不区分每个数的第一次和第二次出现。设 i 前面有 rem 个非 0,out 个 0。

扫到一个 0 的时候,fi,j(jout)fi+1,j。因为不区分第一次和第二次出现,所以最后一段共有 j 个空位,然后前面有 out 个数已经填了。

扫到一个 1 的时候,考虑这个数是否会让 j 变化。如果不变,就是随便扔到上面去,fi,jfi+1,j。否则枚举 nj=j+1+kfi,nj(remjk)coefk(k+2)fi+1,jcoefi 是选 i 个数,恰好填满 i 个连续的格子的方案数。

285. pjudge21614 【PR #1】守卫

怎么又不会。自闭了。

只有最小生成树上的边有用。从大到小尝试删边,合法性用 flow 判断。然后就对了。困了不想写了。

286. cf1034d Intervals of Intervals

绷。二分,考虑求出 mid 的线段数。考虑用 set 维护线段。扫描线,一个线段 i 覆盖旧的线段 j,意味着 [j+1,i] 的贡献 += 线段长度。然后双指针即可。

287. cf1845e Boxes and Balls

傻逼题。0 看作 -1。发现前缀和的差至多是根号。暴力 dp 即可。

288. cf870f Paths

发现有且仅有 1 和 >n2 的质数不能被到达。

一步到达的大概是 iφ(i)

两步能到达的是 x=pxpqqy=y。枚举 pq 计算即可。

三步一定能到达,因为 x=px2p2qqy=y

代码懒得写了。

289. cf1083f The Fair Nut and Amusing Xor

什么答辩题。考虑令 ci=ai XOR bi,di=ci XOR ci+1。发现一次操作就是 didi+k 同时异或 c。那就模 k 分段,相当于问有多少个点的前缀 XOR 是 0。值域很小,分块瞎搞搞就做完了。

posted @   ZSH_ZSH  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示