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

方法2:

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

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

时间: 2024-08-30 16:16:59

D. Domino for Young的相关文章

codeforces 1269D. Domino for Young (二分图证明/结论题)

链接:https://codeforces.com/contest/1269/problem/D 题意:给一个不规则的网格,在上面放置多米诺骨牌,多米诺骨牌长度要么是1x2,要么是2x1大小,问最多放置多米诺骨牌的数量. 思路:首先这是一个结论题,对每个方格进行染色,一个方格染黑色,周围邻近的就染白色,答案就是黑色方格数量和白色方格数量的最小值.这个结论可以用二分图进行证明:把问题抽象成最大二分图匹配,每两个点之间连一条边.一个格子和周围格子连一条边,如果一个格子周围的还没被匹配,那么匹配数+1

Codeforces Round #609 (Div. 2) 题解

Equation Modulo Equality Long Beautiful Integer Domino for Young K Integers Equation \[ Time Limit: 3 s\quad Memory Limit: 256 MB \] 这题做法很多,甚至可以直接暴力判断 view #include <map> #include <set> #include <list> #include <ctime> #include <

Codeforces Round #609 (Div. 2) A-E简要题解

contest链接:https://codeforces.com/contest/1269 A. Equation 题意:输入一个整数,找到一个a,一个b,使得a-b=n,切a,b都是合数 思路:合数非常多,从1开始枚举b,a就是b+n,每次check一下a,b是否是合数,是的话直接输出,break即可 AC代码: 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<cstri

POJ 1135 Domino Effect(最短路 多米诺骨牌)

题意 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两张骨牌之间只有很短的空隙.如果排列得很好,当你推 倒第 1张骨牌,会使其他骨牌连续地倒下(这就是短语"多米诺效应"的由来). 然而当骨牌数量很少时,这种玩法就没多大意思了,所以一些人在 80 年代早期开创了另一个 极端的多米诺骨牌游戏:用上百万张不同颜色.不同材料的骨牌拼成一幅复杂的图案.他们开创 了一种流行的艺术.在这种骨牌游戏中,通常有多行骨牌同时

Young Maids

E - Young Maids Time limit : 2sec / Memory limit : 256MB Score : 800 points Problem Statement Let N be a positive even number. We have a permutation of (1,2,…,N), p=(p1,p2,…,pN). Snuke is constructing another permutation of (1,2,…,N), q, following th

Domino数据源

Domino应用程序实际上是一种特护类型的数据库,允许将应用程序作为Domino文档进行存储. 一个Domino文档将数据存放在一系列域中,,每一个域都有自己的数据类型. 表单用于描述文档的数据结构 小结:表单设计元素用来定义文档的内容,比如myTopic中的表单选择. 视图设计元素是NOTES用来管理文档的集合  显示时间日期  删除 添加 xpages是NOTES/DOMINOX新的web应用开发框架. 在本地测试中要关闭domino服务器,使用quit命令.

Linux环境下Domino多帐户自动启动

#! /bin/sh # # A startup script for the ND server # description: This script is used to start the domino server as a background process. # Usage /etc/init.d/domino start|stop ? ? # You should change the 3 following variables to reflect your environme

【转载】给那些想多学习,多进步的Domino初学者

在这个社区里面,包括QQ技术群里面混了很久了.遇到了很多Domino初学者,也认识了很多致力于Domino这个技术领域的朋友,很开心.很久没有写长篇大论给大家了.我要把一些想法写出来,共大家参考.讨论.共勉,算是我倚老卖老,班门弄斧吧. 感想一.为什么不好好看看那些英文的提示?有些网友经常问“xxxxxxxxx”是怎么回事.其实英文的意思已经很明白了,把英文搞搞明白就好了.你知道了具体的报错,再去找答案.我以前提到过,不管你学不学Lotus,英文这关绝对是软件开发工程师必须要过的.如果你连“CN

[2016-03-22][CF][69A][Young Physicist]

时间:2016-03-22 19:41:34 星期二 题目编号:[2016-03-22][CF][69A][Young Physicist] 题目大意:判断向量和是否为0 分析:对应坐标相加 遇到的问题:不能用x+y+z来判断是否都为0,除非输入都是正数 #include <cstdio> using namespace std; int main(){ int a,b,c,x,y,z,n; x = y = z = 0; scanf("%d",&n); for(in