zoukankan      html  css  js  c++  java
  • D. Domino for Young

    基本思想是利用涂色的方法,用黑白两种颜色把方格全部涂色,相邻方格不同色。

    方法1:基于二分图匹配的思想

    一开始也想过二分图匹配,但数据量太大,就放弃了这种想法。其实根据增广路的定义。如果白色的方格的数量小于黑色方格数量,那么当白色方格还没有匹配完时,一定有黑色的方格没有匹配。那么从该白色的方格出发,一定可以走出一条增广路到达黑色的方格。即数量少的颜色一定可以匹配完。那么只要求出二者数量的最小值即可。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N=3e5+5;
     4 int a[N];//把图涂成两种颜色: 黑和白
     5 int n;//求黑色和白色块的数量的最小值
     6 int main()
     7 {
     8     while(scanf("%d",&n)!=EOF)
     9     {
    10        long long ans1=0,ans2=0;
    11        int a;
    12        for(int i=1;i<=n;i++)
    13        {
    14            scanf("%d",&a);
    15            ans1+=(a/2);
    16            ans2+=(a/2);
    17            if(i&1)
    18            {
    19                if(a&1)
    20                 ans1++;
    21            }
    22            else
    23            {
    24                if(a&1)
    25                 ans2++;
    26            }
    27        }
    28        printf("%lld
    ",min(ans1,ans2));
    29     }
    30     return 0;
    31 }
    View Code

    方法2:

    对于每一列,一列一列的放的话,那么如果该列的方格数量为偶数那么最后该列一定不剩下方格,如果为奇数,那么肯定会剩下一个,所以最终结果就是如果黑色和白色的方格数量不等的话,那么最后一定会剩下。且数量少的一定会被删除。

  • 相关阅读:
    运维自动化-Ansible
    YARN 的深入简出
    HDFS 总结
    IDEA 创建HDFS项目 JAVA api
    解决 HDFS 开发 java.lang.IllegalArgumentException: java.net.UnknownHostException: hadoop000
    hadoop深入简出(二)
    大数据hadoop的伪分布式搭建
    anaconda的安装tensorflow
    switch只跟在这些之后
    jsp页面之初体验
  • 原文地址:https://www.cnblogs.com/1024-xzx/p/12109642.html
Copyright © 2011-2022 走看看