码迷,mamicode.com
首页 > 其他好文 > 详细

D. Domino for Young

时间:2019-12-27 21:46:10      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:std   技术   div   思想   pac   二分图匹配   cli   二分   eve   

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

方法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\n",min(ans1,ans2));
29     }
30     return 0;
31 }
View Code

方法2:

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

D. Domino for Young

标签:std   技术   div   思想   pac   二分图匹配   cli   二分   eve   

原文地址:https://www.cnblogs.com/1024-xzx/p/12109642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!