• 8.31


    DlIFVDq

    P2955 [USACO09OCT]奇数偶数Even? Odd?

    本题亮点:I (1 <= I <= 10^60);这是一个long long 也存不下来的数,那怎么读入呢?又怎么储存呢?

    字符串大爷。
    (注意字符串的最后一位可能是‘ ’,注意一下)

    372. 棋盘覆盖

    • 建图的方式
    • 数组的空间多思考一下
    /*
    4 6
    1 3
    1 4
    2 1
    2 3
    4 2
    4 4
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define rep(i,a,b) for(int i=a;i<=b;++i)
    #define dwn(i,a,b) for(int i=a;i>=b;--i) 
    template <typename T> inline void rd(T &x){x=0;char c=getchar();int f=0;while(!isdigit(c)){f|=c=='-';c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x=f?-x:x;} 
    inline void write(int n){if(n==0)return;write(n/10);putchar(n%10+'0');}
    #define mem(a,b) memset(a,b,sizeof(a))
    #define ee(i,u) for(int i=head[u];i;i=e[i].next)
    
    #define maxx 2000000
    const int N = 105;
    
    int head[maxx],edge_num,ans;
    int match[20000],col[N][N];//为什么开10000就不对呢????
    bool zg[20000];
    bool vis[N][N];
    
    struct edge{
        int v,next;
    }e[maxx];
    
    inline void add(int u,int v){
        e[++edge_num].v=v;
        e[edge_num].next=head[u];
        head[u]=edge_num;
    }
    
    int n,t,x,y;
    
    inline bool dfs(int u){
        ee(i,u){
            int v=e[i].v;
            if(!zg[i]){
                zg[i]=1;
                if(match[v]==0 || dfs(match[v])){
                    match[v]=u;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main(){
    	#ifdef WIN32
    	//freopen("qipan.txt","r",stdin);
    	#endif
    	rd(n),rd(t);
    	while(t--){
    	    rd(x),rd(y);
    	    vis[x][y]=1;
    	}
    	rep(i,1,n)
    	    rep(j,1,n){
    	        if((i+j)%2==0 && vis[i][j]==0) col[i][j]=2;//白 
    	        else if((i+j)%2==1 && vis[i][j]==0) col[i][j]=1;//黑 
    	    }
    	rep(i,1,n)
    	    rep(j,1,n){/*
    	        if(col[i][j]==1){
    	            if(col[i+1][j]==2){
    	                add((i-1)*n+j,i*n+j);
    	                printf("%lld %lld
    ",(i-1)*n+j,i*n+j);
    	            }
    	            else if(col[i-1][j]==2){
    	                add((i-1)*n+j,(i-2)*n+j);
    	                printf("%lld %lld
    ",(i-1)*n+j,(i-2)*n+j);
    	            }
    	            else if(col[i][j-1]==2){
    	                add((i-1)*n+j,(i-1)*n+j-1);
    	                printf("%lld %lld
    ",(i-1)*n+j,(i-1)*n+j-1);
    	            }
    	            else if(col[i][j+1]==2){
    	                add((i-1)*n+j,(i-1)*n+j+1);
    	                printf("%lld %lld
    ",(i-1)*n+j,(i-1)*n+j+1);
    	            }
    	        }*/
    	        if(col[i][j]==2){
    	            if(col[i+1][j]==1){
    	                add((i-1)*n+j,i*n+j);
    	                //printf("%lld %lld
    ",(i-1)*n+j,i*n+j);
    	            }
    	            if(col[i-1][j]==1){
    	                add((i-1)*n+j,(i-2)*n+j);
    	                //printf("%lld %lld
    ",(i-1)*n+j,(i-2)*n+j);
    	            }
    	            if(col[i][j-1]==1){
    	                add((i-1)*n+j,(i-1)*n+j-1);
    	                //printf("%lld %lld
    ",(i-1)*n+j,(i-1)*n+j-1);
    	            }
    	            if(col[i][j+1]==1){
    	                add((i-1)*n+j,(i-1)*n+j+1);
    	                //printf("%lld %lld
    ",(i-1)*n+j,(i-1)*n+j+1);
    	            }
    	        }
    	    }
        mem(match,0);
        rep(i,1,n*n){
            mem(zg,0);
            if(dfs(i))
                ans++;
        }
        printf("%d",ans);
    	return 0;
    }
    

    https://www.nowcoder.com/study/live/249

  • 相关阅读:
    12864多级菜单实现,可方便实现无限级菜单(转)
    一起来学习PID
    STM32探秘 之FSMC
    RAD Studio (Delphi) Firemonkey 教程
    POS终端MAC算法-C语言实现
    STM32的PWM输入模式设置并用DMA接收数据
    AVR web server
    Linux 查看服务状态(服务与进程)
    linux设置开机自启动
    科目三靠边停车难度升级,超过50cm不合格怎么破?
  • 原文地址:https://www.cnblogs.com/sjsjsj-minus-Si/p/11634775.html
Copyright © 2020-2023  润新知