自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(157)
  • 收藏
  • 关注

转载 我又双叒叕搬家了

https://blog.youkuaiyun.com/Patrickpwq转载于:https://www.cnblogs.com/Patrickpwq/articles/10322325.html

2019-01-25 23:42:00 206

转载 【USACO15JAN】草鉴定Grass Cownoisseur(缩点+分层图?)

蒟蒻好紧张啊 蒟蒻好紧张啊 蒟蒻好紧张啊 蒟蒻好紧张啊一开始方向好像走错了 乱推了个拓扑的式子 然后FST了然后还不肯放弃 挣扎了20分钟 又受到了刚上来都打完球了的ldx的diss"我靠,这么傻逼的题你还没A吗"好吧的确是傻逼题先缩点设s是1所在的scc的编号考虑逆行的使用姿势对于一个可以从s出发到达的点 逆行到一个可以到达s的点然后这个东西你可以跑正反两发spfa...

2018-11-07 22:04:00 227

转载 【洛谷 P3398】仓鼠找sugar(lca)

听了教练的考前须知 蒟蒻紧张的要死 只想做信心题同时满足:c或者d在x子树里 a或者b在y子树里 其中x=lca(a,b),y=lca(c,d)#include<bits/stdc++.h>#define N 100005using namespace std;template<class T>inline void read(T &x){...

2018-11-06 14:45:00 215

转载 【ZJOJ2010】数字计数(数字计数)

设f[i][j][p]表示长度为i 最高位为j p出现的个数显然 f[i][j][p]=sigma{f[i-1][k][p]} 其中k是次高位 但是最高位出现的那么多次都没有被我们算进去但是很显然只需要加上(i-2)^10就阔以了然后常规的分[1,b],[1,a-1]解决常规的分成两部分 一部分最高位小于最高位(似乎有点怪怪的??) 另一部分就是剩下的在这里只说下另一部分算了...

2018-11-06 11:57:00 241

转载 【USACO15DEC】最大流Max Flow(树上差分)

听了教练的考前须知 蒟蒻紧张的要死 只想做信心题#include<bits/stdc++.h>#define N 50005using namespace std;int n,k,tot,first[N]; struct Tree{ int to,next;}edge[2*N];inline void addedge(int x,int y){ ...

2018-11-06 10:30:00 148

转载 【洛谷11月月赛T3】【P4996】咕咕咕(组合数)

迟到的题解 昨天乱翻的时候感觉这道题挺有意思的一眼看过去状态压缩乱搜转移方程大概是 设f[i]表示从0转移到i的遗憾值之和 f[i]=sigma(f[j])+val[i]*dis[i] dis[i]=sigma(dis[j]) 其中j是i的子集,dis[i]表示从0转移到i的方案数之和妙啊有70分了// luogu-judger-enable-o2// luogu-judger...

2018-11-06 09:56:00 221

转载 【BZOJ 4247】挂饰(背包变形)

虽然转移方程可以一眼看出但是烦就烦在为何要排序有人说这是一个贪心,又有人说这是一个保障正确性的。就按照贪心的想法好了:在保证正确性的情况下尽量多的挂钩。#include<bits/stdc++.h>#define N 2005#define INF 0x3f3f3f3fusing namespace std;int n,f[N][N];struct Node...

2018-11-05 22:10:00 137

转载 【NOIP 校内模拟】T3 忘了是啥名字了(dfs序+树状数组)

对于当前新加入的一条路径 他产生的贡献分为两种1.另一条路径的LCA在当前路径上2.当前路径的LCA在另一条上对于情况1:可以维护当前点到根节点有多少个LCA,查询只需查询u,v,-2*lca(u,v),修改需要对lca的子树+1对于情况2:显然的树上差分,查询就是lca子树的前缀和,修改u++,v++,lca-2即开两个树状数组,一个支持单点查询+区间修改,一个支持单点修...

2018-11-05 20:30:00 189

转载 【NOIP 校内模拟】T2 规避(容斥+最短路计数)

可以先不管符合条件的 先统计出所有的可能走法(最短路条数*最短路条数) 然后减去会相遇的会相遇的分为在点相遇和在边相遇在点(设为p)相遇:先保证点在最短路上 然后从s到p的最短路等于从t到p的最短路在边(设为(x,y,z))相遇:同样需要保证边在最短路上(需要判断三次 同样玄妙♂) 以及相遇的地方一定在边上(两条不同的最短路的两倍不超过总长 这个姿♂势可以记住) 挺玄妙的#inc...

