zoukankan      html  css  js  c++  java
  • 2017 济南综合班 Day 4

    T1 外星人

    二维前缀和

    #include<cstdio>
    #define N 1001
    using namespace std;
    bool v[N][N];
    int sum[N][N];
    int main()
    {
        freopen("alien.in","r",stdin);
        freopen("alien.out","w",stdout);
        int r,c,p,q;
        scanf("%d%d%d%d",&r,&c,&p,&q);
        int x,y;
        for(int i=1;i<=p;i++)
        {
            scanf("%d%d",&x,&y);
            v[x][y]=true;
        }
        for(int i=1;i<=r;i++)
         for(int j=1;j<=c;j++)
          sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+v[i][j];
        int ans=0;
        while(q--)
        {
            scanf("%d%d",&x,&y);
            for(int i=1;i<=r;i++)
             for(int j=1;j<=c;j++) 
             {
                 if(i-x>=0 && j-y>=0 && sum[i][j]-sum[i-x][j]-sum[i][j-y]+sum[i-x][j-y]==0) ans++;
                 if(x==y) continue;
                 if(i-y>=0 && j-x>=0 && sum[i][j]-sum[i-y][j]-sum[i][j-x]+sum[i-y][j-x]==0) ans++;
             }
            printf("%d
    ",ans);   ans=0;
        }
    }
    View Code

    T2 游戏

    点权*2

    边权分别加到两个点上

    排序、贪心、两人轮流选当前最大

    点权乘了2,边权是自己的乘了2,不是自己的减了去

    最后除2就是答案

    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #define N 10001
    using namespace std;
    int a[N];
    int main()
    {
        freopen("game.in","r",stdin);
        freopen("game.out","w",stdout);
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i]<<=1;
        int u,v,w;
        while(m--) 
        {
            scanf("%d%d%d",&u,&v,&w);
            a[u]+=w; a[v]+=w;
        }
        sort(a+1,a+n+1,greater<int>());
        int ans=0;
        for(int i=1;i<=n;i+=2)
        {
            ans+=a[i];
            ans-=a[i+1];
        } 
        printf("%d",ans>>1);
    }
    View Code

    T3 堡垒

    当时改了最后一行的输出,忘了改成啥了

    所以就忽略最后一行输出吧

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    char move;
    int m,n,xx,yy;
    int sum,tmp,maxn,big;
    int E[61][61][61][61],N[61][61][61][61];
    bool v[61][61];
    void dfs(int x,int y)
    {
        v[x][y]=true;  tmp++;
        if(x!=1 && !N[x][y][x-1][y] && !v[x-1][y]) dfs(x-1,y);
        if(y!=m && !E[x][y][x][y+1] && !v[x][y+1]) dfs(x,y+1);
        if(x!=n && !N[x+1][y][x][y] && !v[x+1][y]) dfs(x+1,y);
        if(y!=1 && !E[x][y-1][x][y] && !v[x][y-1]) dfs(x,y-1);
    }
    int main()
    {
        freopen("fortress.in","r",stdin);
        freopen("fortress.out","w",stdout);
        int x;
        scanf("%d%d",&m,&n);
        for(int i=1;i<=n;i++)
         for(int j=1;j<=m;j++)
          {
               scanf("%d",&x);
               if(x&(1<<1)) 
                N[i][j][i-1][j]=true;
               if(x&(1<<2)) 
                E[i][j][i][j+1]=true;
          }
        for(int i=1;i<=n;i++)
         for(int j=1;j<=m;j++)
          if(!v[i][j])  
          {
               sum++; tmp=0;
             dfs(i,j);
             maxn=max(maxn,tmp);
          }
        printf("%d
    %d
    ",sum,maxn);
        for(int i=n;i>=1;i--)
         for(int j=1;j<=m;j++)
         {
             if(i!=1 && N[i][j][i-1][j]) 
             {
                 memset(v,0,sizeof(v));
                N[i][j][i-1][j]=false;
                 tmp=0;
                 dfs(i,j);
                 if(tmp>maxn) maxn=tmp,xx=i,yy=j,move='N';
                 N[i][j][i-1][j]=true;
            }
            if(j!=m && E[i][j][i][j+1])
            {
                memset(v,0,sizeof(v));
                E[i][j][i][j+1]=false;
                tmp=0;
                dfs(i,j);
                if(tmp>maxn) maxn=tmp,xx=i,yy=j,move='E';
                E[i][j][i][j+1]=true;
            }
         }
        printf("%d
    ",maxn);
        printf("%d %d %c",xx,yy,move);
    }
    View Code
  • 相关阅读:
    异常学习笔记+打包+doc该软件包编译
    Meet Apache Wicket
    android 62 手机存储目录的划分
    android 61 logcat
    android 60 发送短信
    android 59 LinearLayout 线性布局
    LayoutInflater的inflate函数用法
    android 自定义Dialog背景透明及显示位置设置
    android 58 jvm和dvm的区别(Dalvil VM)
    Android如何创建背景透明的Dialog
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/7348681.html
Copyright © 2011-2022 走看看