题目链接【数据太水了,的确是水,换个平台吧】
这个平台的数据要多的多……被Hack了,我再改(题意有差!!!还是没被Hack掉)
这道题坦白的说,有在猜测的成分,然后猜出来的过程…… RP爆发!
真的,基本上不是想出来,而是猜了可能性,然后再去特判一下就过了,挺神奇的不是吗?
一开始用LIS(dp[])去先得到最长不下降子序列的长度,然后我们以它为基础去接下去判断(2)、(3)问的答案。
第(2)问的要求是问可以取出几个?那么就是说把这N长的分成几个来取,问最多几个,就是不能重的前提,那么就是由之前dp长度为1的点连上源点并且流为1,然后从它出发,我们去接下去去连上所有可以链接的边,判断的条件有(dp[i] == dp[j] + 1 && w[i] ≥ w[j])即可往下连边,当然,边的流都只能为1。然后接下去,就是用谁去链接汇点,就是那些dp值为最长LIS的,连上汇点即可。
第(3)问,这个的确是有猜想的成分,我猜了把所有链接源点、汇点的点的流都更新为INF,然后再去跑,这样就是从不同的开始,然后再去建边…… 感觉可以被Hack掉。所以这段就自己去看代码吧,可能是题数据太水了。
这个是可以被Hack的代码,但就是能过洛谷的测评机!
等我改出来,下面换上新的。
根本不是一道题题意不一样,怪不得被卡掉了!
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include