摘要: 题目链接: "戳我" ~~看来我是要退役了,贪心都不会写了QAQ~~ 开始以为以小博大就行了,只要让较弱的尽可能去牺牲就行。但是明显如果弱的可以战胜对方弱的,让他去跟强的打这一场就白输了(而且那个它本来可以对付的对方弱的,还有胜利的可能)。 之后又想尽量用小的去战胜它能胜利的小的,但是这样也不行,一 阅读全文
posted @ 2019-05-22 23:54 风浔凌 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 开始以为是按照修建时间短的排序,先把修建时间短的修了。 但是这样显然有问题,因为可能前面的倒塌时间靠后,你先修了,后面塌的就不能修了。 所以要按倒塌时间排序开始修。 然后如果当前的建筑物来得及修,当然是要修的。 这时候我们维护一个已经修过的建筑物的大根堆(优先队列)。 如果不能 阅读全文
posted @ 2019-05-22 23:42 风浔凌 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 有向生成树计数。 那么在这里补充一下矩阵树定理吧! 度数矩阵 邻接矩阵(双向计数),去掉任意一行一列,剩下的式子高斯消元之后,对角线乘积是无向图的生成树个数。 入度矩阵 邻接矩阵(单向边),去掉根相关的一行一列,剩下的式子高斯消元之后,对角线乘积是外向树的生成树个数。 出度矩阵 阅读全文
posted @ 2019-05-22 23:38 风浔凌 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 首先,你要知道这道题是一棵树! 然后,就是从树上选择K个点,让他们的权值和最大,其中如果选择了一个点,那么它的父亲一定要选。 有依赖的背包问题。 设$dp[i][j]$表示在以i为根的子树中,选择j个点的最大权值。 但是直接在树上做应该是$O(n^2k)$的,所以我们考虑优化— 阅读全文
posted @ 2019-05-22 23:33 风浔凌 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" ~~非常抱歉,菜鸡风浔凌又来水蓝题了qwq~~ 看到题解上写双向搜索???什么鬼....... 看到数据范围特别小,直接划分二分图,两个点之间连接容量为1,费用为曼哈顿距离的边,跑费用流即可。 什么?你问我那个不能移动到有玩具的格子的限制? 不用管了啦,因为费用流会给你跑费用最 阅读全文
posted @ 2019-05-22 23:27 风浔凌 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" ~~我竟然还有脸发出这样一篇题解.......~~ 其实我是暴力水过去的,,就从一个点开始,找它两边的数和它异或,不断更新答案。如果一侧找到第二个比它大的数,就break掉...... 正解是可持久化01trie,~~但是我写出锅了,正在咕咕咕,写出来了之后一定update~~ 阅读全文
posted @ 2019-05-22 23:24 风浔凌 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 其实只有开了O2才能A....... 就是我们看到n的范围这么小,就想到状压DP。然后我们设状态dp[i]表示状态为i的(二进制表示该点选或者不选),方案数有多少个。 但是我们发现因为还要枚举转移下一个点,所以我们还要记录一下最后的那个点是什么。 于是我们修改状态为$dp[i] 阅读全文
posted @ 2019-05-22 23:20 风浔凌 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 很显然能看出来是分数规划,然后我们跑一个二分图上的费用流就行了。 二分出来答案mid之后,每条边的流量转换成a[i] b[i] mid即可。 代码如下: cpp include include include include include include define S 0 阅读全文
posted @ 2019-05-22 23:16 风浔凌 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "戳我" 就是大力推式子,然后上BSGS就行了。 $$x_n\equiv a^{n 1}x_1+b(a^{n 2}+a^{n 3}+...+a)\pmod p$$ $$t\equiv a^{n 1}x_1+b\sum_{i=0}^{n 2}a^i\pmod p$$ $$t\equiv a 阅读全文
posted @ 2019-05-22 23:14 风浔凌 阅读(157) 评论(0) 推荐(0) 编辑