Educational Codeforces Round 54 [Rated for Div. 2]

第一次在宿舍打CF
把同宿舍的妹子吵得不行。。。
特此抱歉QAQ

A

题意:给定一个字符串, 最多删掉一个字符,使得剩余字符串字典序最小
当然“最多”是假的 删了肯定比不删小
所以找到字符串里第一个字符i 满足str[i] > str[i + 1] 然后删掉str[i]显然就是最优的了
要是单调的的话 就把最后一个删了

B

题意:给定一个数n,对n做如下操作
1.如果n = 0 结束操作
2.找到n的最小质因数
3.将n减去它的最小质因数,继续操作1
现在给出n,求n会经历多少轮操作

如果n是1或奇数 那么一步到位
如果n是偶数 那么一直减二就好了
如果还不是的话 那么它是奇数 它的最小质因数一定也是奇数
那么 她减去这个质因数之后就是偶数了

C

题意:T组数据 每组给一个d
求两个实数a b使得a+b==d&&a*b==d
如果有解 输出Yes a b
如果无解 输出No

二分答案。
很明显 对于a +b== d
a b的差的绝对值越小 a * b越大
l = 0, r = d / 2;
首先判定 若rr < d那么无解
每次判定 mid
(d - mid)
若大于d 那么r = mid
反之 l = mid
最后答案就是 l, d - l

D

题意:一张无向简单连通图 n个点m条边
及每个点i到1的最短距离是dis[i]
最多能保留k条边
输出保留的边数 使得剩下的点中 到一最短距离不变的点数最多

当然 保留边数一定是k
裸的最小生成树么。。。
prim造最小生成树 每加入一条边 连通一个点到1的最短路
当然这个点要记录最后把它连进来的那条边编号
所以最多有k + 1个点dis[]不变(包括1)
优先队列优化一下 类似dijkstra

E

题意:一棵树n个点 每个点初始权值为一
有m个操作 每次给定的v d x
在x的子树中 与x深度差小于等于d的点 每个点加上v
操作完成后
输出每个点的权值

这道题蒟蒻每个深度开一个set 用dfn序差分
然后最后再来个差分。。。
十分乱搞
有人说是树上主席树

猜你喜欢

转载自www.cnblogs.com/hjmmm/p/9950046.html