BZOJ
文章平均质量分 76
大蒟蒻syk
这个作者很懒,什么都没留下…
展开
-
[BZOJ1010] 玩具装箱toy && 斜率优化
朴素转移好写 但是化简需要技巧 一开始暴力化简感觉比圆锥曲线还难搞可以发现Sum[i]和i本身总是同时出现在式子中 合并为T[i] 把L 变为 L + 1能省去很多化简的繁琐步骤 化简完成后就没什么难度了 #include#include#include#includeusing namespace std;const int powAXN = 50000;typedef lo原创 2014-12-09 23:08:48 · 398 阅读 · 0 评论 -
[BZOJ3572][Hnoi2014]世界树 && 虚树+DP
这玩意好难啊Orz完全不理解那个模拟深搜到底是什么鬼果然像我这样的人最好早点滚粗 要简历虚树 首先要选出虚树里面的点 那么关键点和关键点的LCA都要加入到虚树中来 那我们就深搜一遍 处理出每个节点的dfn值和儿子数 按照dfn值依次枚举每一个关键节点 这样可以把同一棵子树内的节点一起找到用一个深度单调的栈来维护树中的节点 每次取出一个关键点 求出它和栈顶元素的lca 如原创 2015-04-09 13:43:33 · 1455 阅读 · 0 评论 -
[BZOJ3532][Sdoi2014]Lis && 最小字典序割
最小代价一看就是拆点最大流 问题在于如何求字典序的方案如何判断一条边是否是割边是很容易的 只需要从u出发看是否能找到一条u到v的增广路,如果存在这样的一条路径 说明该边不是割边那么我们按照C的大小来枚举每一条边 如果该边是割边 那么我们就要把它从图中删除(这样可以让一些割边不再是满流的边 这些删除的割边都是一定不与当前割边在同一割集中的割边 要让这样的边不能入选)那么我们要怎样最快的消原创 2015-04-26 21:17:10 · 1401 阅读 · 0 评论 -
[BZOJ2154]Crash的数字表格 && 莫比乌斯反演
orz PoPoQQQ 课件上的例题啊orzorz话说这种根号划分的方法好像次次都有的样子orzorzhttp://wenku.baidu.com/link?url=RRtdDApIUqzKmUDS4IOPU0MQnOLMJ6xXv0hFSajFA05YkoiGQdrN6koBLNMrmxnMs0MXXRL_ELxQfwSOvVdtSsNLaKao96PtBY63tJai903#i原创 2015-04-27 13:42:42 · 538 阅读 · 0 评论 -
[BZOJ1823][JSOI2010]满汉全席 && 2-sat
PPT:http://wenku.baidu.com/view/afd6c436a32d7375a41780f2.html这是道2-sat裸题吧 练手的#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long L原创 2015-04-29 12:49:34 · 524 阅读 · 0 评论 -
[BZOJ2946][Poi2000]公共串 && 后缀自动机
linux下面输出不打换行他还输出不出来也是溜extend里面打错了还过样例...先对第一个串建立后缀自动机 然后对于读入的每一个串的每一个位置开头的字串在自动机上进行匹配 记录自动机上每一个节点对于该串的最大匹配长度最后再DFS一遍统计答案就可以了#include#include#include#include#include#define SF scanf#原创 2015-04-25 11:20:58 · 381 阅读 · 0 评论 -
[BZOJ2555] [TJOI2015]弦论 && 后缀自动机
本来以为是一个多么神的题 弦论 多么高大上 结果 居然是后缀自动机的统计 水水的原创 2015-04-25 15:45:13 · 442 阅读 · 0 评论 -
[BZOJ3289] Mato的文件管理 && 莫队算法
由于只能相邻的两个东西交换 所以就跟统计逆序对差不多了 搞个树状数组上去就可以了#include#include#include#include#include#include#define lowbit(x) ((x) & (-(x)))#define SF scanf#define PF printfusing namespace std;typedef long lo原创 2015-04-17 17:07:46 · 412 阅读 · 0 评论 -
[BZOJ3680]吊打XXX && 模拟退火
每次随机改变当前中心坐标 然后退火 退火完成后在周围附近在搜索几次(没这个我一直过不了样例) #include#include#include#include#include#include#define PF printf#define SF scanfusing namespace std;typedef long long LL;const int MAXN = 10原创 2015-04-17 19:38:17 · 550 阅读 · 0 评论 -
[BZOJ2038][2009国家集训队]小Z的袜子(hose) && 莫队算法
用这个玩意就有个要求 就是要能快速用[L, R]的信息得到[L-1, R], [L+1, R]等相邻区间的信息 然后队询问离线 分块处理把n分成sqrt(n)块 然后按照l把每一个询问放进块里 同一个块里的询问保证r递增 这样每一l移动的长度至多是sqrt(n)*m r的移动每一块是O(n) 最多移动sqrt(n) * n 则总复杂度为O((n+m) * sqrt(n))#include原创 2015-04-17 10:10:04 · 388 阅读 · 0 评论 -
[BZOJ3529][Sdoi2014]数表 && 莫比乌斯反演+树状数组
因为这个好好地复习了一下莫比乌斯反演 结果才发现这是自己的第一篇莫比乌斯反演具体内容太长了 写了两页草稿纸 想看就去orz一下PoPoQQQ大爷吧传送门http://blog.csdn.net/popoqqq/article/details/42076231#include#include#include#include#include#define SF scanf#de原创 2015-04-26 18:36:14 · 514 阅读 · 0 评论 -
[BZOJ1176][Balkan2007]Mokia && CDQ分治+树状数组
这样的二维矩形和本身可以用树状数组在给定时间内完成 然而这时空间显然开不下了 那么我们可以用CDQ分治将操作离散化 再将所有操作按坐标排序 这样保证了在解决较大矩阵问题的时候较小矩阵内的操作已经进行了然后 就没有人然后了 总的来说CDQ分治是对多数次操作离线后再二分处理的一种方法? 然而我还是并不怎么会QAQ#include#include#include#include#in原创 2015-04-09 23:49:53 · 468 阅读 · 0 评论 -
[BZOJ1492][NOI2007]货币兑换Cash && CDQ分治+斜率优化
这种分治思想我也是醉了Orz首先对于这道题 我们可以发现 如果某一天你要买进或卖出 那一定是尽可能的买或卖那么我们就可以用一个状态f[i]表示某一天的最大收益那么就有 f[i] = (rate[j] * f[j] * a[i] + f[j] * b[i]) / (rate[i] * a[i] + b[i]那么朴素转移就很容易了 怎样优化呢令 y[j] = f[j] / (r原创 2015-04-09 20:16:48 · 457 阅读 · 0 评论 -
[BZOJ3224]Tyvj 1728 普通平衡树 && 重写平衡树
#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 500000;int n;struct Splay_Tree { int root, ncnt; i原创 2015-03-28 19:48:02 · 398 阅读 · 0 评论 -
[BZOJ1861][Zjoi2006]Book 书架 && splay
加个build 几下每个元素在树中的位置就行了#include #include #include #include #include #define SF scanf #define PF printfusing namespace std; typedef long long LL;const int MAXN = 80000;int n, m, A[MA原创 2015-03-28 21:11:46 · 516 阅读 · 0 评论 -
[BZOJ1023] [SHOI2008]cactus仙人掌图 && 仙人掌DP+单调队列
#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 50000;vector G[MAXN+10];int low[MAXN+10], dfn[MAXN+10], f原创 2015-03-22 11:51:05 · 419 阅读 · 0 评论 -
[BZOJ3671][Noi2014]随机数生成器 && 贪心
被模拟退火虐了一晚上 搞道贪心压压惊?开始看到题目下面一大段说明不明来意 后来发现丧心病狂的卡内存也是有意思.....不难看出含有最小的一个数的路径一定比不含的优 然后开始贪心每选择一个数 维护其他所有行可以取的区间#include#include#include#include#include#include#define SF scanf#define PF pr原创 2015-04-17 23:46:26 · 641 阅读 · 0 评论 -
[BZOJ3670][Noi2014]动物园 && KMP
不要问我为什么不从s开始读 我试了N久没试出来 然后用s+1开始读就爽爽哒在构造fail数组之后递推构造num数组 假设某个fail值的位置j 并且j*2 > i 说明肯定有重复的部分 继续寻找前一个fail值 #include#include#include#include#include#include#define SF scanf#define PF printf原创 2015-04-16 01:25:01 · 504 阅读 · 0 评论 -
[BZOJ4086][Sdoi2015]travel && 暴力
分别讨论K=2到K=7 吐血 膜富爷的题解#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;inline int read() { int x=0,f=1; char ch=getchar();原创 2015-06-11 19:50:40 · 1270 阅读 · 0 评论 -
[BZOJ4085][Sdoi2015]quality && 线段树 (TLE)
线段树维护F[ai-1], F[ai-1 + 1], F[ai-1 - 1], F[ai+1], F[ai+1 + 1], F[ai+1 - 1]以及两两乘积和加一的时候可以直接用递推式用保存的F值求出新的值减一的时候也可以解方程求值然后 写码农题然而此题常数太卡 在jzoj上都600ms了 BZ上还是过不去 弃疗了#include#include#include#i原创 2015-06-11 20:08:51 · 970 阅读 · 0 评论 -
[BZOJ4084][Sdoi2015]bigyration && hash
听说单hash能过23333于是乎hash乱搞一下就好了辣 然而map要TLE ....#include#include#include#include#include#include#define SF scanf#define PF printf#define idx(c) ((c)-'a'+1)using namespace std;typedef unsigne原创 2015-06-10 16:27:54 · 757 阅读 · 1 评论 -
[BZOJ3224]Tyvj 1728 普通平衡树 && treap
逗号打成分号搞了好久 艹艹艹#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;inline int read() { int x=0, f=1; char ch=getchar();原创 2015-06-07 09:25:39 · 490 阅读 · 0 评论 -
[BZOJ2806][Ctsc2012]Cheat && 后缀自动机
先把所有作文库连起来建立一个后缀自动机 对于每一个询问 把字符串拿到后缀自动机上去跑 计算出每一个位置能匹配的最大长度然后二分一个L值 用dp来检验设f[i]为前i个字符的最大匹配数 就有f[i] = max(f[j]+i-j | i-val[i] 显然i-L单调增 所以可以维护一个队列 里面存放i-L~i的元素 然后检验队首元素是否满足i-val[i] #include#inc原创 2015-06-06 16:16:23 · 1431 阅读 · 1 评论 -
[BZOJ2875][Noi2012]随机数生成器 && 矩阵+快速乘
注意要用快速乘就好#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 3;LL MOD, g, c, a, n, x0;LL mul_mod(LL x, LL k)原创 2015-06-03 09:47:02 · 378 阅读 · 0 评论 -
[BZOJ2878][Noi2012]迷失游乐园 && 树形DP
因为该图要么是一棵书 要么是一个环 所以我们分开处理 从较为简单的树入手part1:题目转化为 求一棵树上从任何一个节点出发的最长路径的期望值 显然我们可以发现全局期望值等于每个点的期望值d[i]的和除以点的数量 所以我们需要处理出每个点出发的最长路径的期望值 对于任何一个点来说 他有两种行走的方向 一种是向父亲行走 一种是向儿子行走 我们假设d[i] 表示i原创 2015-03-27 22:53:09 · 1288 阅读 · 3 评论 -
[BZOJ3242][Noi2013]快餐店 && 环套树+线段树
如果给的是一棵树那么答案显然是直径/2但是现在给的是一个环套树 那你就枚举一下环上的每条边把它删掉再求直径就好辣(显然你不会走环上的某一条边 这很显然吧- - )然后你就要求剩下来的这棵树的直径 然后n^2会爆炸 怎么办捏我们维护以环上节点为根的树的最长链s环上两点距离可以用前缀和处理(先假设枚举的第一条边是环上第一个点和最后一个点的边 这样就可以用前缀和表示了)则直径为max原创 2015-06-05 10:52:07 · 1828 阅读 · 0 评论 -
[BZOJ3240][Noi2013]矩阵游戏 && 快速幂
当我知道这题矩阵可以用费马小定理搞快速幂的时候 我眼泪都要落下来了QAQ首先求一发通项F[1][1]->F[2][1]的通项然后写成A+B的形式若a != 1 A = (a^(m-1))*c B = b*((a^(m-1))/(a-1)) * c + d若a == 1 A = c B = B * (m-1) * c +原创 2015-06-04 17:02:15 · 1384 阅读 · 0 评论 -
[BZOJ2879][Noi2012]美食节 && 动态加边费用流
看上去和修车一模一样的东西 可是数据范围大太多铁定要T然后听说了动态加边这个东西感觉虽然不能改变时间复杂度 但是还是很有用的样子每次增广后找到该次的厨师给它新增一个点 然后费用逐步递增 (最后一个菜贡献1倍 倒数第二个贡献两倍)#include#include#include#include#include#include#define SF scanf#define原创 2015-06-04 10:28:00 · 1351 阅读 · 0 评论 -
[BZOJ2876][Noi2012]骑行川藏 && 二分+拉格朗日乘数
我智商不足 无法解释清楚这些东西大爷题解传送门:http://blog.csdn.net/popoqqq/article/details/42366599另一篇很不错的:http://www.cppblog.com/prime56/archive/2012/08/13/187087.aspx大概就是lambda和vi是单调的然后二分一下#include#include#incl原创 2015-06-03 11:20:58 · 1378 阅读 · 0 评论 -
[BZOJ2877][Noi2012]魔幻棋盘 && 二维线段树+差分
二维线段树原来就是线段树的节点上加个线段树- - 差分以(x, y)为中心向四周进行差分 这样就不用分别维护一阶差分和二阶差分什么的(如果以(1, 1) 为中心进行差分还要分开维护 而且涉及区间修改根本无法实现嘛)还有hlq神犇提出了8二维树状数组的方法(太可怕了) 膜膜膜这代码就6K啦? 有点不敢相信#include#include#include#include#inc原创 2015-06-03 19:54:57 · 1587 阅读 · 0 评论 -
[BZOJ3669][Noi2014]魔法森林 && LCT
这道题有两个权值 我们把所有边按权值a排序 剩下的边都看成点放进一个LCT中 维护每一节点的最大权值点的位置 枚举所有的边 如果u, v连通 则删去最大的边 加入这条边否则直接加入这条边 当发现1和n连通的时候更新答案开数组的时候把val 和 MAX开成bool也是醉了orz#include #include #include #include #include #原创 2015-04-11 01:46:04 · 411 阅读 · 0 评论 -
[BZOJ3688][Noi2014]起床困难综合症 && 贪心
noip的题走错片场了的节奏吗- - #include#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const int MAXN = 100000;int n, m;int op[MAXN+原创 2015-04-16 00:27:41 · 595 阅读 · 0 评论 -
[BZOJ3506][BZOJ1552] [Cqoi2014]排序机械臂
之前一直在调自己的delete 以为树写错了 结果居然离散化错了 坑坑坑坑坑 果然还是要多膜拜膜拜hlq大牛吗 多保留一个信息Min 用Min来进行元素的查找定位删除等等 其他没啥了。。。#include#include#includeusing namespace std;#define MAXN 100000#define INF 99999999int a[MAX原创 2014-12-13 19:18:16 · 1230 阅读 · 0 评论 -
[BZOJ3932] [CQOI2015]任务查询系统 && 可持久化线段树
搞不来莫比乌斯反演的我只好搞这个了 结果把自己整的要死 Orz首先把优先级离散化 然后开可持久化线段树 区间为优先级的区间把每个任务做成两个 类似于维护差分数组的感觉 然后一个一个插入到可持久化线段树里面去 注意对任务总数的增加 及 减少注意任务有重复 所以如果区间长度为1时 返回的是 和/数量*k一晚上就搞这个了Orz果然像我这样的人最好早点滚粗 #incl原创 2015-04-07 00:48:53 · 2373 阅读 · 0 评论 -
[BZOJ2326][HNOI2011]数学作业 && 分段矩阵
这个矩阵的元素和当前的第i项的i取值有关 于是构造分段的矩阵 用(A[i-1], i-1, 1) * 矩阵B得到下一项 详情见代码#include#include#include#include#include#define SF scanf#define PF printfusing namespace std;typedef long long LL;const in原创 2015-01-08 13:22:04 · 485 阅读 · 0 评论 -
[BZOJ3108][cqoi2013]图的逆变换
检查E图是否满足 存在k 使得 i->k j->k 的同时 存在t 使得 i 和 j 与t一个有边相连一个没有边相连#include #include #include #include #define SF scanf #define PF printfusing namespace std;typedef long long LL;const int MAXN =原创 2015-03-06 22:49:41 · 912 阅读 · 0 评论 -
[BZOJ1797][Ahoi2009]Mincut 最小割 && 最小割+强连通
先跑一遍最大流 然后在残余网络里面跑强连通 跑完过后对于每一条满流边的两个端点u, v检验他们所在的强连通分量 若SCC[u] != SCC[v] 则这条边至少存在于一个最小割方案中若SCC[u] != SCC[v] 并且 SCC[u] == SCC[S] && SCC[v] == SCC[T] 那么这一条边一定在任何一个最小割方案中#include#include#incl原创 2015-04-02 11:01:53 · 611 阅读 · 3 评论 -
[BZOJ3437] 小P的牧场 && 斜率优化
如果你搞了前面的斜率优化的题 那么这道题应该不算难 考的时候脑残推错了 说不出话来 BZOJ数据显示也是坑 明明100W 后面加个,0 关键是我开1000W会直接T 坑#includeusing namespace std;typedef long long LL;const int MAXN = 1000000;LL d[MAXN+10], Q[MAXN+10], Cost[MA原创 2014-12-13 20:04:24 · 520 阅读 · 0 评论 -
[BZOJ3109][cqoi2013]新数独 && 搜索
裸搜 除了读入麻烦 其他裸到爆的题 10S...#include #include #include #include #define SF scanf #define PF printfusing namespace std;const int MAXN = 10;int M[MAXN+10][MAXN+10][MAXN+10][MAXN+10], r = 1, c原创 2015-03-06 00:11:27 · 805 阅读 · 0 评论 -
[BZOJ1898] Swamp 沼泽鳄鱼 && 矩阵快速幂
可以发现鱼的周期 T = 2, 3, 4;lcm (2, 3, 4) = 12;所以当前时刻可以通行的邻接矩阵以12为周期出现预处理出12个矩阵G[12] 然后全部乘起来存入Tmp最后答案矩阵为 (Tmp^12) * G1 * ... * Gk%12 #include#include#include#includeusing namespace std;#define原创 2014-12-02 23:52:48 · 481 阅读 · 0 评论