摘要: 1. 修改set里面的非键值。 用mutable来修饰这个非键值。 举例代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w 阅读全文
posted @ 2019-07-07 09:35 Schenker 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 图论知识: 传送门 阅读全文
posted @ 2018-12-31 13:22 Schenker 阅读(268) 评论(0) 推荐(1) 编辑
摘要: 今天,我们浙理养老队在18年赛季的比赛正式宣布结束了,先恭喜我们队在3场区域赛中拿了两块金牌,一块银牌,损失我的身份证我的U盘我的耳机,老天啊,队友不是拿来顶替自己的霉运的嘛,让他们的丢东西啊,别让我再丢了。 感谢胡大佬这半年来在我们队的奉献,胡大佬在今天和我们说再见了。谢谢胡同学吧,接下来我和潘少 阅读全文
posted @ 2018-11-26 23:30 Schenker 阅读(955) 评论(2) 推荐(8) 编辑
摘要: 注:+ 训练时通过 o 赛后补题 p plw需要补的题 h hzy需要补的题 w wxk需要补的题 阅读全文
posted @ 2018-07-20 13:44 Schenker 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 数据结构 树状数组 线段树 主席树 splay lct 字符串 KMP 字符串hash AC自动机 字典树 杂 思维 贪心 博弈 二分 && 三分 双指针 分治 CDQ 点分治 图 Tarjian缩点 最短路 Dijkstra ballman_ford 欧拉回路 最小生成树 拓扑排序 网络流 常用算 阅读全文
posted @ 2018-05-26 23:37 Schenker 阅读(393) 评论(0) 推荐(1) 编辑
该文被密码保护。 阅读全文
posted @ 2018-05-10 23:54 Schenker 阅读(56) 评论(1) 推荐(1) 编辑
摘要: 题目: 给定一棵树, 带边权。 现在有2种操作: 1.修改第i条边的权值。 2.询问u到其他一个任意点的最大距离是多少。 解法:边分治+线段树 首先我们将所有的点修改和边修改都存在对应的边里面。 然后接下来就是边分治的过程。 对于边分治的一层来说,以这条边为界分割出来。 设这条边为 x, y, w 阅读全文
posted @ 2019-09-16 14:04 Schenker 阅读(337) 评论(0) 推荐(0) 编辑
摘要: HDU - 6642 使用范围: 求k个不相交的子序列最大值之和。 用法: 开k个map, 每次对于新的一个v,我们插入 v 个 v 到第一层中。 插入方式: 1.如果没有数比这个v大, 我们就直接将v放入到该层。 2.否则大于v的最小的数x,用v来替换x,将x插入下一层。 因为不能一个一个插入,所 阅读全文
posted @ 2019-08-13 16:17 Schenker 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 如果我们先手拿完所有苹果再去考虑花费的话。 S -> 摄像头 -> 苹果 -> T 就相当于找到一个最小割使得S和T分开。 ans = sum - flow。 然后对于这一个模型, 我们可以不用网络流去解决。 我们从叶子出发,然后从下往上合并。 每次到一个节点的时候,我们先把摄像机所对应的影响去除。 阅读全文
posted @ 2019-08-13 13:39 Schenker 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 1.HDU-3572 题意:N个任务,每个任务有Pi(需要干多少天),Si(开始时间),Ei(结束时间),M个机器,一个机器一天最多处理一个任务,询问是否所有的任务都能完成。 建图模型: s 向 [1, 500]天开始建立一条流量为m的边,然后对于每天来说,往可以去执行任务的点建立一条流量为1的边, 阅读全文
posted @ 2019-08-04 20:46 Schenker 阅读(231) 评论(0) 推荐(0) 编辑
摘要: easy 写法。 #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #define LL long long 阅读全文
posted @ 2019-08-04 16:21 Schenker 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 笛卡尔树 O(n)建立一颗该节点是当前子树的最值的二叉树. 代码: void Build(){ int n; scanf("%d", &n); for(int i = 1; i <= n; ++i) scanf("%d", &a[i]), L[i] = R[i] = 0; top = 0; for( 阅读全文
posted @ 2019-07-28 20:39 Schenker 阅读(160) 评论(0) 推荐(0) 编辑
摘要: happiness 题解: 将图转换成最小割. 将割完的图中与S相连的点看做选文科, 与T相连的点看做选理科. flow(s, u) = 文科值 flow(u,t) = 理科值 假设u 和 v 一起选文科有奖励值z, flow(s,u) = z/2 flow(s,v) = z/2, flow(u,v 阅读全文
posted @ 2019-07-27 10:14 Schenker 阅读(165) 评论(0) 推荐(0) 编辑
摘要: #include<bits/stdc++.h> using namespace std; const int N = 110010; char str[N], aim[N<<1]; int n; int len[N*2]; void manacher() { memset(len, 0, sizeo 阅读全文
posted @ 2019-07-15 19:51 Schenker 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Bzoj 3730 震波 题解: 和在线的边分治差不多。 就是将每层都信息都存下来。 然后对于每一层记录上一层的重心是哪个。 对于求和的话, 从自己的那层出发,然后暴力往上爬, 然后计算答案。 对于修改来说,也暴力的往上爬,对于每层所对应的信息来修改 用树状数组来统计同一层、不同深度的前缀和。 本来 阅读全文
posted @ 2019-07-10 16:36 Schenker 阅读(229) 评论(0) 推荐(0) 编辑
摘要: How Many Answers Are Wrong 题解: emm。 先说一点,这个题目是多组的, 但是我没在题目中看到多组的信息。 然后并查集+前缀和的一个思想。 定义: f(x) = pre[x], S[i] = S[i-1] + a[i] 则 sum[x] = S[x] - S[f(x)]。 阅读全文
posted @ 2019-07-08 10:01 Schenker 阅读(198) 评论(0) 推荐(0) 编辑