这个题目的做法还是比较难想的,首先考虑在根结束的情况,
那么每条边两个方向经过次数一样,
同时,只在每条边至少经过一次的条件下,
只要满足H的限制,那么这个必有可行的方案(欧拉路)。
由于题目中说了H>=度数,不难证明最优解一定用了所有边。
那么就可以代数化了。
代数化之后,不难发现可以网络流建模。
网络流->最小割->树的最小权覆盖->dp。
假设不在根结束,那么最后令他最后再走回根,也就是将到根的路径上除了根的点的H+1
这个可以用dp求出。
代码:
https://ideone.com/qzTp2
这题算是比较水的了吧。。
[Ctsc2010]性能优化:
首先可以想到一个用DFT的做法。。但是那样会有精度问题。。。
通过用mod n+1的原根代替单位根。。可以解决这个问题。。
代码:
https://ideone.com/mjOj1
首先费用流做法是这样的,对每个需求连一条边到它被解决的那天(可以是之前,代价是保存费用,可以是之后,代价是用户损失费)
那么考虑费用流算法。。注意到这个的增广路是满足“区间合并”性质的
费用流每次取费用最小的增广路。。用线段树维护费用流~~
最多增广O(N)次
但是这个方法非常的麻烦。而且nzk说不可过。
所以就没写了。。。
[Ctsc2010]珠宝商:
//待写~~
代码:
https://ideone.com/rHbcO
ORZ 丽洁神犇虐爆CTSC!!!
陈立杰觉得每题的做法都很明显,太强了
回复oimaster:我说比较明显的都是乱搞的解法啊。。正解全都想不到>_<。。。。
回复WJBZBMR:你别装了,大家都看着呢……我也知道地球上的中国国家队选拔赛对于你这位银河队选手来说无难度
回复oimaster:
为啥你这么强。
此等少年。。。。 Orz啊
OTTZZZ……
你居然把jewelry这题AC了!!!太强了!!!!!!!!!!1
神犇神马时候再办比赛?
回复ws1192:。。。。如果二试过了就办。。否则就去文化课了。。。
回复WJBZBMR:OTZ如果我过了省选,就去垫底爆0膜拜……
请教下,[Ctsc2010]性能优化怎么处理循环相加的问题?这里乘法的定义是C[(i+j) mod n] <- A[i]*B[j],而不是正常的C[i+j] <- A[i]*B[j]
fft不就是循环卷积么