zoukankan      html  css  js  c++  java
  • 【普及组BOSS】

    立体图

    题都没读懂先咕咕咕吧

    #include<bits/stdc++.h>
    using namespace std;
    int m,n,l,p,a[1001][1001],ma[1001],maxx,maxy,z[6]={2,1,0,0,0,0},s[6]={6,6,6,6,5,4};
    char c[1001][1001],c1[10][10]={
    "  +---+",
    " /   /|",
    "+---+ |",
    "|   | +",
    "|   |/",
    "+---+",
    };
    inline void fg(int x,int y){
        for(int i=5;i>=0;i--)
            for(int j=z[i];j<=s[i];j++)
            {
                c[5-i+x][j+y]=c1[i][j];
                if(5-i+x>maxx) maxx=5-i+x;
                if(j+y>maxy) maxy=j+y;
            }
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            for(int j=0;j<m;j++){
                scanf("%d",&a[i][j]);
            }
        }   
        for(int o=1;o<=n;o++){
            for(int k=0;k<m;k++){
                for(int l=0;l<a[o][k];l++){
                    fg((n-o)*2+1+3*l,(n-o)*2+1+4*k);
                }
            }
        }          
        for(int i=maxx;i>=1;i--){    
            for(int j=1;j<=maxy;j++){
                if(c[i][j]=='00') printf(".");
                else printf("%c",c[i][j]);
            }
            printf("
    ");
        }
        return 0;
    }
    View Code

     子矩阵

    暴力枚举dfs+dp优化(待复盘)

    #include<bits/stdc++.h>
    #define For(i,l,r) for(int i=l;i<=r;i++)
    using namespace std;
    int n,m,r,c,num[20][20],ch[20],o=1,lc[20],hc[20][20],f[20][20],minn=2e9,cmin;
    inline void mems(){
        For(i,1,m){
            lc[i]=0;
            for(int j=1;j<r;j++){
                lc[i]+=abs(num[ch[j]][i]-num[ch[j+1]][i]);
            }
        }
        For(i,2,m){
            for(int j=1;j<i;j++){
                hc[i][j]=0;
                For(k,1,r){
                    hc[i][j]+=abs(num[ch[k]][i]-num[ch[k]][j]);
                }
            }
        }
        
    }
    inline void dp(){
        For(i,1,m){
            cmin=min(i,c);
            For(j,1,cmin){
                if(j==1){
                    f[i][j]=lc[i];
                }
                else if(i==j){
                    f[i][j]=f[i-1][j-1]+lc[i]+hc[i][j-1];
                }
                else{
                    f[i][j]=2e8;
                    for(int k=j-1;k<i;k++){
                        f[i][j]=min(f[i][j],f[k][j-1]+lc[i]+hc[i][k]);
                    }
                }
                if(j==c) minn=min(minn,f[i][c]);
            }
        }
    }
    inline void dfs(int node){
        if(node>n){
            mems();
            dp();
            return;
        }
        if(r-o+1==n-node+1){
            ch[o++]=node;
            dfs(node+1);
            ch[o--]=0;
            return;
        }
        dfs(node+1);
        if(o<=r){
            ch[o++]=node;
            dfs(node+1);
            ch[o--]=0;
        }
    }
    int main(){
        scanf("%d%d%d%d",&n,&m,&r,&c);
        For(i,1,n){
            For(j,1,m){
                scanf("%d",&num[i][j]);
            }
        }
        dfs(1);
        printf("%d",minn);
        return 0;
    } 
    View Code
  • 相关阅读:
    c# Action,Func,Predicate委托
    c# 匿名方法
    IIS网站无法启动,提示 另一个程序正在使用此文件
    c# Http下载
    mciSendString详解(转)
    【NOIP2006PJ】数列(sequence)题解
    2020.04.29【NOIP普及组】模拟赛C组30总结
    【USACO 2019 December Silver】Milk Visits题解
    【USACO 2019 February Bronze】Measuring Traffic 题解
    【USACO 2019 February Bronze】Measuring Traffic 题解
  • 原文地址:https://www.cnblogs.com/jian-song/p/11587563.html
Copyright © 2011-2022 走看看