04 2019 档案

摘要:A.最长不会超过a的个数的两倍-1。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 阅读全文
posted @ 2019-04-29 19:03 HocRiser 阅读(189) 评论(0) 推荐(0)
摘要:经典问题(以下全部默认$n\leqslant m$):$\sum\limits_{i=1}^n\sum\limits_{j=1}^{m}gcd(i,j)=\sum_{d=1}^n\varphi(d)\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor$ 阅读全文
posted @ 2019-04-28 17:43 HocRiser 阅读(189) 评论(0) 推荐(0)
摘要:A.奇数配偶数。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef 阅读全文
posted @ 2019-04-25 19:14 HocRiser 阅读(148) 评论(0) 推荐(0)
摘要:A.若存在解则一定存在某个i使得a[i]>a[i+1],翻转它即可。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=( 阅读全文
posted @ 2019-04-25 19:04 HocRiser 阅读(137) 评论(0) 推荐(0)
摘要:A.一定是前半段白后半段黑,枚举分界点预处理前后缀和。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define rep(i,l,r) for (int i=(l); i<= 阅读全文
posted @ 2019-04-22 20:38 HocRiser 阅读(176) 评论(0) 推荐(0)
摘要:A.直接判。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef l 阅读全文
posted @ 2019-04-20 11:42 HocRiser 阅读(140) 评论(0) 推荐(0)
摘要:二进制分组思想很简单,就是把下标拆成几个2的次幂的和,对每个2的次幂维护答案,复杂度是暴力重构一组的复杂度乘log(如果可以归并可能会少个log)。 这里其实想整理下一些修改独立的数据结构题的套路。 离线算法: (1) 只有插入:CDQ分治。 (2) 有删除: 支持删除操作:CDQ分治。 不支持删除 阅读全文
posted @ 2019-04-19 11:04 HocRiser 阅读(813) 评论(0) 推荐(0)
摘要:D1T1:与或和 对每位处理,问题变成所有内部不包含0/1的矩阵的个数,单调栈维护即可。 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define rep(i,l,r) for (int i=(l); i<=(r); 阅读全文
posted @ 2019-04-17 20:00 HocRiser 阅读(230) 评论(0) 推荐(0)
摘要:A.(c1=0&&c3>0)||(c1!=c4) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 #define rep(i,l,r) for (int i=(l); i<=(r) 阅读全文
posted @ 2019-04-17 19:53 HocRiser 阅读(165) 评论(0) 推荐(0)
摘要:A.找到最大值x,再找出最长的连续的x。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i+ 阅读全文
posted @ 2019-04-16 18:18 HocRiser 阅读(158) 评论(0) 推荐(0)
摘要:https://www.luogu.org/blog/Sooke/solution-p5280 首先想到对线段树上每个点分别维护有多少棵线段树在它上有标记(f[]),然后想到对于每个操作,根据转移的不同分成5种点。 为了满足第三类点的转移要求,再维护g[],转移类似分类讨论即可。 最后发现前三类点是 阅读全文
posted @ 2019-04-14 18:51 HocRiser 阅读(151) 评论(0) 推荐(0)
摘要:前两种情况显然直接manacher,对于第三种,枚举回文中心,二分回文半径,哈希判断即可。 阅读全文
posted @ 2019-04-14 12:35 HocRiser 阅读(233) 评论(0) 推荐(0)
摘要:D1T1:异或粽子 显然令b[]为a[]的前缀和,那么就是在b[]中任取两数异或,求异或结果前k大和。 于是暴力$O(n^2)$显然,60pts。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l) 阅读全文
posted @ 2019-04-14 11:22 HocRiser 阅读(251) 评论(0) 推荐(0)
摘要:用LCT支持:在线加边,单点修改,求一个两个点路径上的所有边BCC的点权和。 用LCT维护边BCC的形态(即缩边双之后的树),2,3操作都是LCT基本操作,重点考虑加边操作。 当这条边的两个端点属于同一BCC时显然没有任何影响。当两个端点不在同一个连通块里时直接在LCT上做link(bel[x],b 阅读全文
posted @ 2019-04-02 11:06 HocRiser 阅读(262) 评论(0) 推荐(0)