摘要:
[TOC] BZOJ1015 星球大战starwar [题目传送门][1] 题解 比较经典的离线题目,我们将所有的数据读入之后,从后往前离线处理,用并查集维护就行了。注意一个星球被炸掉了之后,这个星球也会消失(即不算在联通块之内)。 code include using namespace std; 阅读全文
摘要:
[TOC] BZOJ1303 中位数图 [题目传送门][1] 题解 有点考验思维的一题。对于这个排列,我们实际上并不需要知道这个排列中每个数的值,实际上我们只需要知道这个数是否比$b$大就行了。所以我们先把所有的数都转化成1或者 1,表示这个数比$b$大或者小。然后记$sum[i]$为修改之后前$i 阅读全文
摘要:
[TOC] BZOJ1050 旅行comf [题目传送门][1] 题解 比较妙的一道题。刚开始看到题的时候,感觉可能是两个二分,但是发现这样找到的答案不一定是最优的。然后发现他的边只有5000条,所以我们将边按权值从小到大排序,枚举每一条边,让这条边作为最小的那条边(即只枚举边权比它大的边),跑最小 阅读全文
摘要:
[TOC] BZOJ3196 二逼平衡树 [题目传送门][1] 题解 比较经典的一道树套树题目了吧,然而先做了带插入区间第$K$小值之后,这题就比较简单了。外层用线段树,里面套一棵平衡树,这里用了$Splay$。不过需要注意的是,查询排名为$K$的数的时候需要二分,然后到树套树中进行查询排名。这样总 阅读全文
摘要:
[TOC] BZOJ1922 大陆争霸 [题目传送门][1] 题解 有点意思的一道题目,相当于是带限制的最短路,我们记$d[i]$表示第$i$个点被几个防御装置保护,$d1[i]$表示如果没有限制的话,到达第$i$个点的时间,$d2[i]$表示实际到达第$i$个点的时间。我们在跑$Dijstra$的 阅读全文
摘要:
[TOC] BZOJ1497 最大获利 [题目传送门][1] 题解 比较容易想到的一道网络流。从源点向每一个中转站连一条流量为$Pi$的边,从每个中转站向其对应的消费人群连一条流量为$inf$的边,从每个消费人群向汇点连一条流量为$Ci$的边。然后就转化成了最小割的问题了。由于中间消费人群与中转站的 阅读全文
摘要:
[TOC] BZOJ1798 维护序列Seq [题目传送门][1] 题解 比较简单的支持区间加和区间乘的线段树,注意$pushdown$的时候区间加和区间乘的处理即可。 code include using namespace std; typedef long long ll; bool Fini 阅读全文
摘要:
[TOC] BZOJ3172 单词 [题目传送门][1] 题解 裸的AC自动机,构造出AC自动机之后,将每一个节点的出现次数都累加到它的$fail$节点上去,最后得到的就是答案了。 code include using namespace std; typedef long long ll; boo 阅读全文
摘要:
[TOC] BZOJ3175 攻击装置 [题目传送门][1] 题解 emm...似乎说这个是最大独立集,可能之前并不知道有这个东西。由于攻击装置是攻击日字形的,所以我们可以根据奇偶性构造二分图,跑出二分图的最大匹配之后,用总的点数减去匹配个数就是答案了(因为这所有的匹配中,每一对只能够选择一个)。 阅读全文
摘要:
[TOC] BZOJ1191 超级英雄Hero [题目传送门][1] 题解 裸的二分图匹配,直接跑匈牙利即可。 code include using namespace std; typedef long long ll; bool Finish_read; templateinline void 阅读全文