首页 > 其他分享 >AGC008C Tetromino Tiling

AGC008C Tetromino Tiling

时间:2023-08-26 16:15:01浏览次数:44  
标签:lfloor AGC008C Tetromino dfrac long times && Tiling 方块

需要注意细节的图形趣题。

给出如下图的 \(7\) 种俄罗斯方块各 \(a,b,c,d,e,f,g\) 块,可以旋转不能翻转,要求拼成宽度为 \(2\) 的长方形。输出能得到的最大长度的一半。

不难发现,第 \(3,6,7\) 种方块压根用不上,因为它们造成了长度为 \(1\) 的凹槽,而这些凹槽永远不可能被填平:要填平它们,就要用这三种方块;用了这三种方块,又会有新的凹槽产生。

下面考虑每种方块“自力更生”能否拼出宽度为 \(2\) 的长方形:

  • 第 \(1\) 种,竖着两个并排,长宽 \(4\times 2\);
  • 第 \(2\) 种,自己符合条件,长宽 \(2\times 2\);
  • 第 \(3,4\) 种,一个倒扣在另一个上面,长宽 \(4\times 2\)。

看起来长度的一半为 \(L=\lfloor\dfrac{a}{2}\rfloor\times 2+b+\lfloor\dfrac{d}{2}\rfloor\times 2+\lfloor\dfrac{e}{2}\rfloor\times 2\)。

还没完!我们继续考虑几种方块“通力合作”能否拼出宽度为 \(2\) 的长方形:只有一种方案,即第 \(1,4,5\) 种方块各一个,拼成长宽 \(6\times 2\) 的长方形,如下图所示:

以此为基础,我们对上面的式子进行修正:

  • 如果第 \(1,4,5\) 种方块都为奇数,在满足“自力更生”前提下,每种恰有一块剩余,可以组合,故 \(L\gets L+3\);
  • 如果第 \(1,4,5\) 种方块,只有两种为奇数,则最后会剩下两块。例如剩下了 \(1,4\) 各一块,这时,我们拆出一个 \(5\),能得到更优的答案——拆出减 \(4\),重组加 \(6\),\(L\gets L+1\)。

下面是 AC 代码:

void main() {
    long long a, b, c, d, e, f, g;
    cin >> a >> b >> c >> d >> e >> f >> g;
    long long ans = (a / 2) * 2 + b + (d / 2) * 2 + (e / 2) * 2;
    if ((a & 1) + (d & 1) + (e & 1) >= 3)
        ans += 3;
    else if ((a & 1) + (d & 1) + (e & 1) >= 2 && (a > 0) && (d > 0) && (e > 0))//必须保证有,才能拆借
        ans++;
    cout << ans << endl;
}

THE END

标签:lfloor,AGC008C,Tetromino,dfrac,long,times,&&,Tiling,方块
From: https://www.cnblogs.com/th19/p/17658916.html

相关文章

  • UDTW&Textiling 一些记录
    一、       Algorithml Step1:定义SynchronousPoint我用的是diagonalbands。对每个SP,置M[SP]=1。l Step2:对每一个SP或possiblepath运用前向搜索算法前向搜索算法:判断三个后继点是否满足约束条件。若满足条件,则给D_g,S,M,矩阵赋值,并将此点看做possiblepat......
  • DBeaver Ultimate Edtion 23.1 Multilingual (macOS, Linux, Windows) - 通用数据库工
    DBeaverUltimateEdtion23.1Multilingual(macOS,Linux,Windows)-通用数据库工具,现已集成ChatGPTOnetoolforalldatasources请访问原文链接:https://sysin.org/blog/dbeaver-23/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org通用数据库工具DBeaver是......
  • 【论文阅读笔记】Distiling Causal Effect of Data in Class-Incremental Learning
    Author:HanwangZhang,XintingHuCreate_time:April24,202211:01AMEdited_by:HuangYujunPublisher:CVPR2021Org:NanyangTechnologicalUniversityDistilingCausalEffectofDatainClass-IncrementalLearning1.Contribution这是一篇从因果角度思考持续......
  • transvalor forming solutions FORGE NxT 4.0 简体中文版(Multilingual edition)
    TRANSVALORFORGENxT4.0 最新版本下载地址。https://www.123pan.com/s/dK5A-zrhuATRANSVALORFORGENxT4.0 download link  https://www.123pan.com/s/dK5A-zrhuA   完全自动化您的成型过程模拟工作流程    让我们从NxT4.0中最具创新性的功能之一开始:Pyt......
  • TopSolid 2023 v7.17 Multilingual edition full licensed
     T opSolid'Design2023在设计、钢材、模具和电极方面增加了近400项新功能: ·    逼真渲染模块已得到改进,引入了几个允许高质量逼真渲染的主要新功能。......
  • DBeaver Ultimate Edtion 23 Multilingual (macOS, Linux, Windows) - 通用数据库工具
    请访问原文链接:https://sysin.org/blog/dbeaver-23/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.org通用数据库工具DBeaver是一个通用的数据库管理工具,适......
  • POJ 2506 Tiling 递推+大数
    将答案存在ret数组里面n=0的时候居然是1递推关系ret[i]=ret[i-1]+ret[i-2]*2;注意是乘2不是3,当ret[i-2]时候,我们有两个单位可以操作,因为全竖起来的那种,在ret[......
  • [LeetCode] 790. Domino and Tromino Tiling
    Youhavetwotypesoftiles:a 2x1 dominoshapeandatrominoshape.Youmayrotatetheseshapes.Givenanintegern,return thenumberofwaystotilea......
  • poj3420 Quad Tiling--状压dp+矩阵快速幂
    原题链接:​​http://poj.org/problem?id=3420​​题意:一个4*n的格子,一个1*2的填充,求填充方式。分析:n最大是10^9,比较大,用矩阵快速幂优化速度。#define_CRT_SECURE_NO_DEPREC......
  • poj 2663 Tri Tiling--状压dp
    原题链接:​​http://poj.org/problem?id=2663​​题意:一个3*n的表格,用一个1*2的方块填充,在填满的情况下,一共多少种填充方式。#define_CRT_SECURE_NO_DEPRECATE#include<ios......