
BZOJ
ACgay_caoyue
菜鸡*CPCer
展开
-
BZOJ 600题刷题计划
还是觉得优快云比较方便啊!自从上周南昌打铁回来后,整个人都是懵逼的状态,思考了好久得出来的打铁结论就是,做题太少了。于是我在@hzwer的博客里找到了BZOJ 600题列表,打算开启我的BZOJ 600题刷题计划。我也不知道我能刷多少,反正就一直刷一直刷就好了吧QAQ。嗯,大家一起加油吧!下面放上BZOJ 题目列表。(PS:有的题目是权限题,很尴尬)BZOJ1601 BZOJ100...原创 2019-06-05 16:30:44 · 411 阅读 · 0 评论 -
【BZOJ1087】状压dp
题意十分好懂分析看到题目,上来敲了个爆搜,结果样例都过不去…dfs水平有待提高…仔细分析之后发现,虽然棋盘看起来很小,只有9*9,但是状态数目极多,所以暴力是不可能过的。所以这个题目应该是个dp题。dp应该怎么dp呢?如果我们知道了上一行是怎么摆放的,我们也就知道了前i行一共有多少个棋子。那么下一行我们就可以推出来了。这就是本题的dp的转移。于是,我们来到了本篇文章的重点部分:状态...原创 2019-06-17 10:31:57 · 262 阅读 · 0 评论 -
【BZOJ1051】tarjan缩点
题意很好懂的啦期末月了啦!作业巨多,然后项目还没搞完,哭了。也只能偶尔刷刷题了分析:强连通分量经典题我们直接缩点。然后呢。新的图里面如果只有一个入度为0的点,那说明大家都喜欢他啊qwq然后这题就没了。#include <bits/stdc++.h>#define sc(n) scanf("%d",&n)#define pt(n) printf("%d\n",...原创 2019-06-11 18:24:33 · 196 阅读 · 0 评论 -
【BZOJ1001】最小割 or 对偶图最短路
题意十分难懂题意简单来说就是把一个图分成两部分最小花费,但是问题叙述的让人十分难以理解qwq。分析:这是BZOJ1001啊!也就比BZOJ1000 A+B难一点是吧。题目的流量已经给好了。让你求最小割。那不就直接最大流就完事了吗dinic直接就敲上去了。然后就MLE了。辣鸡vector敲了个前向星就过了。但是,这个题目可是BZOJ1001!是具有划时代意义的一个题目。我...原创 2019-06-12 13:32:40 · 744 阅读 · 0 评论 -
【BZOJ1934】最小割
根本读不懂题,大家自己理解一下吧分析:总共只有两种状态,对于一个人来说,要么是投1要么就投0.所以最终可以把状态划分为两个集合,全1和全0那么问题就好办了。我们把全1的集合连在源点S,全0的集合连在汇点T好朋友连双向边。这样构成的图中,我们求一个割,就可以把图划分为两个部分,由于改变意愿要加一答案,所以边权就是1,然后求最小割,就是最小的答案了。#include <bits/...原创 2019-07-08 11:02:27 · 203 阅读 · 0 评论 -
【BZOJ1066】最大流
题目通俗易懂分析:一开始没看出来是一个最大流。不过…每个柱子跳一下就会变矮…这不就是流量吗…遂最大流。每个柱子拆成柱底和柱顶,容量就是高度。然后距离为d的柱子连起来,起点连青蛙,容量为1,因为一只青蛙跳完了就没了。可跳出去的点连汇点。最大流就行了。#include <bits/stdc++.h>using namespace std;const int max...原创 2019-07-08 12:57:11 · 198 阅读 · 0 评论 -
【BZOJ1834】最小费用流
题意很好懂分析:第一问费用为0的最大流第二问在残余网络上连边,容量INF,费用W,然后0->1连k的容量然后最小费用最大流#include <bits/stdc++.h>#define INF 0x3f3f3f3fconst int maxn= 5050;using namespace std;int n,m,k;int x[maxn],y[maxn],w[...原创 2019-07-08 18:33:30 · 431 阅读 · 0 评论 -
【BZOJ2761】大水题
大水题#include <bits/stdc++.h>using namespace std;map<int,int> mp;int main(){ int T; scanf("%d",&T); while(T--) { mp.clear(); int n; scanf("%d",&n); for(int i=1;i<...原创 2019-07-08 18:51:38 · 237 阅读 · 0 评论 -
【BZOJ1821】二分+并查集
题意很好懂分析求最小的最大值,显然是二分的题目。按照题目定义,如果距离小于二分出来的x的话,就直接划分成一个部落,用并查集维护即可。然后这题就做完了。**PS:**我输出了小数点后三位竟然WA???!#include <bits/stdc++.h>#define sc(n) scanf("%d",&n)#define pt(n) printf("%d\n",n)...原创 2019-07-06 11:24:17 · 191 阅读 · 0 评论 -
【BZOJ1076】状压期望dp
题目比较长,不是很好懂但我就是不说题意!分析:查看数据范围,然后是集合,考虑状压dp。设dp[i][j]表示第i次掉宝物,目前的集合为j的最大值。可是这样真的可以求出来答案吗?一方面我们不知道最后的集合是怎样的,另一方面,我们也不知道当前这个是拿还是不拿对以后的影响会更好。那么怎么办呢?我们倒过来看,最终的结果我们不知道,那么初始情况的结果我们知不知道呢?显然直到,初始的集合显然是...原创 2019-07-06 16:32:35 · 192 阅读 · 0 评论 -
【LCT裸题】
题目均来自ZZQ博客:LCT裸题泛做BZOJ2049非常裸的LCT,连边断边询问连通性,并查集也可做。(有点卡常)#include <bits/stdc++.h>#define sc(n) scanf("%d",&n)#define pt(n) printf("%d\n",n)#define rep(i,a,b) for(int i=a;i<=b;i++)...原创 2019-08-20 15:05:17 · 267 阅读 · 0 评论 -
【BZOJ1007】下凸壳
BZOJ1007显然,画图可知,最后看见的线段一定组成了一个下凸壳。而且从左向右的线段的斜率一定是递增的。所以我们对斜率排序,(由大到小和由小到大都无所谓),然后通过初中数学知识计算一下交点,用单调栈维护可以看见的部分即可。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+7;struct n...原创 2019-08-21 12:53:51 · 489 阅读 · 0 评论 -
【BZOJ1877】最小费用流
BZOJ1877乍一看以为是一个dp,其实分析之后可以发现,每个点每个边只能走一次,所以将点拆开,将流量设为1,跑MCMF这题就没了…#include <bits/stdc++.h>#define INF 0x3f3f3f3fconst int maxn= 2020;using namespace std;struct edge{ int to, cap, cos...原创 2019-08-21 13:15:22 · 190 阅读 · 0 评论 -
【BZOJ1040】基环树dp
BZOJ1040每一个人会痛恨一个人,将痛恨的那个人设为父节点,显然每一个人只有一个入度。分析(画图)可知,这个题目的模型是一个基环树森林。我们只需要随便在基环树的环上取一个边,对边的两边的节点分别树形dp。(0) 对于一个边,他有两个点,这两个点不能同时取。(1) 对于一个边,一个点为x,一个点为fa[x]。(2) 首先我们强制不选x,进行树形dp。(3) 然后我们强制不选fa[x...原创 2019-08-21 16:30:43 · 326 阅读 · 0 评论 -
【BZOJ1041】数论
题意十分好懂分析求有多少个点对(x,y)满足x2+y2 = r2显然,答案是对称的,四个象限的数目是一样的。而且r是一个整数,所以四个坐标轴都有整点。设ans是第一象限内的点的数目,则结果就是4*ans+4。现在我们假设(x>0,y>0),则y=sqrt((r-x)(r+x))设d = gcd((r+x),(r-x))那么显然(r+x)/d与(r-x)/d互质。设A ...原创 2019-06-16 13:02:24 · 231 阅读 · 0 评论 -
【BZOJ1202】差分约束系统 or 并查集
题意很简单真是一道绝世好题啊!一句话题意给一段区间的和,问有没有冲突。(是不是真的一句话(花鸡))分析这个题不久随便搞搞就行了嘛,我判断一下有没有冲突就行了啊,这很难吗?五分钟后这咋写啊????算了,我不会这个题。等等!s到t是v,那不就是sum[t]-sum[s-1]=v吗?那不就是sum[t]-sum[s-1]<=v , sum[s-1]-sum[v]<=...原创 2019-06-09 14:28:38 · 224 阅读 · 0 评论 -
【BZOJ1003】最短路+区间dp
传送门题意简单来说就是求1,m的最短路,但是现在一共要走n次,也就是n天每天走一次。在某些天的时间里,有一些点不可以走,然后求走n次的最短路。做题之前:wk,这题目啥意思啊,让我读一读啊…?读完一遍了,啥意思啊。题目没抄全吧。看了下别人的分析之后,原来是这个意思啊!遂码…写完代码之后:怎么不过样例啊???遂改。怎么全爆了啊,遂重码终于过样例了。提交代码时:CE了啊???...原创 2019-06-05 18:14:15 · 250 阅读 · 0 评论 -
【BZOJ1588】splay
题意十分好懂分析十分简单的一道题啊。显然,除了第一个,剩下的我们就查一下小于它的最后一个和大于它的第一个,然后比较一下加上去,就做完了。于是:…我就写了一个半小时。…哭完了之后我们回到上面的分析。我们查找的东西很简单,所以我们直接用set就可以很容易的维护这个东西。我们lower_bound(x),找到后继,然后it–找到前驱,于是就真的做完了。#include <b...原创 2019-06-12 15:13:31 · 187 阅读 · 0 评论 -
【BZOJ1208】平衡树
和1588是一样的题吧…分析splay裸题。我懒直接上了两个set就做完了#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;const int maxn = 1e5+7;const int mod = 1000000;int n;set<int> dog,per;in...原创 2019-06-12 16:12:31 · 266 阅读 · 0 评论 -
【BZOJ1491】Floyd
题意十分易懂分析看到题目就直到又是一道Floyd题两遍Floyd第一遍算最短路和路径数目。第二遍统计答案。设num[i][j]表示从i到j的最短路的数目那么如果dis[i][j]==dis[i][k]+dis[k][j],即k是最短路上一点,那么按照题目定义:ans[k] += (num[i][k]*num[k][j])/num[i][j]。然后就做完了。#include &l...原创 2019-06-12 16:42:35 · 809 阅读 · 0 评论 -
【BZOJ1084】dp
题目很简单分析蛮无聊的一道题。状态转移十分显然然后就做完了。#include <bits/stdc++.h>#define sc(n) scanf("%d",&n)#define pt(n) printf("%d\n",n)#define rep(i,a,b) for(int i=a;i<=b;i++)#define vi vector<int&g...原创 2019-06-12 17:21:12 · 179 阅读 · 0 评论 -
【BZOJ1295】最短路
题目没搞懂是啥意思,看了别人的题解才知道是啥意思分析这题没啥难度。可以删除最多T个点,意思就是两点之间最多有T个障碍,意思就是没有障碍权值是0,有障碍权值是1,意思就是两点之间的最短路<=T即可行。然后枚举点统计答案。#include <bits/stdc++.h>#define sc(n) scanf("%d",&n)#define pt(n) print...原创 2019-06-12 20:23:14 · 439 阅读 · 0 评论 -
【BZOJ1002】生成树计数 拉普拉斯算子 递推
题目很好懂,在这里题意题意很简单,就是给一个图,算生成树的个数。写代码前:这题不就是生成树计数嘛,遂思考如何码。?生成树计数咋写啊是在kruskal上直接改计数吗?好像不太对啊。然后在草稿纸上画了画图,这好像是一个递推题啊?!遂推了一个假式子上去,因为我dp[1]画错了(在线丢人)然后重新分(xia)析(cai)了一波然后发现了BZOJ竟然不能用py交,遂改用Java,然后就...原创 2019-06-06 13:03:26 · 300 阅读 · 0 评论 -
【BZOJ1192】二进制拆分
题目意思很简单,在这里题意:最少将n拆分成多少个数,可以凑出1到n的所有数字。做题前:这题是不是假题啊?我用1 2 3 4 5 …这样凑吧好像不太对啊。是dp吗我想想这状态怎么表示啊?昨天刚听过Claris的二进制拆分背包,我试一下吧。?竟然过了???分析:瞎猜一波原理吧。用二进制拆分一定是可以表示出所有数字的,这个很好理解。但是为什么二进制拆分是最好的呢?为什么不...原创 2019-06-06 13:29:28 · 1444 阅读 · 0 评论 -
【BZOJ1303】思维题
题意还是很简单题意:在全排列中找长度为奇数的连续子序列,且中位数是b,问一共可以找到多少个连续子序列。分析:既然是全排列,我们就不需要考虑有多个b的情况了。那么我们就可以把b的位置记录下来,然后往两边扩展。设b的位置为pos。lmin[i]表示[i,pos-1]中比b小的有多少个lmax[i]表示[i,pos-1]中比b大的有多少个rmin[j]表示[pos+1,j]中比b小的有...原创 2019-06-06 14:39:38 · 248 阅读 · 0 评论 -
【BZOJ1270】dp
题意也很简单就对了题意简单来说就是有一只猫,去吃柿子。大家还是自己去看题目吧qwq分析设dp[i][j]表示第i棵树上第j层可以获得的最大的收益。转移也很显然:dp[i][j] = max(dp[i][j+1],dp[k][j+d])+num[i][j]但是这个东西的复杂度是(n^3)的但是,显然我们只需要dp[k][j+d]的最大值去更新答案。我们显然可以在更新的时候把上面...原创 2019-06-07 15:22:48 · 137 阅读 · 0 评论 -
【BZOJ1191】二分图匹配
题目在这里分析二分图匹配模板题。但是要注意的就是,我们是在玩游戏,如果到某一个时刻我们回答不上来了,游戏就终止了。所以当匹配不了的时候我们就break。#include <bits/stdc++.h>#define sc(n) scanf("%d",&n)#define pt(n) printf("%d\n",n)#define rep(i,a,b) for(i...原创 2019-06-07 15:51:33 · 180 阅读 · 0 评论 -
【BZOJ1085】迭代加深+启发式搜索
题意很简单分析跳马,首先跳马写起来就很复杂了。我们跳空格就行了。然后,我一看这个题,15步以上就算-1,那好啊,直接写了个爆搜。结果样例都跑不出来。。遂考虑启发式搜索。评估函数很显然,现在有多少个没归位,那我最少就要跳这么多次。然后再加个迭代加深吧。然后我因为dx,dy手残写错了自闭了半个多小时…这个题目算是显示图的搜索技巧吧。主要是启发式搜索和迭代加深的使用。就没了。#in...原创 2019-06-13 19:04:53 · 371 阅读 · 0 评论 -
【BZOJ1059】二分图匹配
题意很简单,一看就懂做题前:这不就是随便模拟一下就完了吗?我让每行每列都记录一下,只要有n个不同行不同列的黑子就行了吧遂码WA???why???是哦,好像不太行,因为如果同一行或者同一列里面有好几个一样的,我只是把最早出现的记录下来,其实并不一定用到它。分析那么我把每一个行列匹配了,最终[i,i]都匹配了是不是就可以了啊于是我把黑子的行连向列,然后二分图就建完了。跑一边二分图...原创 2019-06-08 11:53:38 · 147 阅读 · 0 评论 -
【BZOJ2330】差分约束
BZOJ2330题目问的就很差分约束。太裸辣!唯一需要注意的就是分的糖果要>=1。#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;const int maxn = 1e5+7;int dis[maxn];struct edge{ int to; int cost;};v...原创 2019-08-21 17:02:06 · 235 阅读 · 0 评论