2022.7.19 做题记录

7.20 发现昨天记录忘发了,补上


今天出去办了一堆事啊(比如给新手机办手机卡!!),回家已经挺晚了,随几个萌萌题做两下

CF609E MST for each Edge Present 5

你有一个 nm 边的无向图,第 i 条边 (ui,vi) 有边权 wi

对于每条边 i,你需要求出来:包含第 i 条边的生成树的树上边权之和最小是多少。

1n,m2×105

原题目名称叫 Minimum spanning tree for each edge,实在有点长,这里简化了一下=_=

考虑先随便求一个最小生成树,然后加入一条非树边 (u,v) 时,相当于要在树上 uv 路径上选一条边删掉,再加入当前的边 (u,v)

那么显然我们应该选边权最大的边,问题就转化为链上边权 max,这个问题有一万种做法。于是就做完了。

AC Code

CF1706D Chopping Carrots Present 7.0

给定正整数 n,k,对于一个序列 p,满足 1pik,我们称其「代价」为

max1in(aipi)min1in(aipi)

你需要求出代价最小的序列的代价是多少。1n,k105,1ai105

由数论分块的常见结论我们知道每个 ai 只会变成最多 O(ai) 种数。

因此把这些数都找出来,类似2021 联合省选 D1T1 卡牌游戏的做法,在值域上做个双指针就行了。

时间复杂度 O(nai),空间复杂度容易优化到 O(n)。我偷懒没写空间 O(n) 的做法((

详细看代码:AC Code

场上因为多测没请干净 wa 了,到最后也没调出来。。。垃圾多测

CF510D Fox And Jumping Future 7.5

n 种技能,和一个无限长的纸带。

你可以花 ci 的代价学习第 i 种技能,学习后就可以随时向左或向右跳 li 格(不限次数)。

问你至少要花多少代价才能到达所有地方,无解输出 1

1n300,1li109,1ci105

Bezout 定理我们知道相当于要选出来若干个数使得它们的 ligcd=1

考虑跑一个类似最短路的东西,每次用 ci+F(x) 更新 F(gcd(x,li)),不断进行松弛,F(1) 就是最终的答案。

粗略分析一下,能到达一个点 x 当且仅当 x 是某个 li 的约数,因此总点数大概是 O(nV)

实际上大部分情况下 d(x)x3,我们可以直接把点数看做 105。由于 ci 均为正,可以使用 dijkstra

复杂度看上去挺对的,反正能过(

AC Code <- 昨天晚上写挂了,调不出来睡了,第二天起来一下子就发现错了2333

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