zoukankan      html  css  js  c++  java
  • codeforces_333B_水过

    B. Chips
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Gerald plays the following game. He has a checkered field of size n × n cells, where m various cells are banned. Before the game, he has to put a few chips on some border (but not corner) board cells. Then for n - 1 minutes, Gerald every minute moves each chip into an adjacent cell. He moves each chip from its original edge to the opposite edge. Gerald loses in this game in each of the three cases:

    • At least one of the chips at least once fell to the banned cell.
    • At least once two chips were on the same cell.
    • At least once two chips swapped in a minute (for example, if you stand two chips on two opposite border cells of a row with even length, this situation happens in the middle of the row).

    In that case he loses and earns 0 points. When nothing like that happened, he wins and earns the number of points equal to the number of chips he managed to put on the board. Help Gerald earn the most points.

    Input

    The first line contains two space-separated integers n and m (2 ≤ n ≤ 1000, 0 ≤ m ≤ 105) — the size of the field and the number of banned cells. Next m lines each contain two space-separated integers. Specifically, the i-th of these lines contains numbers xi and yi(1 ≤ xi, yi ≤ n) — the coordinates of the i-th banned cell. All given cells are distinct.

    Consider the field rows numbered from top to bottom from 1 to n, and the columns — from left to right from 1 to n.

    Output

    Print a single integer — the maximum points Gerald can earn in this game.

    Examples
    input
    3 1
    2 2
    output
    0
    input
    3 0
    output
    1
    input
    4 3
    3 1
    3 2
    3 3
    output
    1

    题意:在一个n*n的矩阵的边上的单元格(角上的单元格不能放)中放入chip,每秒种chip向着它的对边移动一个单元格,进行n-1秒
    以下三种情况为输得0分:
      1.两个chip出现在同一个单元格中。
      2.两个chip在一秒中互换位置。
      3.至少一个chip落在禁止的单元格中。
    矩阵中可以放的chip数的最大值为其得分。

    思路:初看无思路。(目前看来比较暴力)从第2行开始遍历行,若无障碍,可放一个,与该行沿对角线对称的列上,若无障碍则也可放一个,这个规则一定成立。若n等于奇数,则需考虑特殊情况,若n/2+1行和n/2+1列均无障碍的情况下,这一行和这一列一共只能放一个。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    #define N 1005
    
    int map[N][N];
    
    int main()
    {
        int n,m,x,y,mr=1,mc=1;
        scanf("%d%d",&n,&m);
        for(int i=0; i<m; i++)
        {
            scanf("%d%d",&x,&y);
            map[x][y]=-1;
        }
        int res=0;
        for(int i=2; i<n; i++)
        {
            int ok=1;
            for(int j=1;j<=n;j++)
            {
                if(map[i][j]==-1)
                {
                    ok=0;
                    if(n%2==1&&(i==n/2+1))
                        mr=0;
                    break;
                }
            }
            if(ok)
                res++;
            ok=1;
            for(int j=1;j<=n;j++)
            {
                if(map[j][i]==-1)
                {
                    ok=0;
                    if(n%2==1&&i==(n/2+1))
                        mc=0;
                    break;
                }
            }if(ok)
                    res++;
        }
        if(n%2==1&&mc==1&&mr==1)
            res--;
        printf("%d
    ",res);
        return 0;
    }
  • 相关阅读:
    Glide只播放一次Gif以及监听播放完成的实现方案
    Android 插件化开发(四):插件化实现方案
    Android 插件化开发(三):资源插件化
    Android 插件化开发(二):加载外部Dex文件
    Android 插件化开发(一):Java 反射技术介绍
    Android框架式编程之架构方案
    Android 项目优化(六):项目开发时优化技巧总结
    Android 项目优化(五):应用启动优化
    Android 项目优化(四):内存优化
    Android 项目优化(三):MultiDex 优化
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5396649.html
Copyright © 2011-2022 走看看