自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YihAN_Z

ただのあほです

  • 博客(111)
  • 收藏
  • 关注

原创 BZOJ 3572 [Hnoi2014]世界树 虚树

题目大意:给出一棵n个结点的树,每条边的长度为1。q个询问,每个询问中选出m个点,所有点会从选出的点中挑一个最近的且编号尽量小的点被其管理,求每一个选出的点管理多少点每次询问在树上选择一些点的问题可以用虚树解决,能够减少扫描无用的点浪费的时间对于虚树上的点DP一下求出与这个点最近的被选出的点(记这样的点为near点)。虚树上的每一条边省略了一些在原树上的点,这些点一定是被 边的两个端点的near点

2017-04-05 08:11:55 286

原创 BZOJ 3676 [Apio2014]回文串 回文自动机

题目大意:在一个串中一个子串的权值被定义为在串中的出现次数乘以子串长度,求所有回文子串的最大权值貌似要用后缀自动机+manacher,然而有了后缀自动机就成了裸题..这里引用一下别人的文章 Palindromic Tree——回文树【处理一类回文串问题的强力工具】#include <cstdio>#include <cstring>#include <algorithm>#define N 3

2017-04-04 20:14:13 400

原创 BZOJ 3697 采药人的路径 树的点分治

题目大意:给出一棵n个结点的树,边权为1或-1,求有多少条路径边权和为0并且能在路径上找到一个在起点与重点之间的休息点(不能是起点或终点)满足起点到休息点、休息点到终点的路径边权为0不是那么裸的点分治。 首先考虑在一棵子树中如何找到边权和为0的路径。由于边权只有1和-1,和的绝对值不会超过n,记录一下权值为i的路径分别有多少条,其中i属于[-n,n]。这样i与-i组合形成的路径边权和为0。 再考

2017-04-04 00:03:17 480

原创 BZOJ 3365 [Usaco2004 Feb]Distance Statistics 路程统计 树的点分治

题目大意:给出n(n<=50000)个结点的树,求有多少条路径长度不超过K求解有关树上的路径问题可以使用树的点分治。算法流程: 1.选取当前子树的重心,将无根树转为有根树 2.处理过当前根的路径对答案的贡献 3.标记根节点,表示删除根节点 4.递归处理每一个子树#include <cstdio>#include <cstring>#include <algorithm>#define

2017-04-02 22:49:13 335

原创 BZOJ 1741 [Usaco2005 nov]Asteroids 穿越小行星群 二分图最小覆盖

题目大意:在n*n的矩阵上有一些点,每次可以删除一行或一列上的所有点,问消除所有点的最小删除次数。每个点要么被行删除,要么被列删除。建立二分图,对于点(x,y),从左边x到右边y连一条边,对于每一条连边,必须选择两边端点中的一个,所以二分图最小覆盖即为答案。 结论:二分图最小覆盖等于最大匹配(证明见百度百科Konig定理)#include <cstdio>#include <cstring>#

2017-04-02 08:57:10 705

原创 BZOJ 3221 [Codechef FEB13] Obserbing the tree树上询问 树链剖分 主席树维护区间加等差数列

题目大意:给出一棵树,每个结点初始均为0,要求支持以下操作:路径加等差数列,询问路径上结点权值和,回到之前的某个版本调到吐血。很明显可以看出需要树链剖分+主席树来解决,由于需要在主席树上区间修改所以标记永久化。 区间维护等差数列需要在每个结点上维护 首项 和 公差。 树链剖分时在路径上加等差数列需要讨论,细节比较多,详见代码。 (我看错题了..注意回到某个版本并不舍弃在这之间的版本)#incl

2017-04-02 00:15:30 714

原创 BZOJ2321 [BeiJing2011集训]星器 能量守恒定律

题目大意:在一个二位矩阵上有一些星器,把两个不相邻的星器互相靠近一格会产生两个星器距离的能量,给出始末状态,求产生的最大能量。以前偶然间看过这道题的题解,用到了能量守恒定律 在neither_nor看这道题的时候我告诉他这道题是物理以后就滚回去看了题解… 他自己推出来了一个和网上都不一样的做法,果然是神犇,%%%可以把两个星器的移动以后产生的能量看成是移动消耗的能量,这样根据能量守恒,计算出始末

2017-04-01 18:32:02 634