2018-11-05 16:50:00 175

转载 【NOIP 校内模拟】T1 line(带权并查集)

很无奈 离正解就差一句话简单的带权并查集 没啥好说的 也可以差分约束#include<bits/stdc++.h>#define N 100005#define M 200005#define D 10005using namespace std;template<class T>inline void read(T &x){ x...

2018-11-05 13:58:00 123

转载 【NOIP 校内模拟】T1 优美的序列(二分+st表+卡常)

我是菜鸡 我是蒟蒻 我好菜ak一定是区间最小的值,且是所有数(包括自己)的最大公约数我没看出来 没救了 noip爆零了 回家养猪了 没学上了 怎么办gcd有单调性 gcd有单调性 gcd有单调性 gcd有单调性 gcd有单调性 可以二分 可以二分 可以二分 可以二分 要说多少遍才记得到我没想到 没救了 noip爆零了 回家养猪了 没学上了 怎么办stl少用 stl少用 stl少...

2018-11-02 17:00:00 204

转载 【NOIP校内模拟】T2 飞越行星带(kruskal)

啥玩意儿啊 题都没读懂飞船要飞过这个行星带 就必须穿过每个行星形成的瓶颈于是我们把每个行星想象成一个点 形成的瓶颈就是与其他点相连的边相当于一个最小生成树了 直到s t联通当然 这样做有点难理解 还可以类似的二分+并查集做#include<bits/stdc++.h>#define N 805#define eps 1e-6using namespace st...

2018-11-02 15:48:00 186

转载 【NOIP 2017】逛公园(最短路+记忆化搜索)

肯定要先跑一次最短路题目中的k 相当于允许我们走k距离的“冤枉路”回想之前有些题是如何判断哪些边是属于最短路上的 当dis[now]+edge[u].val==dis[vis] 这条边就在最短路上类似的 我们可以得出 dis[now]+edge[u].val-dis[vis]就是这一次走的“冤枉路”的长度到这个地方搜索的策略已经很明显了 dfs(now,remain)表示当前当前...

2018-11-02 08:10:00 185

转载 【SDOI2009】Elaxia的路线(拓扑+最短路+dp)

先找出Elaxia的最短路 重新建图 在此图上我们再标记同时也是w**的最短路的边显然这是一个DAG 可以做dp 设f[i]表示以i点结尾的最长公共连续和(公共路径一定是一条链) 则f[vis]=max(f[now],f[now]+e[u].val*e[u].flag)(flag表示是否也是w**的最短路)为了使得没有后效性 需要在拓扑排序时做dp#include<iostr...

2018-11-01 20:48:00 210

转载 【BZOJ2750】【HAOI2012】道路(最短路+拓扑)

容易想到枚举所有起点 做最短路 然后枚举边统计次数一条边(x,y)的贡献 肯定是 s到x最短路的方案数 乘上 s到其他点但经过了y的最短路对于前者每个点可以从前一个点递推过来 只要满足dis[vis]==dis[now]+edge[u].val 当一个点被所有入边都统计了一次后 就可以搜他了(拓扑思想)对于后者每个点从后一个点递推过来#include<bits/stdc...

2018-11-01 16:09:00 212

转载 递增数列(迭代加深搜索)

迭代加深搜索就是限制递归的层数,然后一层层地扩大限制的层数我们记录当前深度,以及当前应该搜出几个数设计剪枝:1.当当前深度乘上2^r(r是还没有选的数)比m还小 那肯定是不行的 因为最大的扩展方式就是选两个最大的数2.这一层比上一层数小#include<bits/stdc++.h>using namespace std;int m,step,s[1000];b...

2018-11-01 14:32:00 272

转载 【TYVJ1340】送礼物(折半搜索+hashmap)

当答案可以分为两半时 为了降低复杂度 可以使用折半搜索对前半部分 搜出所有可能的和 用map记录对后半部分 同样也是搜出可能的和 如果前半部分存在一个和 能拼起来 那ans++#include<bits/stdc++.h>#define N 45#define ll long longusing namespace std;ll n,key,ans,a[N];...

