码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C. Madoka and Childish Pranks #777 div2


    Problem - C - Codeforces

    题意是给你一个01矩阵,按照画象棋的模式能不能把一个全部是0的矩阵变成给的矩阵

    这题想的复杂了一点点,其实还好

    这题明白了之后发现构造题的漂亮了

    首先象棋是010...这种错开的形式,分析可得,最简单的构造方法是01 01的这样构造

    所以对于每一个1而言0只会在上面或者左边

    而对于一个连续的1来说左边或者上面必有0,除了

    011111

    111111的这种形式,因为最后一排的第一个1的0可以转化到上面

    其实可以直接顺次找到1,然后01这样枚举

    但是有连续的1存在,这样做就很麻烦了。现在才是构造的美

    可以从最后一个开始(自己模拟一下顺序就知道了),如果碰到1直接加入01的这种(也不考虑上下了),考虑越多情况越复杂,直接限定一个。随后如果1在最边上也就是最左边,那就加入到上面的里面,一直往上走。

    1. #pragma GCC optimize(1)
    2. #pragma GCC optimize(2)
    3. #pragma GCC optimize(3,"Ofast","inline")
    4. #define IOS ios::sync_with_stdio(false), cin.tie(0);
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. using namespace std;
    15. typedef long long ll;
    16. typedef pair<int,int> PAII;
    17. const int N=2e6+10,M=5050,INF=0x3f3f3f3f,mod=998244353;
    18. char ch[M][M];
    19. struct mess{
    20. int x1,y1,x2,y2;
    21. };
    22. vector v;
    23. int main(){
    24. //IOS;
    25. int T;
    26. //T=1;
    27. cin>>T;
    28. while(T--)
    29. {
    30. v.clear();
    31. int n,m;
    32. cin>>n>>m;
    33. for(int i=1;i<=n;i++)
    34. for(int j=1;j<=m;j++)
    35. cin>>ch[i][j];
    36. if(ch[1][1]=='1')
    37. {
    38. cout<<"-1\n";
    39. continue;
    40. }
    41. int cnt=0;
    42. for(int i=n;i>=1;i--)
    43. {
    44. for(int j=m;j>=1;j--)
    45. {
    46. if(ch[i][j]=='1')
    47. {
    48. if(j>1) v.push_back({i,j-1,i,j});
    49. else v.push_back({i-1,j,i,j});
    50. }
    51. }
    52. }
    53. cout<size()<<"\n";
    54. for(auto it:v) cout<" "<" "<" "<"\n";
    55. }
    56. return 0;
    57. }
    58. /*
    59. 1的左边或者上面必须要有0
    60. 连续的1
    61. */

  • 相关阅读:
    DRM系列(8)之prepare_signaling
    【无人机】基于Matlab的四旋翼无人机控制仿真
    计算机毕业设计java+ssm阳光心理健康网站的设计与实现
    element ui框架(嵌套路由)
    烽火HG680-KA_310_免费升级刷机固件包及教程
    大数据课程L8——网站流量项目的SparkStreaming整合代码
    Python开发技术—文件和异常5
    python基础(一)、列表的创建和操作
    Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【一】
    Missing xsltproc. Doc not built.
  • 原文地址:https://blog.csdn.net/m0_63305704/article/details/126346718
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号