随笔分类 -  分治

[校内训练2021_03_16]B 矩阵竟然能分治
摘要:题目大意:有一个n*m的01矩阵,统计出框架的个数。框架的定义:一个四元组(L,U,D,R)即一个矩形,满足L<R,U<D,并且四条边上全都是0。 思考:我们考虑分治(虽然我不知道为什么能想到这个):我们先把原本的矩阵竖着切一刀,那么我们要分别计算出左右两边的数组f[l][r],表示能够跨过分界线的 阅读全文
posted @ 2021-03-16 20:00 GreenDuck 阅读(146) 评论(0) 推荐(0)
[校内训练20_09_22]AB
摘要:1.结论题,不会证 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int base=200*500; 4 const int limit=2*200*500; 5 int T,n,a[555]; 6 bitset<205*505*2 阅读全文
posted @ 2020-09-22 17:39 GreenDuck 阅读(208) 评论(0) 推荐(0)
[家里训练20_03_01]ABC
摘要:1.不可做题。 求出满足 $$\sum_{i=1}^{m}{x_i}\leq s$$ 对任意$$i\leq m,x_i>0$$ 对所有$$i,x_i\leq t$$ 的解数 答案对10^9+7取模 m-n<=1000,t<=100000,m<=1E9,nt<=s<=1E18 2.树上LIS:一棵树, 阅读全文
posted @ 2020-03-10 16:47 GreenDuck 阅读(162) 评论(0) 推荐(0)
[校内训练19_09_10]sort
摘要:题意 给一个非负整数序列,每次问能否异或上一个正整数使得所有的数单调不减。如果能,输出最小的x,否则输出-1。单点修改。多测。要求最多一个log。 思考 只要考虑相邻的两个数。找到这两个数最高的不同的一位,那么只要考虑是一定要异或或者是一定不要异或。 代码 1 #include<bits/stdc+ 阅读全文
posted @ 2019-09-20 09:24 GreenDuck 阅读(192) 评论(0) 推荐(0)
19_08_26校内训练[Max]
摘要:题意 求$max_{l \leq r}{\{min{\{a_l,a_{l+1},...,a_r\}}*(r-l+1)\}}$ 思考 分治,考虑一个区间跨过某个点的贡献即可。 代码 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef l 阅读全文
posted @ 2019-08-26 08:04 GreenDuck 阅读(135) 评论(0) 推荐(0)
[CF1037F]Maximum Reduction
摘要:题意 https://codeforces.com/contest/1037/problem/F 思考 摘自一种比较有趣的做法。我们对序列进行分治,每次统计跨过mid的区间的贡献。其正确性是保证的:每个区间只会对应到一个mid。对于左区间,算出它的后缀最大值。 接下来从左到右枚举右区间的每一个点。对 阅读全文
posted @ 2019-08-25 21:10 GreenDuck 阅读(253) 评论(0) 推荐(0)