2018-11-01 13:36:00 226

转载 再数17(搜索+容斥)

n个集合的容斥其实就是 总的 减去两两相交的 加上三个相交 减去四个相交 加上五个.....(奇加偶减)这道题就是一个lcm的容斥我们用搜索来实现 枚举选的数需要加个剪枝 当前lcm已经超过了m#include<bits/stdc++.h>#define N 35#define int long longusing namespace std;int n,m,...

2018-11-01 12:16:00 172

转载 【CF869E】The Untended Antiquity(哈希+二维树状数组)

当覆盖两点的最小矩形不同时,一定不可达这样的问题不难想到经典的二维树状数组+差分来支持二维区间覆盖+查询对于覆盖操作 我们可以差分的给这个矩阵里加上一个编号对于操墙操作 我们可以反着减去这个编号对于查询 就查询这两个点的值是否相同 编号的累积不影响 因为只有在同一个墙内才会累积注意 如果只是单单的把编号从1开始标号是不够的 因为会出现1+3=2+2这类情况需要哈希#incl...

2018-10-31 17:33:00 169

转载 【NOIP校内模拟】T1 一串数字(思考题+一点点数论知识)

关键是那些两个数相乘拼成了立方数的一个数分解质因数后,指数%3是不影响的我们可以这样想——我们通过一个数,反推出能够和他凑成立方数的数但有可能这个数在原序列里不存在 不过没关系 我们开两个桶 每次比较下大小 只往一边放 这样就不会多统计了#include<bits/stdc++.h>#define N 100005#define int long longusi...

2018-10-31 16:16:00 173

转载 【NOI2018】归程(kruskal重构树+最短路+树上倍增)

总的来说 从v通往1的道路 分为了步行和开车也就是说 一个点u 他能作为分界点 当且仅当存在一条路径(u,v)的海拔全部高于当天水位线 且(u,1)是最短路很显然 这是一个与瓶颈有关的问题 不难想到Kruskal重构树由于瓶颈是海拔 所以我们先建出以海拔为关键字的重构树由于是个小根堆 所以一个节点 子树的海拔都大于他 换句话说 v能到达子树里的任意一点所以我们可以预处理出一个子...

2018-10-31 15:00:00 210

转载 【HDU1007】Quoit Design(分治求平面最近点对)

假设当前区间为[l,r] 中间点为mid那么最近点对 要么在[1,l]中,要么在[l+1,r]中,要么两边各有一个我们递归处理出左区间的 最近点对距离d1 右区间d2 取d=min(d1,d2)然后有两个剪枝来处理情况31.按x为关键字排个序,枚举[l,r]的点,假如一个点的x与中间点的x差值已经超过了d,那肯定不满足要求,因为还要算上y2.剪枝1还不够,当我们已经筛选出符合剪...

2018-10-30 22:41:00 430

转载 【BZOJ 4289】PA2012 Tax(技巧建图最短路)

暴力做法:(30pts)把每条无向边拆成两条有向边.把每条边看成一个点,对于两条从一个点出去的边 建两条有向边 边权为较大值这样是m^2的优化:可以用类似差分的思想来 然后出边之间做差分 对出边的边权排序 然后相邻边之间连边(小边向大边连权值为两边权值之差的边,大边向小边连权值为0的边)这样入边只需向他的对应边连一个权值为原边权的边即可达到去最大值的效果。#include&l...

2018-10-30 20:55:00 158

转载 【NOIP校内模拟】T2 字胡串(分治)

%%%%%%%%%%%lst神仙 这是他的做法 吊了标算对于这种有多少区间满足要求的 我们套路的用分治做 每次都统计左端点在左半边 右端点在右半边的个数设f(i) 表示当前点到中间分割点的最大值,g(i)表示当前点到中间分割点的或和我们发现 g(i)≥f(i) 所以只需找到g[i]=f[i]的区间就好然后f肯定是单调递增的所以可以维护双指针边界条件很坏坏 膜lst神仙啊#i...

2018-10-30 16:48:00 163

转载 【NOIP校内模拟】T1 排列树(树上的组合数)

