![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
神奇的解法
zwjdd_qwq
这个作者很懒,什么都没留下…
展开
-
bzoj3900 交换茸角(状压DP)
神题一道,入手毫无思路 还是头一次写这种找下界的状压DP,首先,n头路,我们的最大交换次数为n-1次 因为把所有鹿的茸角打乱重新分配的话,只需要n-1次就可按照从小到大的顺序完成重排 这也是差值最小的方法,但是如果这样都不合法的话,说明这个集合没法重排,输出-1 好了,那么说说怎么优化 对于每一个集合,只要他可以重排,我们就可以通过∣S∣|S|∣S∣-1的次数完成重排,那么,分成的集合越多,我们所...原创 2019-08-19 16:13:00 · 106 阅读 · 0 评论 -
洛谷P3043「Usaco2012 Jan」奶牛联盟
这题tarjan缩点的思路不难想到,关键是怎么统计 我们思考每个部分的贡献是什么 对于一个环,我们只有两种方法,因为每条边必须和一个点分在一组 所以只有顺时针到底和逆时针到底两种方式 对于一个非环部分,我们有sizesizesize中方法,实际上就是一个图多一条伸出去的边 那么我们如何判断呢,不难发现,,一个环,环内的边一定等于换的大小 我们统计一下每次判断就行了… #include<ios...原创 2019-10-09 00:01:13 · 96 阅读 · 0 评论 -
P2943「Usaco2009 Mar」打扫卫生
神题一道 变量异常复杂,请在结合程序及注释的情况下观看。 根据题意不难看出,在选择的一段区间内,最多有 n\sqrt{n}n种不同的食物。 据此设计dp数组f[i]表示i时的最小代价。 设计辅助数组pos[j]表示最多选j种食物时区间左端点位置。 思考:遍历到i时,使区间食物种数不变应满足什么条件? 得出:若上一个该种食物同样在此期间内,食物的种数便不必增加。 同理,若一个食物,其下一个相同食物...原创 2019-10-08 20:07:03 · 164 阅读 · 0 评论 -
洛谷P2371 [国家集训队]墨墨的等式
不愧是国家集训队的题目,神仙题啊 题目所让求的实际上是(∑i=1naixi)(\sum_{i=1}^n a_ix_i)(∑i=1naixi)在所给定的[l,r][l,r][l,r]区间内的取值个数 我们令(∑i=1naixi)(\sum_{i=1}^n a_ix_i)(∑i=1naixi)为SSS 我们考虑对于SSS膜aia_iai的值,假设S=k∗ai+restS=k*a_i+re...原创 2019-09-13 00:04:37 · 119 阅读 · 0 评论 -
CF498D Traffic Jams in the Land
此题确实是妙,用到了题目的每一个小细节 先是全题的重中之重,对于每一条路,他的拥堵值一定小于等于6 这意味着什么,因为要对拥堵值取模,我们的累计时间就可以提前进行取模 这样就可以表示出该节点的状态了 讲的比较混乱,我们来说代码 我们使用线段树,区间权值的意义是,在时间iii跑到lll点,到达r+1r+1r+1需要多长时间 这样对于查询操作我们只需要区间求和即可 如何实现呢,我们前面也说了,枚举当前...原创 2019-09-12 00:41:59 · 159 阅读 · 0 评论 -
P4643 [国家集训队]阿狸和桃子的游戏
把边权转换为点权。具体来说,把一条边的边权各一半加到两个顶点上,然后每个人选的时候,贪心的选取点权最大的点即可。 如果一条边的两个顶点被同一个人选上了,那么它就会额外提供等同于边权的贡献;否则的话,两个人每人都有一半边权的收益,相当于这条边谁也没给,也是符合题意的。 #include<iostream> #include<cstdio> #include<cstdli...原创 2019-08-17 23:36:59 · 92 阅读 · 0 评论 -
洛谷P3295萌萌哒
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> #define mod 1000000007 using namespace std; const int m...原创 2019-07-29 00:23:40 · 201 阅读 · 0 评论 -
洛谷AT2164 rabbit exercise
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<queue> using namespace std; const int maxn = 1e6+7; typedef long...原创 2019-07-29 00:24:57 · 98 阅读 · 0 评论 -
bzoj2064 分裂 (上下界状压DP)
和bzoj3900有异曲同工之妙,然而,即便写过了3900,蒟蒻还是没想出正解 这次的上界变成了n+m-2即是把所有的打乱,按照要求的m个一个一个拼起来,最后两块一定相等,所以-2。这样的前提是这两个集合的子块大小和相等,那么按照3900的套路,我们把集合尽量分成和相等的子集,分开处理,那么有几个集合,我们就可以减去几个2 如何实现呢,我们使用lowbit,lowbit求的是最后一个1的位置 那么...原创 2019-08-19 16:20:33 · 103 阅读 · 0 评论 -
P1848「Usaco2012 Open」书架
这是一道我题解都差点没看懂的题目,DP和线段树融合的出神入化 注释应该写的挺清楚 #include<iostream> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #define lch(x) ...原创 2019-10-09 00:20:35 · 128 阅读 · 0 评论