原创 BZOJ 1004 [HNOI2008]Cards Burnside引理

题目大意:给出n张牌,分别染a张红色,b张蓝色,c张绿色(n=a+b+c),给出m个置换,问不同的染色方案。置换群中的染色方案问题可用Burnside引理解决。Burnside引理可以借助百度百科 中应用的例1理解,或者参考白书理解。现在要求出不动点的个数。每个置换中都有若干个循环,不动点在一个循环中的颜色必须相同。可以转化成背包问题,将每个循环看作是一个物品,物品的重量为循环元素个数。#inclu

2017-03-29 16:48:10 496

原创 为什么p为质数时在模p意义下(p-1)!的逆元等于p-1

证明:当p为质数时,(p-1)!的逆元为p-1。若(p-1)!的逆元为p-1,则有

2017-03-28 16:11:09 1704

原创 BZOJ 1005 [HNOI2008]明明的烦恼 Prufer序列 Python

题目大意:给出标号为1到N的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树?Prufer序列详见百度百科这样就可以将问题转化成组合问题度数为d的点会在序列中出现d-1次 记rest为数列中的剩余位置,剩余位置一定放不限制度数的点,暂时将不限制度数的点视为相同元素 全部方案为(n-2)!,将同一元素不同排列去重,即除以(d-1)! 记不限制度数的点的个数为cnt。不

2017-03-27 11:49:30 508

原创 BZOJ 1010 [HNOI2008]玩具装箱toy 斜率优化

设状态f(i)表示将前i个玩具装箱后的最小费用,sum(i)表示前i个玩具的长度(c值)和 易得状态转移方程 其中 0 < j < i 为了简化式子,记 将上式代入,开方1 则对于所有可能的 记2 将上式移项后代入,得到 现在要使b最小,k不变,若固定x,则y越小,b越小,所以维护一个下凸壳。 可以看出x与查询斜率k均单调递增,维护一个有关斜率的单调队列即可。#inclu

2017-03-23 21:52:27 633 1

原创 BZOJ 2618 [Cqoi2006]凸多边形 半平面交

#include #include #include #define N 1505using namespace std;const double eps=1e-6;int dcmp(double x) { return fabs(x)0 : x>-eps ? 1 : -1; }struct Point { double x,y; Point(double _x=0,

2017-03-22 21:25:40 418

原创 BZOJ 2342 [Shoi2011]双倍回文 Manacher

题目大意:给出一个串,求最长双回文串。其中定义s’为s的镜像串,则s+s’是一个回文串,当串ss=s+s’+s+s’时称ss为双回文串。首先想到用manacher处理出每个字符处的最长回文半径。由于不可能存在两个奇数长度的回文串拼在一起的双回文串,所以只有以’#’为中心的回文半径是有用的。记f(i)为以串s中的位置i的后面的位置为对称轴,最长的回文半径。对于一个对称轴x,我们要找到一个最长的串s用l

2017-03-22 15:54:50 487

原创 BZOJ 1670 [Usaco2006 Oct]Building the Moat护城河的挖掘 凸包

题目大意:给出n个点,求包围所有点的多边形的最小周长。裸凸包,练手题。注意极角排序从下标为2的位置开始排…#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#define N 5005using namespace std;inline int sq(int x) { return x*x; }

2017-03-21 14:45:43 373

原创 BZOJ 1718 [Usaco2006 Jan] Redundant Paths 分离的路径 双联通分量

题目大意:给出n个点,m条边的图,问最少加入多少边可以使图中任意两点至少有两条不相交的路径。双联通分量缩点,将图变成一棵树,叶子之间互相连可以保证加的边最少,答案为(叶子节点+1)/2双联通分量和强连通分量写法很像,不会双联通分量的童鞋类比一下强连通分量即可。#include <cstdio>#include <cstring>#include <algorithm>#define N 500

2017-03-21 10:55:32 709

原创 BZOJ 2081 [Poi2010]Beads 哈希

题目大意:给出一个长为n的数字串,将串分块,块的大小可为[1,n]内的任意整数。每块中的串必须完整,块内的串可以翻转,求不同的串的个数枚举块大小哈希暴力就好。根据调和级数时间复杂度为O(nlogn) 这题卡模数,自己试了一些都不行 最后直接照alone_wolf抄了一波 BASE=2333,MOD=98754321 可以过#include <cstdio>#include <map>#d

