AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

【迷妹模式题解】让我们看看Tourist三分钟写的代码

作者: 作者的头像   Alier ,  2019-12-24 13:47:14 ,  所有人可见 ,  阅读 6049


5


原题链接:Codeforces Round #609 (Div. 1) B. Domino for Young
题目相关数学知识请参见这里(看不用付费的部分,学会染色法就够了)
(又见Matrix67大佬,不过和这题稍微有点不同)

给相邻的格子分别图上白色和黑色,计算有多少白色与黑色的格子,取min就是答案(多米诺一定要占据1个黑格子和1个白格子)

/**
 *    author:  tourist
 *    created: 21.12.2019 14:08:24       
**/
#include <bits/stdc++.h>

using namespace std;

int main() {
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }

  //cnt[0]计算白格子的数量,cnt[1]计算黑格子的数量
  //假设偶数列以黑格子开始,奇数列以白格子开始(从下往上数)
  //(黑白全都倒一下也一样)
  vector<long long> cnt(2, 0);
  for (int i = 0; i < n; i++) {
    cnt[i % 2] += a[i] / 2; //偶数列白格子个数为格子数/2,奇数列黑格子数为格子数/2
    cnt[(i + 1) % 2] += (a[i] + 1) / 2;//偶数列黑格子为格子数/2后向上取整,奇数列白格子数为格子数/2向上取整
  }
  cout << min(cnt[0], cnt[1]) << '\n';//取min获得答案
  return 0;
}

3 评论


用户头像
zifeiyu333   2024-03-29 18:53         踩      回复

不错,学习了,向大佬学习


用户头像
福如东海   2019-12-25 22:55         踩      回复

他为什么不用scanf 而是用cin

用户头像
Alier   2019-12-26 14:11         踩      回复

因为这里输入输出比较小在10^5以下,scanf和cin造成的读取速度差异没有那么明显。另外这是个拼手速的比赛,同分的情况下按提交时间排名,cin明显打起来比scanf快。


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息