hihoCoder挑战赛23

hihoCoder挑战赛23

A.Emulator

题意

  • 给一张图,有\(N(N \le 300)\)个点, 给出任意两点之间的最短路。
  • 求最多可以去掉多少条边,使得任意两点的最短路长度不变。

思路

  • 若一条边\((i,j)\)可以去掉,那么必然存在路径\(d(i, k) + d(k, j) = d(i, j)\)

代码


B.Certificate

题意

  • 已知有\(N(N \le 14)\)个变量,变量取值\(0\)\(1\)
  • 已知\(f(0,0,\cdots,0),\cdots,f(1, 1,\cdots,1)\)的函数值。
  • 对于每种输入\(x=(x_0,x_1,\cdots,x_n)\),求最少需要知道几个变量的值即可确定函数值。
  • 举个例子:假设有两个变量,函数\(f(a,b)=a \verb'&' b\),那么对于\(f(x)=0\),我们只要知道其中一个变量为0即可确定函数值为0,否则我们需要知道两个变量是否都为1,才能确定函数值为1。

思路

  • \(2^n\)枚举每个取或不取,在要取的变量所有取值中判断是否只会取到唯一值,即不同时取到0和1,这样说明对应的取值是可以判定函数值的,时间复杂度\(O(4^n)\),约为\(2 \times 10^8\),结合单点3000ms应该是可以过的。
  • 显然官方题解肯定不是这么做的。
  • 对于每个变量,显然只有3种状态,取0、取1或不取。这样做的复杂度为\(O(n \times 3^n)\)

代码


C.Little Y's Tree

题意

  • 给一棵树,有\(N(N \le 10^5)\)个点。
  • \(Q(Q \le 10^5)\)次操作,每次删掉\(k\)条边,求\(k+1\)个连通块的最远点对的距离和,保证\(\sum{k} \le 10^5\)

思路

  • 一个前提:是要会线段树维护子树的最远点对。
  • 删除一条边,相当于把子树的dfs序挖掉了一些区间,在剩余区间中求最远点对即可。

代码

转载于:https://www.cnblogs.com/mcginn/p/5910846.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值