2017-03-21 09:38:44 401

原创 BZOJ 3239 Discrete Logging BSGS

题目大意:对于,给定a,b,p,求x,其中p为质数。裸Baby-step-Giant-step这里写的还不错#include <cstdio>#include <algorithm>#include <cmath>#include <map>using namespace std;typedef long long LL;LL f_pow(LL x,LL y,LL MOD) {

2017-03-20 19:09:46 325

原创 BZOJ 1101 [POI2007]Zap 莫比乌斯反演

题目大意:求看到gcd(i,j)==d 首先想到把i,j同时除d,变成统计互质的数的个数。 令题目转化为求 想统计众多式子中等于1的个数,可以想到莫比乌斯函数的一个性质 (这里的d不同于题目中的d,题目中的d已经没用了)令上式中的,则代入原式有 将条件转换一下,得到 将式子由枚举i,j转换成枚举d,得到 而(a’/d)与(b’/d)的取值在一定区间内不会发生变化,分块预处理,

2017-03-20 16:51:52 357

原创 POJ 2187 Beauty Contest 旋转卡壳

题目大意:给定n个点,求距离最远的两个点之间的距离,输出最远距离的平方旋转卡壳模板题。#include <cstdio>#include <algorithm>#include <cstring>#define N 50005using namespace std;inline int sq(int x) { return x*x; }struct Point { int x,y

2017-03-19 22:17:55 327

原创 BZOJ 1297 [SCOI2009]迷路 递推 矩阵乘法

