自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 再见,OI(2019退役祭)

有些话应该藏在心里,有些事情只属于自己。(想了一下,自己的OI生涯、自己所经历的事情还是留在自己的心里吧,一是自己文笔不好,二是每个人的世界观不同对事情的看法不同)不要轻易地去评价一个人,每个人背后都有属于自己的故事。转眼自己在机房已经过去了一年半的时间,从刚刚来到高中,到现在退役了,感觉自己真的变了很多。这段时间经历了很多,开心的也好,不开心的也罢,这些故事都是我重要的一部分。...

2019-04-04 19:12:00 279

转载 [JSOI2018]战争(闵可夫斯基和)

害怕,可怜几何题果然不会题目就是说给你两个凸包,每次询问给你一个向量 \(c\) 问你能不能从两个凸包 \(A\) , \(B\) 里分别找到一个点 \(a\) , \(b\) 满足 \(a+c=b\) 。考虑怎样的向量可以满足。发现只有让B中的每一个点-A中的每一个点的集合中的向量可以满足。因为把上面的式子化一下就是 \(c=b-a\) 。凸包B中的点集减去凸包A中的点集。这...

2019-03-27 22:09:00 261

转载 luogu P4756 Added Sequence(凸包+思维)

一眼望去不会。考虑问题中的\(f(i,j)=|\sum_{p=i}^{j}​a_p​ |\)的实际意义。其实就是前缀和相减的绝对值。\(f(i,j)=|\ sum[j]-sum[i-1]\ |\)\(f(i,j)=max(sum[j]-sum[i-1],sum[i-1]-sum[j])\)那加上x呢。\(f(i,j)=max[(sum[j]+xj)-(sum[i-1]+x(i...

2019-03-27 21:52:00 225

转载 [八省联考2018]劈配(最大流)

从源到每一个人连一条容量为 \(1\) 的边。从每一个导师到汇连一条容量为导师战队人数的边。第一问我们依次枚举每一个学员,然后再依次与第 \(1\)至 \(m\) 志愿的老师连边,如果与第 \(i\) 志愿的导师连边跑最大流使得最大流改变,说明找到了一个导师与自己对应。自己的最小的能实现的志愿就是 \(i\) 。如果找不到志愿i的导师要把与志愿i的导师连的边删掉。不删听说会T,一开始...

2019-03-27 21:34:00 143

转载 [SHOI2012]信用卡凸包(凸包+直觉)

这个题还是比较有趣。小心发现,大胆猜想,不用证明!我们发现所谓的信用卡凸包上弧的长度总和就是圆的周长!然后再加上每个长宽都减去圆的直径之后的长方形的凸包周长即可!#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algo...

2019-03-27 21:19:00 110

转载 [ZJOI2015]地震后的幻想乡

题目看完之后就知道不会做。然后题目的提示十分重要:对于 n 个 [0,1] 之间的随机变量 x1,x2,...,xn,第k小的那个的期望值是 k/(n+1)。假设我们知道 \(m\) 条边的权值,我们做一遍克鲁斯卡尔最小生成树。答案就是最小生成树中的边权最大值。也就是加入后恰好使图联通的边权。根据题目的提示:本题的答案就是最小生成树的最大边权在 \(m\) 条边中的期望排名\(/ ...

2019-03-25 09:31:00 147

转载 浅谈KMP算法

不想写题。不如写写算法总结?KMP前(che)言(dan)以前都不知道 \(KMP\) 为什么叫 \(KMP\) ,现在才明白:该算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的,以其名字首字母命名。\(KMP\) 可以在\(O(n+m)\)的时间复杂度内解决判定一个字符串\(A[1\)~ \(N]\)是否为字符串\(B[1\)~\(M]\)...

2019-03-25 09:15:00 125

转载 浅谈AC自动机

AC自动机前(che)言(dan)Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出 \(n\) 个单词,再给出一段包含 \(m\) 个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)\(Trie\) 和 \(KMP\) 模式匹配算法的基础知识。Trie这里的...

2019-03-20 09:57:00 165

转载 爱德华差值法?(卡格朗日差值法)

前(che)言(dan)拉格朗日插值法最早被英国数学家爱德华·华林于1779年发现,不久后(1783年)由莱昂哈德·欧拉再次发现。1795年,拉格朗日在其著作《师范学校数学基础教程》中发表了这个插值方法,从此他的名字就和这个方法联系在一起。所以我把拉格朗日插值法叫做爱德华插值法那么这个东西可以做什么呢?知道一个 \(N\) 次多项式函数上的 \(N+1\) 个不同的点就可以求得这...

2019-03-17 20:16:00 167

转载 回文利器——回文自动机

前(che)言(dan)回文树,也叫回文自动机,是2014年被西伯利亚民族发明的(找不到百度百科,从一篇博客里蒯过来的)作为解决回文问题的大杀器,回文自动机功能强大,实现技巧充满智慧。——dalao一个性质一个长度为N的字符串最多有N个不同的回文子串。为什么?我们考虑加入一个字符能产生多少新的回文子串。现在加入红圈位置的字符,假设绿框框起的都是回文串。然后我们发现一...

2019-03-16 20:13:00 748

转载 [SCOI2016]萌萌哒(倍增+并查集)

当区间\([a,b]\)和\([c,d]\)对应相等时。我们把两个区间对应位置上的数所在并查集合并。最后并查集的数量为\(num\)答案就是\(9*10^num\)因为是个数,不能有前置\(0\)。但是两个区间对应位置上的数所在并查集合并太浪费时间。怎么办。考虑使用倍增。我们用\((i,j)\)代表\([i,i+(1<<j)-1]\)这个区间然后任何一个区间最多可...

2019-03-12 22:19:00 219

转载 [SDOI2016]生成魔咒(后缀自动机)

看一眼题。本质不同的字串数。嘴角微微上扬。每一次加一个数输出一个答案。笑容渐渐消失。等等,\(SAM\)好像也可以求本质不同的字串。设当前字符串用\(x\)表示,每次插入完成后\(ans\)加上\(len[x]-len[fa]\)就行了。嘴角微微上扬。等等,炸空间了。笑容渐渐消失。用\(map\)不就得了。嘴角再次上扬。写完过了。笑出了声。翻题解,时看到了\(S...

2019-03-12 22:05:00 101

转载 [SDOI2016]数字配对(费用流+贪心+trick)

重点是如何找到可以配对的\(a[i]\)和\(a[j]\)。把\(a[i]\)分解质因数。设\(a[i]\)分解出的质因数的数量为\(cnt[i]\)。设\(a[i]\geq a[j]\)那么\(a[i]\)可以和\(a[j]\)配对需要满足\(a[i]\)%\(a[j]==0\)&&\(cnt[i]==cnt[j]+1\)证明显然。然后我们按\(cnt[i]\...

2019-03-11 22:07:00 183

转载 [SDOI2018]战略游戏(圆方树+虚树)

喜闻乐见的圆方树+虚树图上不好做,先建出圆方树。然后答案就是没被选到的且至少有两条边可以走到被选中的点的圆点的数量。语文不好,但结论画画图即可得出。然后套路建出虚树。发现在虚树上DP可以得出答案。所以在虚树上DP即可。代码极丑#include<iostream>#include<cstring>#include<cstdio>#i...

2019-03-11 21:41:00 159

转载 [六省联考2017]期末考试(枚举)

惊了,省选考枚举。显然,学生等待的代价只和最后一科成绩公布的时间有关。然后\(b_i\leq1e5\)。所以就可以枚举最后一科结束的时间\(T\)。算出让最后一科在t时间出成绩的最小代价。取个\(min\)就行了。怎么求让最后一科在T时间出成绩的最小代价?当\(B<=A\)时直接把所有公布时间大于\(T\)的科目,提前。否则消耗\(A\)的代价让公布时间小于\(T\...

2019-03-11 21:31:00 117

转载 CF487E Tourists(圆方树+堆+链剖)

本题解并不提供圆方树讲解。所以不会圆方树的出门右转问yyb没有修改的话圆方树+链剖。方点的权值为点双连通分量里的最小值。然后修改的话圆点照修,每一个方点维护一个小根堆。考虑到可能被菊花卡死。我们每一个方点只维护儿子的最小值。当询问的路径\(lca\)为方点时,\(ans=min(ans,w[fa[lca]])\)即可。#include<iostream>#i...

2019-03-07 22:04:00 138

转载 51nod 1302(贪心+平衡树)

能推出一些性质。矩形肯定是全部躺着或全部立着比较优。如图x1显然等于x2,y1显然小于y2。所以我们就让它们都躺下吧。然后一定有一组的宽为宽最小的矩形的宽。然后我们枚举另一组的宽最小的矩形。(当然宽在最小的矩形和枚举的矩形之间的矩形都跟宽最小的矩形一组)之后就只剩下长的影响了。假设现在还剩下这些长度(排好序):1 2 3 4 5 6 7 8 9当然是把一段的矩形分在一...

2019-03-06 21:59:00 189

转载 BZOJ 2314 士兵的放置(支配集)

显然是\(DP\)。设\(dp[i][0/1/2]\)代表以i为根且\(i上有士兵放置/i被控制但i上没有士兵/i没有被控制\)的最小代价。\(g[i][0/1/2]\)代表对应的方案数。然后运用乘法原理和加法原理转移即可。转移是我写过的树形\(DP\)里比较\(X\)(不可描述)的。所以还是看代码吧。。(虽然可能也看不懂)#include<iostream>#...

2019-03-06 21:42:00 148

转载 BZOJ 1016 最小生成树计数(矩阵树定理)

我们把边从小到大排序,然后依次插入一种权值的边,然后把每一个联通块合并。然后当一次插入的边不止一条时做矩阵树定理就行了。算出有多少种生成树就行了。剩下的交给乘法原理。实现一不小心就会让程序变得很丑#include<iostream>#include<cstring>#include<cstdio>#include<cmath&gt...

2019-03-05 21:33:00 154

转载 sdoi2013 spring(hash+容斥)

大体思路是先求出来\(f[i]\)代表有至少\(i\)个位置相同的点对数。然后就已经没什么好害怕的了(跟BZOJ3622一样)然后这个\(f[i\)]怎么求呢?最无脑的方法就是枚举位置,然后\(hash\)表记一下每种情况出现多少次然后把\(\sum_{情况个数}{情况次数*(情况次数-1)}\)加到\(f[\)枚举的位置个数\(]\)。就行了。发现这个方法复杂度足以通过此题。...

2019-03-05 21:27:00 105

转载 51nod 1301 集合异或和(DP)

因为当\(A<B\)时,会存在在二进制下的一位,满足这一位B的这一位是\(1\),\(A\)的这一位是\(0\).我们枚举最大的这一位。设为\(x\)吧。设计状态。\(dp[i][j][1/0]\)代表考虑了前i个数,异或和为j的情况下\(B\)的第\(x\)位为\(1\)或\(0\)有多少种情况。然后随便转移一下,再随便统计答案一下就好了。如果不知道如何转移,就看代码吧。...

2019-03-05 21:15:00 153

转载 51nod 1576 Tree and permutation(树的重心+dfn序)

乍一看我不会。先不考虑加点。先考虑没有那个除\(2\)。考虑每一条边的贡献,假设某一条边把这棵树分成大小为x,y的两个部分。那么这条边最多可以被使用\(min(x,y)*2\)次(因为有进有出),即贡献最大为\(min(x,y)*2*\)这条边的权值。那么能不能让每一条边的被使用达到最大呢?显然可以。那怎么快速算这个东西呢?不可能每加一个点就dfs一遍吧。那样就\(T\)飞...

2019-03-05 21:07:00 148

转载 BZOJ 4145 [AMPPZ2014]The Prices (状压DP)

一般的思路是\(dp[i][j]\)代表前i个商店购买集合为j的最小费用,枚举每一个商店然后枚举子集。复杂度\(O(n3^m)\)过不了。先把\(dp[i][j]\)设为\(dp[i-1][j]\)表示钦定在这个商店购物,然后在\(dp[i]\)中做背包。具体就是枚举每一个商品买不买。然后惊奇的发现这样复杂度为\(O(nm2^m)\)可以通过本题。#include<cstr...

2019-03-04 08:49:00 159

转载 BZOJ 2260 商店购物(最小树形图)

不会最小树形图的出门左转其实如果确定每种商品第一件的购买顺序,那么剩下的商品肯定是以最优惠价格购买的。如何确定各种商品第一件购买时的最小价值呢?考虑如果购买了\(a_i\)这种商品,那么就能以\(c_i\)的价格购买\(b_i\)这种商品,考虑从\(a_i\)往\(b_i\)连权值为\(c_i\)的有向边。初始建一个额外的\(S\)点往所有点i连权值为\(v_i\)的有向边。然...

2019-02-26 14:23:00 163

转载 BZOJ 4006 [JLOI2015]管道连接(斯坦纳树+子集DP)

明显是一道斯坦纳树的题。然而这题只需要属性相同的点互相连接。我们还是照常先套路求出\(ans[s]\)。然后对\(ans[s]\)做子集DP即可。具体看代码。#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algor...

2019-02-26 14:12:00 102

转载 BZOJ 2595 [Wc2008]游览计划(斯坦纳树)

斯坦纳树的板子题。斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。最小生成树是在给定的点集和边中寻求最短网络使所有点连通。而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。然而我解决问题并不需要你知道什么关于斯坦纳树的知识。会状压(子集)DP和最短路就行了。设dp[s][i][j]为使s集合中的景点都与点(i,j)相连的最小代价。然后转...

2019-02-26 14:03:00 126

转载 BZOJ 5180 [Baltic2016]Cities(斯坦纳树)

斯坦纳树的板子题。斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。最小生成树是在给定的点集和边中寻求最短网络使所有点连通。而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。然而我解决问题并不需要你知道什么关于斯坦纳树的知识。会状压(子集)DP和最短路就行了。设dp[s][i]为使s集合中的景点都与点i相连的最小代价。然后转移有:\(d...

2019-02-26 13:55:00 165

转载 51nod 1392 装盒子(费用流)

如果权值为\(1\)就是最长反链。然而并不是。考虑用费用流。把每一个盒子\(i\)拆成i和\(i+n\)。设源点为\(S\),汇点为\(T\)。\(S\)向每一个i连容量为\(1\),费用为\(L[i]*W[i]\)的边每一个\(i\)向\(T\)连容量为\(1\),费用为\(0\)的边。每一个\(i\)向\(i+n\)连容量为\(1\),费用为\(0\)的边。如果j能被i...

2019-02-26 11:48:00 137

转载 CF739E Gosha is hunting(费用流,期望)

根据期望的线性性答案就是捕捉每一只精灵的概率之和。捕捉一只精灵的方案如下:1.使用一个\(A\)精灵球,贡献为\(A[i]\)2.使用一个\(B\)精灵球,贡献为\(B[i]\)3.使用一个\(A\)精灵球和一个\(B\)精灵球,贡献为\(A[i]+B[i]-A[i]*B[i]\)然后我们可以这样建图:源点\(S\)向两个精灵球连容量为精灵球数量,费用为\(0\)的边。\(...

2019-02-26 11:30:00 144

转载 CF343E Pumping Stations(最小割树)

没学过最小割树的出门左转。我们已经知道了两点的最小割就是最小割树上,对应两点之间路径的权值的最小值。找到最小割树中权值的最小的边。那么一定是先选完一侧的点在选完另一侧的点。因为当前边最小,那么左右横跳的贡献最小(比在一侧内跳的贡献小)。所以一直递归下去就行了。#include<iostream>#include<cstring>#include&l...

2019-02-26 11:16:00 173

转载 51nod 1325 两棵树的问题(最大权闭合子图)

首先如果点权全都为正,就可以直接选所有的点。活在梦里。。考虑枚举一个点\(i\),作为我们选择的集合中的一个点。然后我们把另一个点\(j\)选入集合的时候必须把两棵树中\(i\)和\(j\)路径上的点全都选入集合。似乎想到了什么。闭合子图。不就是一个最大权闭合子图吗。然后我们按最大权闭合子图的模型建图。所有正权的点跟\(S\)连容量为权值的边。所有负权的点跟\(T\)连...

2019-02-26 10:59:00 143

转载 51nod 1321 收集点心(最小割)

给出一种最小割的方法。设\(num1[i]\),\(num2[i]\)为第i种形状的点心的两种口味的数量设\(type[i]\),\(type[i]\)为第i种形状的点心的两种口味假设\(num1[i]<num2[i]\)考虑几种最优的购买方案:1.买\(num1[i]+1\)个点心。这样一定可以得到\(type2[i]\)。2.买\(num2[i]+1\)个点心。这样...

2019-02-26 10:43:00 139

转载 [zjoi2016]小星星 (容斥+DP)

我们先用树形DP,求出选取集合S中的点,满足连通性的但是标号可重的方案数,贡献给F(i)(1\(\leq\)i\(\leq\)\(\mid S\mid\)),也就是我们要处理出F(i)代表取至多i个点的方案数。然后容斥一下就求出恰好选i个点的方案数。卡一下常就能过了。#include<iostream>#include<cstring>#include&...

2019-01-15 16:13:00 167

转载 一些数论函数题

luogu2257 YY的GCD答案为:\(\sum\limits_{p\in prime}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==p]\)\(=\sum\limits_{p\in prime}\sum\limits_{i=1}^{\lfloor\frac{n}{p}\rfloor}\sum\limits_{j=1}...

2019-01-13 14:03:00 180

转载 HDU 6051 If the starlight never fade(原根+推式子)

题目大意:设\(f(i)\)为使\((x+y)^i \equiv x^i (mod\ p)\)成立的(x,y)的对数。其中\(1 \leq x \leq p-1 , 1\leq y\leq m\),m,p给定且p是一个质数。求\(\sum_{i=1}^{p-1}i*f(i)\),p<=1e9+7,m<=p-1思路我们考虑用原根去代换x,y。设g为p的一个原根,\(g^...

2019-01-11 21:29:00 150

转载 hdu5321 beautiful set(莫比乌斯反演)

设\(cnt[i]\)为权值为i的倍数的数的数量。\(f0[i],f1[i]\)分别为两种方法\(gcd=i\)的贡献是i的多少倍。\(F0[i],F1[i]\)分别为两种方法\(gcd\)为\(i\)的倍数的贡献是i的多少倍。\(F0[i]=\sum_{j=1}^{cnt[i]}A_{cnt[i]}^{cnt[i]-j}*(n-j)!*(n-j+1)\)\(F1[i]=\sum...

2019-01-11 07:53:00 133

转载 BZOJ 5104 Fib数列(二次剩余+BSGS)

斐波那契数列的通项:\[\frac{1}{\sqrt{5}}((\frac{1+\sqrt{5}}{2})-(\frac{1-\sqrt{5}}{2}))\]设T=\(\sqrt{5}*N\),\(y=\frac{\sqrt{5}+1}{2}\)原式可化为\(y^n-(-\frac{1}{y}^n) \equiv T(mod\ p)\)我们设\(t=y^n\)原式可继续化为\(...

2019-01-10 09:41:00 175

转载 高次同余方程,二次同余方程学习笔记

写在前面文章作者实力有限,本文可能有个别错误,如有错误请友好地指出。高次同余方程就是\(x^a\equiv b(mod\ p)\)二次同余方程就是\(x^2 \equiv b(mod \ p)\)我们接下来讨论解这两种方程的方法。那么有一个问题。既然知道了高次同余方程的解法,就可以直接用解高次同余的方法解二次剩余方程。为什么要单独学二次同余方程呢。因为我区间加区间修改用的是...

2019-01-09 20:24:00 832

转载 CF587F Duff is Mad(AC自动机+树状数组+分块)

考虑两一个暴力1因为询问\([a,b]\)可以拆成\([1,b]\)-\([1,a-1]\)所以把询问离线,然后就是求\([1,x]\)中被\(S_i\)包含的串的数量。考虑当\([1,x-1]->[1,x]\)时我们把\(S_x\)结束节点在fail树的子树加1。然后询问就是求\(S_i\)在AC自动机上跑时经过所有点的点权用树状数组维护。设\(\sum{len[S_i]}=...

2019-01-07 21:43:00 330

转载 51nod 麦克打电话(AC自动机+树状数组)

SAM+线段树合并的裸题。但我们讨论AC自动机的做法。先建出AC自动机。考虑询问在[a,b]中出现的次数就是\([1,b]\)的出现次数-\([1,a-1]\)的出现次数。把询问离线。然后我们要求的就是第i个字符串在\([1,x]\)中出现次数。我们在从\([1,x-1]\)到\([1,x]\)的过程中把\(S_x\)放到AC自动机上跑,跑到的每一个节点都加1。然后询问就是在\(S_...

2019-01-07 21:22:00 137

空空如也

空空如也

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

TA关注的人

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