该文被密码保护。
posted @ 2018-11-28 21:20 lnyzo 阅读 (3) 评论 (0) 编辑
摘要:luogu4719是模板题了 看了 "RabitHu" 的题解 简言之 树链剖分 建一颗线段树维护该段[l,r]的部分答案([l,r]这段不一定联通) 部分答案:不包括重儿子的答案 这样就勉强维护了复杂度 矩阵乘法只是把转移方程写成矩阵的形式 无脑又好写 //Ctrl+V毫无压力 include i 阅读全文
posted @ 2018-11-30 21:17 lnyzo 阅读 (56) 评论 (0) 编辑
该文被密码保护。
posted @ 2018-11-28 21:20 lnyzo 阅读 (3) 评论 (0) 编辑
摘要:幸运的是比赛过程中机子一直没出什么故障 比赛发的面包厚实的啊,水发得有点晚了 比赛结束,乐成一群大佬阿卡,被吓死了。 确实很久没有用心对待一件事情了\看小说也很不认真啊 颓了一下午,看小说 《侠客行》什么的准备明天上车看, xj的饭菜真的很不用心啊 所以晚饭吃的泡面 晚上要正经起来了 51nod11 阅读全文
posted @ 2018-11-10 21:26 lnyzo 阅读 (30) 评论 (0) 编辑
摘要:忽然意识到昨天交了十几发的CE是因为没选择语言qwq 本来准备按着题目分类刷一遍的,看来是刷不完了 1618树或非树 树链剖分 思路还是挺简单的吧? 把环拎出来单独处理(n条边的联通图存在且仅存在一个环),那么若不考虑环 图中的连通图个数=总点数 "开"的边数 若这条环联通了,那么实际上有一条边并没 阅读全文
posted @ 2018-11-08 16:21 lnyzo 阅读 (29) 评论 (0) 编辑
摘要:主要是第二问吧 二分图匹配啊,dinic可秒了此题 去跑未匹配的,则这条边指向的点必匹配,这条边指向的点的匹配点必不匹配 include include include include using namespace std; const int N=2002; bool S[N],T[N]; in 阅读全文
posted @ 2018-11-04 13:46 lnyzo 阅读 (98) 评论 (0) 编辑
摘要:迭代器相关 定义rbegin和rend要用逆向迭代器reverse_iterator 不过auto只有c++11才能用TWT 一个还挺好用的 "c++11编辑器" c++11 include include include const int N=1e5+5; inline void read(in 阅读全文
posted @ 2018-11-02 11:19 lnyzo 阅读 (22) 评论 (0) 编辑
摘要:求组合数的板子 lucas相关 阅读全文
posted @ 2018-10-30 07:58 lnyzo 阅读 (24) 评论 (0) 编辑
摘要:本题强制在线,bzoj3545不强制在线 转自 "SFN1036的题解" 一开始yy出了一种用可持久化线段树来维护可持久化的root数组,然后其他的就像离线那样,只是每次合并线段树的时候不改变原来两棵树的儿子,而是新建节点。恩理论上好像是可以的,但是懒得写。 这题可以用一种叫Kruskal重构树的东 阅读全文
posted @ 2018-10-28 16:07 lnyzo 阅读 (26) 评论 (0) 编辑
摘要:转自 "hwzzyr的博客" kruskal重构树 由于重构树中把原树的点权转换成为了新建节点的边权,这一过程是这样实现的。 首先对边排序 然后使用并查集辅助加边,每新建一条边时: 新建节点indexindex(编号从n+1n+1开始) 将原有两节点所在集合改为indexindex 将原有节点与in 阅读全文
posted @ 2018-10-28 14:38 lnyzo 阅读 (20) 评论 (0) 编辑
摘要:来自 "ljh的结题报告" . 解题报告: 这道题好神啊,合并操作的确很具有代表性。 如果考虑如何求方案数,不妨DP统计,因为直接枚举与转移复杂度太大。我们选择把剩余可涂次数相等的分为一类,考虑因为只要剩余可涂次数相等,那么其实这些颜色并没有什么区别,因为我们涂颜色的时候只需要考虑涂的这种颜色剩余次 阅读全文
posted @ 2018-10-28 07:40 lnyzo 阅读 (27) 评论 (0) 编辑
摘要:先把存在被包含关系的去掉 考虑到DP方程f[i][j]表示到第i个,且保留第i个,删除j个 f[i][k]=max{f[j][k (i j 1)]+min(a[i].r a[i].l,a[i].r a[j].r)} 把公式中min(a[i].r a[i].l,a[i].r a[j].r)为a[i]. 阅读全文
posted @ 2018-10-27 20:10 lnyzo 阅读 (35) 评论 (0) 编辑
摘要:用左偏树不断向上维护仍在[浴血奋战的]骑士攻击力,不断维护tag维护即可 include include define ml(x) tr[x].ml define ad(x) tr[x].ad define ls(x) tr[x].l define rs(x) tr[x].r define vl(x 阅读全文
posted @ 2018-10-27 19:53 lnyzo 阅读 (20) 评论 (0) 编辑
摘要:转载自[https://blog.csdn.net/elijahqi/article/details/79874902] 首先贪心的把包含于其他线段的线段删除 然后按照左端点排序 那么显然右端点也是单调递增的 设dp[i][k]表示 前i条线段删除k条 i这条线段必须选的最大覆盖长度是多少 那么dp 阅读全文
posted @ 2018-10-26 21:21 lnyzo 阅读 (19) 评论 (0) 编辑
摘要:kmp和矩阵乘法的运用,还是挺明显的 include include using namespace std; inline void read(int &x){ char ch=getchar();x=0; for(;!isdigit(ch);ch=getchar()); for(;isdigit 阅读全文
posted @ 2018-10-13 10:31 lnyzo 阅读 (26) 评论 (0) 编辑
该文被密码保护。
posted @ 2018-08-17 18:48 lnyzo 阅读 (1) 评论 (0) 编辑
摘要:只是为了贴上自己的朱刘算法模板 include using namespace std; const int N=102; int b[N],mark[N],color[N],pre[N],ne; double low[N],in[N]; struct edges{int u,v;double w; 阅读全文
posted @ 2018-08-04 10:56 lnyzo 阅读 (56) 评论 (0) 编辑
摘要:"朱刘算法" 差分?。。。(粘的别人代码) 考虑存在环,则该环中必定去一条边,且往外扩展一条边,那先假设环上所有边都选,则实际选择+w[v出] w[v环上入] include include using namespace std; const int inf=0x7fffffff; int n,m 阅读全文
posted @ 2018-08-04 09:45 lnyzo 阅读 (83) 评论 (0) 编辑
摘要:枚举子树的形态:dp[i][j]=min(dp[i][j],dp[i][k]+dp[i][l])dp[i][j]=min(dp[i][j],dp[i][k]+dp[i][l]),其中kk和ll是对j的一个划分 按照边进行松弛:dp[i][j]=min(dp[i][j],dp[i′][j]+w[i][ 阅读全文
posted @ 2018-08-02 13:32 lnyzo 阅读 (47) 评论 (0) 编辑
摘要:``` include using namespace std; const int maxn=150002; int n,m,s[maxn],fa[maxn],c[2][maxn],rev[maxn],f[maxn],F[maxn],v[maxn],V[maxn]; inline void rea 阅读全文
posted @ 2018-08-01 09:58 lnyzo 阅读 (29) 评论 (0) 编辑
摘要:作为我以后的模板吧 阅读全文
posted @ 2018-07-18 17:06 lnyzo 阅读 (34) 评论 (0) 编辑
摘要:待续。。。 "官方题解" 前言:这场比赛打得非常坎坷,刚开始以为7:30开始,结果迟进赛场。然后因为是在家里打,键盘好难用啊=_= 哔——地一声,电脑关机,发现充电线没插好。。。插好之后,肚子饿 去翻柜子吃东西,所以解题速度就变成这样了?! A DP B 水水的二分题,我竟然在二分判断可行解时用了t 阅读全文
posted @ 2018-07-09 08:00 lnyzo 阅读 (95) 评论 (1) 编辑
摘要:2-SAT算法流程 1.建立选择边 2.tarjan缩点(同一块内必然同时选择),判断是否存在可行解(若存在一对对立点{2*i,2*i-1}在同一块内,则不可行) 3.把缩点后的块之间建立反向选择边,并传递不选择命令(code中用op[ ]数组记录) 4.按照拓扑序找到一为选择的点(块),标为选择, 阅读全文
posted @ 2018-07-03 07:51 lnyzo 阅读 (73) 评论 (0) 编辑
摘要:构建虚树,每次在set中维护其前驱,后继,更新 阅读全文
posted @ 2018-07-02 07:49 lnyzo 阅读 (64) 评论 (0) 编辑
摘要:枚举管理者 则一定派遣子树中薪水最低的忍者,对于每个节点维护子树大根堆 若堆中忍者薪水和大于M,则pop #include<cstdio> #include<cctype> #include<algorithm> #define ll long long using namespace std; c 阅读全文
posted @ 2018-06-20 20:54 lnyzo 阅读 (37) 评论 (0) 编辑
摘要:注意双向边正反边容量相同 阅读全文
posted @ 2018-06-20 19:33 lnyzo 阅读 (53) 评论 (0) 编辑
摘要:从狼向空格或羊剪边,从空格向空格或羊建边,最大流最小割 最大流dinic打法(这里用了当前弧优化) diniv当前弧优化讲解 阅读全文
posted @ 2018-06-20 16:57 lnyzo 阅读 (35) 评论 (0) 编辑
摘要:待续。。。 A题 考虑任意两个一次函数,哪个放在里面更有 y=ax+b和y=cx+d; sort时满足(ax+b)x+d>(cx+d)x+b即可,在O(n)计算即可 D题 E题 发现这题好简单,考场上看到通过的人那么少就不敢打了 m^-w-^m 将一个点拆成两个点,维护最大值和最小值,因为a会小于0 阅读全文
posted @ 2018-06-19 18:54 lnyzo 阅读 (98) 评论 (0) 编辑
摘要:二分图最大匹配基础 详见 这题是最大权二分图匹配模板 讲解 (小黄书上也是有的,讲解也很清晰) 阅读全文
posted @ 2018-06-13 06:56 lnyzo 阅读 (39) 评论 (0) 编辑
摘要:1.HDU3507 数学分析 2.bzoj1010 原理解释 题解 根据动规方程状态i从状态j转化而来, y只与j有关,k与i,j有关,b只与i或常数有关,可得直线方程y=kx+b,本题让b尽量小,故维护下凸包,使k单调递增 则已确认了当前直线的斜率,取得的j即为当前直线向左碰到的第一个点 无论如何 阅读全文
posted @ 2018-06-10 20:50 lnyzo 阅读 (40) 评论 (0) 编辑
摘要:确认右端点后,即可确认左端点的范围,则能确认该右端点能取到的最大值(用前缀和维护sum=s[i]-s[j],s[i]确认,则用ST表维护s[j]最小值) 用优先队列维护,每次取最大值,再将以该右端点为右端点的左右两段区间最值分别放入队列中 阅读全文
posted @ 2018-06-09 15:38 lnyzo 阅读 (30) 评论 (0) 编辑
摘要:treap模板题 set的效率不高 阅读全文
posted @ 2018-06-09 13:28 lnyzo 阅读 (27) 评论 (0) 编辑
摘要:非常好的一篇博客(LCT) 题解来源(LCT) 先抄了一遍板子【注意数据范围】 阅读全文
posted @ 2018-05-23 22:19 lnyzo 阅读 (46) 评论 (0) 编辑
摘要:非常好的一篇博客(LCT) 时间效率相差不大 1.分块 2.LCT 思路概要:把该点连向跳到的点,并保证跳到的点深度比他小,则最后左儿子的siz+1即答案 阅读全文
posted @ 2018-05-23 21:33 lnyzo 阅读 (61) 评论 (0) 编辑
摘要:对于区间翻转操作,将l-1(代码中建了[1,n+2]个点,故这里为l)先旋转到根,再将r+1(同上,这里为r+2)旋至其右儿子,则r+1的左儿子即我们要翻转的区间 tip:在find时已经更新了rev,所以可以splay 【感觉我的buildtr好恶心啊】 阅读全文
posted @ 2018-05-23 20:47 lnyzo 阅读 (22) 评论 (0) 编辑
摘要:非常好的一篇博客 写下之前自己被困住的几个点吧: 1.access找的不是到真实的根的一条路径,而是到能找到的最上面的splay的根(makeroot同理) 2.findroot找的是x所在原树的树根(深度最小),并旋转至当前一棵splay的根 tips:具体的还是没特别懂,多做题吧 阅读全文
posted @ 2018-05-20 21:31 lnyzo 阅读 (47) 评论 (0) 编辑
摘要:初始时将1的限制赋为无穷大,然后对每个节点贪心,从大往小取,知道能取得的元素的最大值小于0 比较唯一性时注意下 阅读全文
posted @ 2018-05-20 14:07 lnyzo 阅读 (42) 评论 (0) 编辑
摘要:1.treap 一棵treap维护一下就可以了吧(压行导致代码格式不怎么美观) 2.splay 挺快的 阅读全文
posted @ 2018-05-19 09:52 lnyzo 阅读 (30) 评论 (0) 编辑
摘要:1.treap 每个点建一棵treap,维护优先级,然后启发式合并两棵treap 2.splay 阅读全文
posted @ 2018-05-19 09:26 lnyzo 阅读 (37) 评论 (0) 编辑
摘要:事实证明,数据存在负数? 用treap确实小题大做了 黄学长的hash自行了解 阅读全文
posted @ 2018-05-18 18:38 lnyzo 阅读 (19) 评论 (0) 编辑
摘要:树形DP f[i][j]就表示以i为根的子树中染了多少个黑点。我们可以发现,假设枚举了一条边i(x,y,c),那么它对收益的贡献就是c*(x那边黑点的个数*y那边黑点的个数+x那边白点的个数*y那边白点的个数)。假设在做以x为根的子树,枚举到了它的儿子y,然后就枚举x子树中黑点的个数i和y子树中黑点 阅读全文
posted @ 2018-05-18 14:50 lnyzo 阅读 (27) 评论 (0) 编辑