把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

05 2020 档案

摘要:题面传送门 显然可以dp n2暴力dp很好想,循环时直接更新答案即可。 考虑优化。 显然,如果每1头牛都分成1组,那么代价为n,所以我们每次枚举状态时种类不能超过n,否则为无用转移。 那n种类数之内的最左端点怎么搞呢? 显然可以尺取法。跑$\ 阅读全文
posted @ 2020-05-30 21:41 275307894a 阅读(40) 评论(0) 推荐(0) 编辑
摘要:题面传送门 一眼看上去就是矩乘套路题。 又因为异或满足交换律与结合律,所以确定可以矩乘。 但是对于每个询问直接矩乘显然复杂度O(qn3logn)T 因为是01矩乘,又因为询问只问了1号点,所以可以拿原来1的向量乘以预处理的矩阵,复杂度降为$O(n3logn)-O(qn^2log 阅读全文
posted @ 2020-05-30 21:29 275307894a 阅读(67) 评论(0) 推荐(0) 编辑
摘要:题面传送门 来一发不用单调队列的解法。 循环还是单调队列的循环,只不过把单调队列换成一个变量记录有几个1,循环时加减一下就好了。时间复杂度O(nm) 代码实现: #include<cstdio> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a 阅读全文
posted @ 2020-05-26 20:05 275307894a 阅读(82) 评论(0) 推荐(0) 编辑
摘要:题面传送门 直接bfs即可。 代码实现: #include<cstdio> #include<queue> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; int a[1539][1539],x,y,n,m,k,ans,tot,pu 阅读全文
posted @ 2020-05-26 20:00 275307894a 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题面传送门 没啥好说的,模拟即可。 #include<cstdio> #include<iostream> #include<cstring> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; int n,m,k,ans,tot,pus, 阅读全文
posted @ 2020-05-26 19:37 275307894a 阅读(113) 评论(0) 推荐(0) 编辑
摘要:题面传送门 显然是全部把k个倒到一个水壶中最优。 那么我们可以前缀和。枚举右端点,利用前缀和算左端点。 #include<cstdio> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; int n,m,k,a[1000039],q[ 阅读全文
posted @ 2020-05-24 16:24 275307894a 阅读(86) 评论(0) 推荐(0) 编辑
摘要:题面传送门 显然可以dp 第一次dfs,定义fi,j为在i子树下距离在j以内的总和。 第二次可以容斥,用父亲节点的减去儿子节点的值。 代码实现: #include<cstdio> #include<cstring> using namespace std; int n,m, 阅读全文
posted @ 2020-05-23 21:50 275307894a 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题面传送门 看着像线段树。 直接二进制拆掉就可以取反操作了。 拆掉以后就是异或1或者0的操作了。 时间复杂度O(26nlogn) 代码实现: #include<cstdio> using namespace std; int n,m,k,x,y,zs,head,a[100039],f1[ 阅读全文
posted @ 2020-05-15 19:53 275307894a 阅读(53) 评论(0) 推荐(0) 编辑
摘要:题面传送门 明显可以尺取法。 先把每一位取反,则枚举右端点,左端点单调不降则直接暴力枚举即可。 代码实现: #include<cstdio> #define max(a,b) ((a)>(b)?(a):(b)) using namespace std; int n,m,k,a[300039],q[3 阅读全文
posted @ 2020-05-12 20:39 275307894a 阅读(42) 评论(0) 推荐(0) 编辑
摘要:题面传送门 第二道Ynoi题目。感觉还是很良心的。 区间相同个数,很容易想到bitset。 然后可以用莫队维护出来,最后与一下就好了。 但是相同的数怎么办呢? 离散的时候把位置空出来,之后维护一下有几个就好了。 注意加一些常数优化之类的。 代码实现: #include<cstdio> #in 阅读全文
posted @ 2020-05-10 15:17 275307894a 阅读(43) 评论(0) 推荐(0) 编辑
摘要:看来别的博客都没有讲清楚,那我就来讲一下。 一下纯属作者个人思路,若有不对请提出。 在这篇文章中,/表示向下取整的除。 求ax+by=c的解 显然是不定方程。有无解我们可以用裴蜀定理验证,此处当做其有解。 我们可以尝试用y表示出x,比如这样:x=cbya 阅读全文
posted @ 2020-05-08 20:01 275307894a 阅读(48) 评论(0) 推荐(0) 编辑
摘要:题面传送门 启发式合并大法吼啊。 优雅的暴力。 暴力:遍历整个数组去修改,时间复杂度O(n2) 换一个思路暴力:对于每一个ai维护一个队列,每次把两个队列合并。时间复杂度仍是O(n2) 那可不可以优化一下呢? 每次我们不能把小的合并到大的上面去吗,这样可以减少点常数。 等等,你确定是常 阅读全文
posted @ 2020-05-02 21:52 275307894a 阅读(37) 评论(0) 推荐(0) 编辑

浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示