前缀和
wspl654321
。。。。。。
展开
-
最大正方形
dp 处理一个矩阵前缀和,就可以O(n)的求出矩阵的和了,而且只有和为完全平方数才是正方形,因为数据只有1吗,要是不是一的话就不容易了 这样再枚举一个起点,和一个边长就是任意一个正方形了,再优化剪枝一下,就可以0ms过了#include<cstdio> #include<iostream> using namespace std; int n,m;int maxn=1; int a[101][原创 2017-06-06 11:24:14 · 559 阅读 · 0 评论 -
聪明的质检员
二分+前缀和优化,不优化就是o(nmlogn)了 对参数w进行二分答案,通过w对y进行计算,如果找大了,就说明参数w找小了,答案在mid右面,找小了反之。#include<cstdio> #include<iostream> #include<cstring> #define LL long long using namespace std; LL sum[299999],cnt[299999]原创 2017-06-12 10:37:46 · 751 阅读 · 0 评论 -
day4
alien 飞船降落问题 矩阵前缀和+枚举 求出前缀和,暴力枚举每一个子矩阵的和,是0就可以降落 注意有正方形飞船,长度不等于点#include<cstdio> #include<iostream> #include<cstring> using namespace std; #define D "%d" #define for(i,x,y) for(int i=x;i<=y;i++) #d原创 2017-07-26 11:23:15 · 180 阅读 · 0 评论 -
洛谷好消息坏消息
维护一个前缀最小值和一个后缀和和一个后缀的前缀最小值#include<cstdio> #include<iostream> //using namespace std; int n;int z[1999999],q[1999999],s[1999999],h[1999999],top,tot; int main() { int n; scanf("%d",&n); for(i原创 2017-08-11 10:37:23 · 252 阅读 · 0 评论 -
运输计划
这个题和疫情控制差不多,但那个题更恶心。 先二分答案,找需要减少的边,看他们有没有一条边是一样的 如果没有的话,肯定不行,如果有的话,看删掉最大的能不能让所有的路大于答案 树上的最短边就是到公共祖先的距离,这里用tarjan求得,也可以用倍增,不会的话看前面的博客 找一条边经过多少次用差分 把两个节点+一就代表这两个叉上的点都走过一遍,可是祖先上面的点没有走,所以把祖先-2,求树的后缀和就原创 2017-10-23 11:03:59 · 689 阅读 · 0 评论