zoukankan      html  css  js  c++  java
  • codeforces A. Domino 解题报告

    题目链接:http://codeforces.com/problemset/problem/353/A

    题目意思:通俗地说,就是当上下两半的数的总和不完全是偶数时,通过上下调换某些骨牌来使这两半的数和变成偶数,统计并输出调换多少次;如果不行,则输出-1。

         其实调换的次数最多只有1次,而实行调换的操作必须符合上下对应的数满足一奇一偶的条件,否则是白做的。如果调换一次之后,也不能使得上下两半的和都为偶数,那么就没必要继续判断了,直接输出“-1”。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 using namespace std;
     5 
     6 const int N = 100 + 5;
     7 int x[N], y[N];
     8 
     9 int main()
    10 {
    11     int n, i, sum1, sum2, flag;
    12     while (scanf("%d", &n) != EOF)
    13     {
    14     //  freopen("data.txt", "r", stdin);
    15         sum1 = sum2 = 0;
    16         for (i = 0; i < n; i++)
    17         {
    18             scanf("%d%d", &x[i], &y[i]);
    19             sum1 += x[i];
    20             sum2 += y[i];        
    21         }
    22         flag = 0;
    23     //  printf("sum1 = %d
    sum2 = %d
    
    ", sum1, sum2);
    24         if (sum1 % 2 || sum2 % 2)   // 至少一边为奇数
    25         {
    26             for (i = 0; i < n; i++)
    27             {
    28                 if ((x[i] % 2 && y[i] % 2 == 0) || (x[i] % 2 == 0 && y[i] % 2))  // 序列中第一次遇到奇偶的情况,只需要判断一次 
    29                 {
    30     //              printf("x[%d] = %d,  y[%d] = %d
    ", i, x[i], i, y[i]);
    31                     sum1 -= x[i];   // 调换之后两边的和发生改变
    32                     sum1 += y[i];
    33                     sum2 -= y[i];
    34                     sum2 += x[i];
    35                     flag = 1;   
    36     //              printf("sum1 = %d
    sum2 = %d
    ", sum1, sum2);
    37                     break;
    38                 }
    39             }
    40         }
    41         if (!flag && sum1 % 2 == 0 && sum2 % 2 == 0)  // 原来都为偶数,不需要交换
    42             printf("0
    ");
    43         else if (!(sum1 % 2 == 0 && sum2 % 2 == 0))  // 处理后还是一奇一偶的情况
    44             printf("-1
    ");
    45         else               // 处理后符合都为偶数
    46             printf("1
    ");
    47     }
    48     return 0;
    49 }

       

  • 相关阅读:
    详细解析Windows按键突破专家的原理
    详细解析Windows按键突破专家的原理
    简单线程注入的实现
    运用 Evince 阅读 PDF 电子书
    Sonata 0.7
    P7ZIP-Linux 中的 7Zip
    Firefox 特征扩展:Video Download
    若何在嵌入式Linux及下建造QPF字库
    Wink-Flash 演示录制软件
    自由软件:理想与实践
  • 原文地址:https://www.cnblogs.com/windysai/p/3372953.html
Copyright © 2011-2022 走看看