day4

来源:互联网 发布:搞笑网络电话录音 编辑:程序博客网 时间:2024/06/05 20:10

crf 的视察
最大正方形那个题,枚举一个起点,二分出最大的正方形的边
n^2logn的复杂度,也可以dp,i,j只能由i-1,j,i,j-1,i-1,j-1,转移过来,取最小值就行了

#include<cstdio>#include<iostream>using namespace std;int n,m;int s[2009][2001],a[2001][2001],ans;int check(int i,int j,int k){    int w=s[i+k-1][j+k-1]-s[i+k-1][j-1]-s[i-1][j+k-1]+s[i-1][j-1];    if(w==k*k) return 1;    return 0;}int main(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++)        for(int j=1;j<=m;j++)        {            scanf("%d",&a[i][j]);            s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];        }    for(int i=1;i<=n;i++)        for(int j=1;j<=m;j++)        {            int l=1,r=min(n-i,m-j)+1;            while(l<=r)            {                int mid=(l+r)>>1;                int w=check(i,j,mid);                if(w) l=mid+1;                else  r=mid-1;                }            ans=max(l-1,ans);        }    printf("%d",ans);}

crf 的军训
贪心
按左边排序,对右面贪心,放书,取最小值,如果不够了就加书
代码流失,有时间补上。。。
crf的数数
完全蒙蔽。。。。

原创粉丝点击