摘要: 题目 思路 其实很好想 设 \(f_i\) 表示 \(i\) 与编号 \(f_i\) 到 \(i-1\) 的人已经相识 \(f_i\) 初值为 \(i\) 那么转移就是 \(f_i = min(f_i,l)\) 其中 \(l \leq i \leq r\) 然后更新后的 \(f_i\) 和以前的 \ 阅读全文
posted @ 2020-08-04 17:19 leiyuanze 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目 思路 大意是构造一个数组使它做 $01$ 背包能表示出所有给定的数 那就暴力枚举每个位置填什么 直到它能表示出所有给定的数 为了保证时间复杂度 我们考虑一个二进制数 \(s\) 表示能构造出的数 \(s\) 的第 \(i\) 位为一就表示当前枚举出的数组能表示出 \(i\) 这个数 那么假如一 阅读全文
posted @ 2020-08-03 21:59 leiyuanze 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目 思路 先求只用王牌电缆的最小生成树 再选一条李牌电缆替换王牌电缆 使答案最小就完了 假如要替换的李牌电缆两端点是 \(u,v\) 那么生成树中 \(u \Longrightarrow lca(u,v)\) 和 \(v \Longrightarrow lca(u,v)\) 这两条链中的权值最大的 阅读全文
posted @ 2020-08-03 21:08 leiyuanze 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题意 求本质不同的子串个数(包括空串) 思路 序列自动机裸题 直接上代码 \(Code\) #include<cstdio> #include<cstring> using namespace std; typedef long long LL; const int N = 2e5 + 5; con 阅读全文
posted @ 2020-08-03 19:55 leiyuanze 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 总结 又是一日爆炸 \(T1\) 不出所料报 $0$ 了?! 题目 \(T1\) JZOJ 4315. Prime 暴力就好了?! 考场根本没想暴力 赛后发现暴力跑得贼快 只需二分一下组数的上界 然后 \(dfs\) 判断能否能成功分完组 跑时顺便统计答案就行了 \(Code\) #include< 阅读全文
posted @ 2020-08-03 17:09 leiyuanze 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题目 思路 树的直径很好求,两遍 \(dfs\),记下两个端点 然后很显然所有直径经过的边必然在我们求出的这条直线上 那么我们只要判断一下一条直径上的边是不是答案 假设当前边为 \(i\) 那么把 \(i\) 割去后原树变成了两棵不联通的树 我们只要看这两棵子树分别的直径和不和原树的直径相等 如果至 阅读全文
posted @ 2020-08-03 16:45 leiyuanze 阅读(75) 评论(0) 推荐(0) 编辑
摘要: 题目 现在有一棵n个点的无向树,每个点的编号在1-n之间,求出每个点所在的最长路。 思路 换根 \(dp\),这里只是记下怎么打 \(Code\) #include<cstdio> #include<iostream> using namespace std; const int N = 1e5; 阅读全文
posted @ 2020-08-03 15:41 leiyuanze 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给定一个数列,支持区间加一个数和区间取 \(max\),询问单点询问数值和它被更改的次数 思路 模板的吉司机线段树 维护区间最小值和严格次小值以及最小值的个数 针对询问维护区间和以及区间修改次数 那么我们可以 \(O(n\log^2 n)\) 解决问题 \(Code\) #include< 阅读全文
posted @ 2020-08-02 22:03 leiyuanze 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题目大意 给定一个数列,支持区间加法,求区间大于等于 \(c\) 的数的个数 思路 分块裸题 散的个体单独加,询问时单独判 对于一整块加则打上标记 要求块中大于等于 \(c\) 的数的个数 我们不妨将块中元素排序,二分求解即可 为了保证时间复杂度 我们在修改的时候排序 因为同时加一个数,相对大小不变 阅读全文
posted @ 2020-08-01 16:57 leiyuanze 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 题目 【2011集训队出题】聪聪可可 思路 看看做做 阴阳 这道题 极力推荐 自从做了这道题后,这些题就变成秒切的题了 很容易想到求节点到分治中心的距离,然后 \(\bmod 3\) 那么在求根节点一棵子树的答案时直接加上 \(dis[(3-x) mod 3]\) 的个数 用个桶 \(buc\) 来 阅读全文
posted @ 2020-07-31 19:55 leiyuanze 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题面 思路 这种题当然要 \(dp\) 啦 设 \(g_{i,j}\) 表示前 \(i\) 个位置用指定的 \(j\) 种颜色装饰(即用颜色 $1..j$ 来装饰) 那么 \(g_{i,j}=g_{i-1,j}*(j-1)+g_{i-1,j-1}*j\) 前一项表示前 \(i-1\) 用了 \(j\ 阅读全文
posted @ 2020-07-31 16:06 leiyuanze 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 总结 本场比赛很不负责对待 暴力都没怎么打 一个半小时后才开始打题 很悲剧的只有 $23+11+36=70$ 分 \(T1\) 4300. 装饰大楼 题目 略 思路 很无聊的找规律题 考场弃疗 \(Code\) #include<cstdio> #include<iostream> using na 阅读全文
posted @ 2020-07-30 19:33 leiyuanze 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 阴阳 题面 分析 个人认为是极好的题,很容易写 如果你学点分治是无奈背板的,那就做做这道题,加深你对点分治的理解 一般的,处理树上大规模统计问题,我们分治的关键是找一棵子树的重心 找到分治中心,即新一轮的根节点,然后处理子树节点经过根节点时的答案,接着对子树继续分治下去 那么我们看这题,让黑白的各自 阅读全文
posted @ 2020-07-30 07:52 leiyuanze 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题面 思路 本蒟蒻第一次学点分治,正遇模板题,留个模板代码 \(Code\) #include<cstdio> #include<algorithm> using namespace std; const int N = 1e4 + 5; int len , d[N] , cnt , n , use 阅读全文
posted @ 2020-07-29 18:20 leiyuanze 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 【NOIP2015模拟11.2】有趣的有趣的家庭菜园 题面 思路一 暴力 $30$ 分! 很容易打,但是要注意: 开 \(\texttt{long long}\) 是非严格高于(等于是被允许的) 思路二 发现 \(i\) 能收获的条件是只要他为其中一侧的最大值 那么我们设 \(f_i\) 表示 $1 阅读全文
posted @ 2020-07-28 21:45 leiyuanze 阅读(150) 评论(0) 推荐(0) 编辑