假设当前节点now的子树大小为sizenow的方案数是他的所有儿子内部如何分配的方案数相乘得到的 这个可以递归计算不过对于那么多儿子之间 他们分配走的标号可能是不同的 比如now将把2,3,4,5分配给他的子树,那有可能是2,3;4,5 也有可能是2,4; 3,5这样分所以还得套个组合数 C(size,size') size需要一直减下去#include<bits/stdc...

2018-10-30 15:39:00 187

转载 【BZOJ 3718】 [PA2014]Parking(树状数组)

容易想到如果两个“交叉”的车车的宽度加起来比停车场还宽了那肯定是不合法的也就是说 一个车子移动过程中只要前面存在一个位置,经过了他,而且和他的和大于w就是不合法的然后我们从大到小枚举终点位置 这样保证了树状数组里维护的一定是经过了当前点的#include<bits/stdc++.h>#define N 50005using namespace std;templa...

2018-10-29 17:07:00 168

转载 【洛谷P3388】【模板】割点

都快忘了割点怎么搞了对所有点分两类1.根节点 2.非根节点显然根节点是很好做的 只需要数一下有没有两个子树以上对于非根节点 利用tarjan算法回忆到dfn的定义:时间戳,即在dfs中第几个被访问到 low:经过最多一条后向边/栈中横叉边能到达的最小的节点时间戳对于当前节点now来说,把整个图分成了两个子树。假如low[vis]>=dfn[now],(注意不要把时间戳和...

2018-10-29 14:47:00 162

转载 【BZOJ 1801】【AHOI 2009】中国象棋(递推DP)

(谁告诉我是状压的????)一行/列最多能放三个炮30分是让你爆搜的50分是让你状压的假设有8列dp[i][j]表示到第i行且前面列的状态为j (没有/有一个/有两个炮)然后刷表100分其实就是在50分的基础上修改了一点因为发现 并不需要准确的知道之前摆放情况到底是什么样子的于是dp[i][j][k]表示放了前i行,有j列是有1个棋子,有k列有两个棋子同样的刷表#i...

2018-10-29 14:36:00 127

转载 【BZOJ 3613】【Heoi2014】南园满地堆轻絮(贪心结论题)

一开始在往平均数那方面想 但是好像是错的我们这样想 每当加入一个数 如果他与之前构成的是上升的就不管 如果是下降的 那肯定要折中 变成中间值才能最小即答案就是最大的逆序对差值/2#include<bits/stdc++.h>#define ll long long#define N 5000000using namespace std;int n;ll Sa,...

2018-10-29 10:42:00 179

转载 【BZOJ 1922】【SDOI 2010】大陆争霸(有限制的最短路)

(谁告诉我这是个分层最短路来着的???)进入一个城市必须要这个城市所有结界都打破才能进那我们可以边炸边走 也就是说 我们可以维护d1数组:走到的时间(结界可能没炸完) d2数组:可进入的时间(结界都被炸完了) d数组:真实的到达时间容易发现d[i]=max(d1[i],d2[2])那我们就用dijkstra维护d数组 每次都要更新当前点所保护的城市的可进入时间 以及当前点连的城市...

2018-10-29 09:54:00 181

转载 【BZOJ 2600】【IOI 2011】ricehub(贪心+中位数)

拿到这道题一开始有两个naive的想法想法1:对于每个位置 向右扩展 直到不能取了为之 但是又觉得复杂度不对就放弃了......想法2:离散化坐标 二分仓库的位置 每次往左右两边数量较多的一边靠(这是什么口胡玩意儿???)正解:事实证明我是被ioi2011吓到了其实就是想法1加了一丢丢东西 维护一个左指针 右指针 假设是[l,r]区间 那么仓库放的位置最优一定是中位数的地方 这...

2018-10-28 22:39:00 186

转载 【BZOJ 2151】种树(链表+贪心)

有一种显然错误的做法:每次从堆里取最大的,更新链表比如 19,20,19 这样的话会先选20。但是很显然,选两个19带来的贡献可能是更好的这时我们就要想一种能做到“反悔”的方法其实只需要做一点点修改,每次再push一个“19+19-20”进去,一样是对的那这个“19+19-20”的放在哪儿呢(编号)?只需要放在20的位置就行了,这样是正确的其实这样做的本质 是重写了这个问题 将...

2018-10-28 17:07:00 166

转载 【洛谷P4315】月下“毛景树”(树链剖分)

这是一道毒瘤题。首先题目中给的是边权而不是点权,但是我们把边权移到点上就行了但是要注意,之后我们修改u,v两点之间的路径时,就不要修改他们的lca,以及当要修改单边的时候,把边的编号*2(因为是双向边),然后挑深度大的那个点来修改重点是区间覆盖tag和区间加tag。首先注意,进行区间覆盖时,一定要清零区间加tag。然后其次,pushdown的时候一定要先覆盖再加#include&...

2018-10-28 16:08:00 135

转载 【CF402D】Upgrading Array(素数+质因数+gcd+贪心)

不难发现 题目中给出的f函数 其实就是一个数分解质因数后好素数和坏素数的个数之差也就是说 数x带来的贡献 与x的质因数的种类有关系 又联想到gcd[1~x]一定是这个数的因子 也就是说一个数的贡献可以表示成:f(gcd[1~x])+f(....)容易想到贪心做法:我们从后往前枚举 如果当前gcd前缀带来的贡献<0 就除一下另外有几个小细节我平时没有注意到的:1.线性筛素数 ...

2018-10-27 21:49:00 207

转载 【BZOJ3732】Network(Kruskal重构树)

发现我还naive的不会Kruskal重构树所谓Kruskal重构树 就是在做Kruskal的时候 构造一颗树 对两个即将合并的联通块 新建一个节点 作为这两个联通块的父亲 且这个节点的权值就是那条相连两个联通块的权值而且这棵树很明显是一个堆那么对于最初的最小生成树 两个节点路径上的最大/小值 就是重构树上他们的lca然后就可以解决这道题了#include<bits/st...

2018-10-26 17:44:00 126

转载 【NOIP校内模拟】T1 性感♂手枪(dfs)

vis是一个三维数组vis[x][y][0]代表第一次搜到原图坐标(x,y)的x"虚"坐标,vis[x][y][1]代表第一次搜到原图坐标(x,y)的y"虚"坐标,vis[x][y][2]代表是否搜过这样既可以判断什么时候进入了无限走状态,又可以判断是否死循环了(往前走一步又退回一步)#include<iostream>#include<cstdio>#...

2018-10-26 16:45:00 193

转载 【BZOJ1106】【POI2007】立方体大作战tet(树状数组+贪心)

贪心策略:每加入一个数,如果之前已经存在它了,就直接交换因此我们需要维护距离 就用树状数组好了注意是2n#include<bits/stdc++.h>#define N 100005using namespace std;int n,tree[N],pre[N],ans;inline int lowbit(int x){ return x&(-...

2018-10-25 22:15:00 131

转载 【BZOJ1087】【SCOI2005】互不侵犯(状压dp)

对于这类棋盘问题 要关注的是这一行与前一行的关系设dp[i][j][state]表示前i行,已经放了j个国王,状态为state的方案数然后枚举i,枚举j,再枚举state,再枚举上一行last先判断state,last各自是否合法,再判断他们俩合起来会不会冲突最后答案就是最后一行所有状态的方案数之和我这个写法好像常数巨大啊。。。#include<bits/stdc++....

2018-10-25 21:26:00 91

转载 【BZOJ 3155】Preprefix sum(树状数组)

显然是不能直接开两个树状数组维护 前缀和,前缀和的前缀和。因为一旦对a[i]进行修改,将会影响许多位前缀和的前缀和我们考虑对式子变一下形Qi =S1+S2+S3+...+Si =a1+a1+a2+a1+a2+a3+...+ai =a1*i+a2*(i-1)+a3*(i-2)+...+ai* =(a1+a2+a3+...+ai)*i - (a2+a3^2+a...

2018-10-25 15:57:00 184

转载 【BZOJ 2163】【JLOI2011】飞行路线(分层图最短路)

据说这个叫分层图最短路 是个常见套路 一般就是:有k次机会可以直接通过一条边,问起点与终点之间的最短路径我的理解:就相当给dis和inque数组加了一维表示用了j次免费机会 然后在松弛的时候就有两种决策:1.走免费边 2.走要钱的边8102年了 别写spfa了#include<bits/stdc++.h>#define N 10005#define M 50005...

2018-10-25 14:45:00 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除