camp day3

D题。题意:给出n个数的序列,n~2000,每一个数都有一个权值,w,wi + wj 》d的话,i和j有一条边。 题目中会给出d的值~1e9. 问将这些分红两个集合,使得这两个集合之间的边最多,问最多的条数,和最多条数时候的方案数。
题解:咱们先只算最多的条数。关键是理解d的限制建造出的边的使用方法。咱们看 ,将w升序排序,那么前面的会有一些和n点没有建边的,能够丢掉,而后有一些只和n建边的,以后重点来了,咱们缩小规模,n点最后考虑,而后只考虑j1到n-1的子问题,而后将n点放到分好的两个集合中的一个,以后把j到j1的放到和n点放的不一样的集合里面。因此咱们dp的时候还要多记录一个集合中的个数为x,也就是f【i】【x】,而后转移的时候有O(1)的转移。 考虑方案数的时候就是合并的时候多注意下就好。
E题。题意:给出一颗特别的树,就是只有根有不少个儿子,而以后都最多只有一个儿子,就是一条一条的链,n~10000. 如今给出n个东西,每一个东西有一个限制,u到v的简单路径,要选取这个路径上一个点,而且每一个点只可以分配给一个东西。求随便一种分配方案。
题解:解法一:咱们观察树的特征,发现有两种链,一种是不跨过根的,一种是跨过根的,咱们先考虑一个贪心问题:一条链上,也就是一维的时候能够用一个优先队列来搞。 以后,咱们回到这一道题,咱们从链的叶子开始贪心,先不考虑全部跨过根的链,由于他们在咱们的贪心中老是最后才被考虑的,咱们如今贪心是对最终是对的。 那么最后只剩下一些跨过根的链。 咱们就用上了他们的lca都是一个点的条件了,创建网络流,每一个链从叶子往上依次连INF有向边,汇聚到lca,而lca也到T连为1的,就是考虑好限制和转移匹配的INF的边。 而后跑就好了。
解法二:一种经典的作法,倍增,每一个点有(i, j)表明i点往上到2^j个的区间,那么咱们每一条链最多用4个就能覆盖,建图的边重(i,j)向(i,j-1)和(i+啥啥啥, j-1)。最后会只剩一个点来连向T。也能够用树链剖分对应到线段树上链。
F题。题意:n~400,表明n的排列,定义若是px 》 px+1,那么贡献一个x,将全部的贡献值加起来,就是这个排列的值,如今给出一个k~n方级别的,求知足这样方案数的个数。
题解:首先f【i】【k】,i指到i个数了,k指目前的答案是k,而后如今已经n三次方了,只能o(1)的转换。咱们发现不会。。。。因此赛场上有人打表发现了规律,是一种作法。 后来说题的时候,说k等价于逆序对数,那么咱们假设认为这个正确,咱们推一下递推式,把f【i】【k】,用i放在哪里的方法,写出来一个sigma的式,比较f【i】【k-1】,补一补就行了。 仍是很好的一道题的。
J题。题意:给出n,让你用n个本身定随便每一个边长的正方形拼成一个大的正方形。n~100。
题解:咱们发现,n = 4,的东西,再加2也是能够的。 因此偶数都行,除了2. 咱们又发现,一个正方形加3也是能够的,就是和4同样, 所以只有5不行,也就是2 3 5 不行, 1 特判 其余的都能弄。web

本文分享 CSDN - ruclion。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。网络

相关文章
相关标签/搜索