题目大意:有向图有 n(n<=10) 个节点,有若干条有向边,经过一条边需要花费一些时间。从节点 0 出发,必须恰好在 T(T<=1000000000) 时刻到达节点 N-1。 总共有多少种不同的路径? 注意:不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。若知道第i秒的方案,可以推出后面10秒内的部分方案。设第i秒的经过节点j的方案数为f(i,j),则f(i,j)=sigma{f(i-k

2017-03-17 16:46:12 373

原创 BZOJ 3832 [Poi2014] Rally 拓扑排序

题目大意:给出一个DAG,要求删掉一个点之后使最长路最小,求删掉的点和最长路长度。给出题人跪了orz先考虑不删点的情况。想求一个图的最长链,在DAG应尝试DP,但起点、终点都不能固定,怎么转化呢?既然会求固定起点与终点的最长链,就强制固定一个点让其在此开始或结束,因此想到设置一个超级源S与超级汇T,求S到T的最长链后减2即为答案。下面考虑删除点。枚举每一个点将其删除,求得图中最长链,就

2017-03-17 10:15:44 605

原创 BZOJ 3143 [Hnoi2013]游走 高斯消元

题目大意:给定一个n个点m条边的无向连通图。在该图上进行随机游走,起点为1号顶点,每一步以相等的概率随机选择当前顶点的某条边,沿着这条边走到下一个顶点,获得等于这条边的编号的分数,到达N号顶点时游走结束,总分为所有获得的分数之和。对这M条边进行编号,使获得的总分的期望值最小。每条边随意编号,自然是使走得多的边的编号尽量小。问题转为求每条边的期望次数,而边走的次数又是由点转移的,首先要求出每个点

2017-03-17 09:05:05 491

原创 BZOJ 2946 [Poi2000]公共串 后缀自动机

题目大意:给出几个由小写字母构成的单词,求它们最长的公共子串的长度。后缀自动机练手题。后缀自动机原理详见CLJ的课件将一个串建成后缀自动机,其他串放到自动机里去匹配,对于每一个串在每一个状态处记录一下此串在本状态下匹配的最长长度。对于每一个状态,将所有串匹配的最长长度取一个最小即所有串在当前状态下最长的公共子串,用这个长度更新答案即可。需要注意的地方是匹配到一个位置后要用其更新parent。#inc

2017-03-17 07:38:26 388

原创 BZOJ 1033 [ZJOI2008]杀蚂蚁antbuster 模拟

Warning!本题解与代码没有任何参考意义题目大意:杀蚂蚁。题目分析:小心别让蚂蚁杀了。 请欣赏我又长又屎的代码///Enter the Gamevoid Run_Game();main() {Run_Game();}///Dim Basic Object#include <cstdio>#include <cmath>using namespace std;inline int

2017-03-15 18:25:18 624

原创 BZOJ 2132 圈地计划 最小割

题目大意:有一个n*m的矩阵,在矩阵中填1或2会得到不同的权值。相邻的两个格子数字不相同会得到额外的权值,求最大权值最小割模型:同一事件两种选择获得不同收益,一定条件下有额外收益,求最大收益。在本题中,相邻格子填不同数字会获得额外收益,于是将矩阵黑白染色(i+j&1),每个黑色格子与S连边代表填1,与T连边代表填2,白色反过来。在相邻的两点之间连一条容量为收益的边。跑一边最大流求最小割用总和减去即为

2017-03-13 18:26:46 308

原创 BZOJ 2696 航班安排 费用流

题目大意:K架飞机,N个机场,以0..N-1编号,其中0号为基地机场,每天0时刻起飞机从该机场起飞,并不晚于T时刻回到该机场。M个包机请求,每个请求为在s时刻从a机场起飞,在恰好t时刻到达b机场,可以净获利c。机场之间来往有花费。求最大收益。将每一个请求拆成两个点,在两个点之间连一条费用为负的完成请求x的利润,流量为1的边,表示完成请求获得了利润且只能完成一次。在0时刻可以选择完成任意一个请求x,若

2017-03-13 14:12:48 457

原创 BZOJ 3931 [CQOI2015]网络吞吐量 最短路+最大流

题目大意:每个点有流量限制vi,只有在从起点到终点的最短路径上的边才可以走,求最大流量。将每个点分成入点与出点,入点与出点连一条vi的边(除起点与终点),最短路径上的边的流量为INF。1.网络流建图时若边不从0开始存一定要注意异或找反边有可能是错误的 2.数组又开小了QAQ#include <cstdio>#include <cstring>#include <queue>#include

2017-03-13 08:59:19 333

原创 BZOJ 2595 [Wc2008]游览计划 SPFA+斯坦纳树 or 插头DP

题目大意:有n*m的方格,每个格子有一个非负权值v(i,j),现要求选出若干个格子,使得权值为0的格子联通且选出格子的数字和尽量小。SPFA算法的优化及应用中的P20,3.2在一类状态转移阶段性不明显的动态规划中的应用。这里暂不介绍插头DP的做法。#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#d

2017-03-08 18:51:26 397

原创 BZOJ 1026 [SCOI2009]windy数 数位DP

题目大意:求在[l,r]中不含前导零且相邻两个数字之差至少为2的正整数的个数数位DP 我的代码写的这么有道理自己慢慢看吧#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int DP(int x) { if(!x) return 0; char s[50]; sprin

2017-03-08 14:35:37 343 1

原创 BZOJ 2226 [Spoj 5971] LCMSum 数论

题目大意:求 (lcm为最小公倍数) 将lcm转化一下,把常量提到循环外,变为 枚举gcd,将式子化为 这里对循环里面的i乘以d,但对于限制i的条件来说就是除以d 对于里层的sigma求和,可以利用欧拉函数的性质:小于n的质数的和为n*phi(n)/2 答案为 线性预处理O(n),询问O(1)#include <cstdio>#include <cmath>#define

2017-03-07 22:53:12 473

原创 BZOJ 2705 [SDOI2012]Longge的问题 数论

题目大意:求设d=gcd(i,n),将gcd相同的放在一起计算,将式子从枚举i转化成枚举d。当满足表达式exp时[exp]为1,否则为0,则原式转化为 不容易求出gcd等于d的数的个数,但是可以求出gcd等于1(也就是互质)的数的个数,将i除以d,变为 #include <cstdio>#include <cmath>using namespace std;typedef long l

2017-03-07 17:20:17 273

原创 BZOJ 1257 [CQOI2007]余数之和sum 数论

题目大意:求将取余变为除法 n*k直接计算,k/i至多有2*sqrt(k)种取值,对于每个值将i求和计算。时间复杂度O(sqrt(k))#include <cstdio>#include <algorithm>using namespace std;long long n,k,ans;int main() { scanf("%lld%lld",&n,&k); long lo

2017-03-07 16:18:17 422

原创 BZOJ 2724 [Violet 6]蒲公英 分块

题目大意:有n个数,给出m个询问,求[l,r]的众数,强制在线经典的区间众数问题。众数不满足区间加法,线段树这种数据结构就失去了作用。那么就暴力统计每一个区间的众数,时间复杂度O(mn),TLE于是采用分块的思想优化,将区间分成sqrt(n)块,预处理每个块的信息,包含一整块的直接利用预处理的信息;不在一整块的暴力统计。众数只可能产生在 区间内所有完整的块合在一起的大块的众数 与 不完整的块的数

2017-03-01 11:08:52 423 1

原创 BZOJ 3262 陌上花开 树套树 (CDQ分治)

题目大意:有n个三元组(a,b,c)。定义一个三元组A大于另一个三元组B当且仅当A的三个元素都不小于B的三个元素.统计出大于(0~n-1)个三元组的数量。有三个元素,首先用排序把a弄掉,对于(b,c)两个元素可以看做是平面上的点,利用树套树第一维树状数组,第二维Treap可以解决查找平面上在一个点左下方的点的个数。当然也可以用CDQ分治来解决,要比树套树快很多(然而我就是喜欢树套树)#include

2017-02-27 19:07:30 347

原创 BZOJ 1857 [Scoi2010]传送带 三分

题目大意:在一个2维平面上有两条线段,分别为线段AB和线段CD。在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R。现在想从A点走到D点,最少需要走多长时间根据常识一定是在分别在传送带上走一段,在平地上走一段。答案关于在两条传送带上走的距离是单峰的(具体证明) 然后三分搞一搞就好了#include <cstdio>#include <cmath>#include <algor

2017-02-27 18:53:06 360

原创 BZOJ 1823 [JSOI2010]满汉全席 2-SAT

题目大意:给出n种食材,m个评审员,每种食材能做成满式或汉式,每位评委想吃两种菜式,做出一种即可,问能否有一种做菜方案满足所有评委典型的2-SAT模型。来看看建图吧。将一种食材分成4个点,做成满式,不做成满式,做成汉式,不做成汉式。 对于每一个评委的要求x,y,若不做x就要做y,若不做y就要做x,分别连边。 对于每一种食材,若不做成满式就做成汉式,若不做成汉式就做成满式。 Tarjan缩点以后

2017-02-22 16:26:31 419

原创 BZOJ 2084 [Poi2010]Antisymmetry Manacher

题目大意:对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串。现在给出一个长度为N的01字符串,求它有多少个子串是反对称的。定义中“将其反过来以后和原串相同”让我想起了回文串。101010是一个“反对称”的字符串,可以发现若将回文串定义中的 逻辑相等 换成 两数异或 ,就变成了反对称串的定义。于是可以用manacher算法在O(n)时间内求出所有最长

2017-02-22 13:52:31 581

原创 BZOJ 1512 [POI2006]Pro-Professor Szu Tarjan强连通分量 DP

题目大意:给定一张n个点,m条边的图(可能有(自)环),给出一个终点,求出到终点方案数最大的所有点。求到终点的方案的问题,可以想到转化成将边反向以后求终点到所有点的方案。题中说到可能有环,那就用Tarjan算一下强连通分量缩点。对于每一个size>1的点都存在INF条路径。将图转化为DAG后就可以用DP来解决计算方案数的问题。详见代码。#include <cstdio>#include <algo

2017-02-21 20:50:24 652

原创 BZOJ 1001 [BeiJing2006]狼抓兔子 最短路

题目大意:给出一张左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(x,y+1) 3:(x,y)<==>(x+1,y+1) n,m<=1000 求最小割. 数据太大,网络流会很卡(不太清楚用一些玄学的底层优化能不能卡过去)这时我们需要用到非常神奇的结论:最小割转最短路根据欧拉公式

2017-02-17 10:08:21 419

原创 BZOJ 2434 [Noi2011] 阿狸的打字机 Fail树

2017.3.17补… 题目大意:造一台打字机(滑稽),要求支持:1.在末尾添加一个字符 2.删除结尾字符 3.打印当前字符串 4.回答打印出的第x个字符串在第y个字符串中出现了几次。询问一个字符串在另一个字符串中的出现次数可以想到利用AC自动机中构造出的Fail树的性质(类似BZOJ3172)。要如何回答询问呢?查询x在y中出现了几次,就是查询Fail树上x的子树中有多少个结点属于y.这样的话,

2017-01-17 19:55:20 383 2

空空如也

空空如也

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

TA关注的人

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