POJ 2965

POJ-2965:玛雅历 题目描述: 总时间限制: 1000ms 内存限制: 65536kB 描述上周末,M.A. Ya教授对古老的玛雅有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做Haab的历法。这个Haab历法拥有19个月,在开始的18个月,一个月有20天,月份的名字分别是pop, no, zip, zotz, tzec, xul, yox 阅读详情
解法:
开一个4X4的Bool数组,开始全为false.
如果输入(i,j)处有"+",将该行该列取反。
最后有多少true就是最少步数。输出为true的坐标就是步骤。
 
证明:要使一个为'+'的符号变为'-',必须其相应的行和列的操作数为奇数;可以证明,如果'+'位置对应的行和列上每一个位置都进行一次操作,则整个图只有这一'+'位置的符号改变,其余都不会改变.设置一个4*4的整型数组,初值为零,用于记录每个点的操作数,那么在每个'+'上的行和列的的位置都加1,得到结果模2(因为一个点进行偶数次操作的效果和没进行操作一样,这就是楼上说的取反的原理),然后计算整型数组中一的个数即为操作数,一的位置为要操作的位置(其他原来操作数为偶数的因为操作并不发生效果,因此不进行操作)。
 
在上述证明中将所有的行和列的位置都加1后,在将其模2之前,对给定的数组状态,将所有的位置操作其所存的操作数个次数,举例,如果a[i][j]==n,则对(i,j)操作n次,当所有的操作完后,即全为‘-’的数组。其实就是不模2的操作,作了许多的无用功。
以上的操作次序对结果无影响,如果存在一个最小的步骤,则此步骤一定在以上操作之中。(简单说下:因为以上操作已经包含了所有可改变欲改变位置的操作了)而模2后的操作是去掉了所有无用功之后的操作,此操作同样包含最小步骤。但模2后的操作去掉任何一个或几个步骤后,都不可能再得到全为‘-’的。(此同样可证明:因为操作次序无影响,先进行最小步骤,得到全为‘-’,如果还剩下m步,则在全为‘-’的数组状态下进行这m步操作后还得到一个全为‘-’的数组状态,此只能是在同一个位置进行偶数次操作,与前文模2后矛盾,所以m=0),因此模2后的操作即为最小步骤的操作。
分析:方法很好,可我想不到,我想到的是暴力枚举,用bitset<16>bit,描述16个状态,1000s刚好过,还是这种方法好呀!!
代码:
#include<stdio.h>
bool maze[4][5];
char str[4][5];
void turn(int x,int y)
{
    if(maze[x][y]==false)
        maze[x][y]=true;
    else maze[x][y]=false;
}
int main()
{
    freopen("in.txt","r",stdin);
    int count=0;
    for(int i=0;i<4;i++)
        scanf("%s",str[i]);
    for(int i=0;i<4;i++)
    {
      for(int j=0;j<4;j++)
      {
          if(str[i][j]=='+')
          {
            for(int m=0;m<4;m++)turn(i,m);
            for(int m=0;m<4;m++)turn(m,j);
            turn(i,j);
          }
      }
    }
    for(int i=0;i<4;i++)
        for(int j=0;j<4;j++)
            if(maze[i][j]==true)count++;
    printf("%d\n",count);
    for(int i=0;i<4;i++)
        for(int j=0;j<4;j++)
            if(maze[i][j]==true)printf("%d %d\n",i+1,j+1);
     return 0;
}
POJ2965-The Pilots Brothers' refrigerator 北大POJ2965-The Pilots Brothers' refrigerator 解题报告+AC代码 立即下载

相关推荐

TTL转RS422(B)工业级转换模块设计:从原理到实战部署

在工业自动化与嵌入式系统中,串行通信是实现设备间数据交换的基础。其核心原理在于通过特定的电气标准与协议,将数据位序列化后进行传输。RS422作为一种差分平衡传输协议,相比常见的TTL电平,在抗共模干扰与远距离传输能力上具有显著的技术优势,这使其成为工业现场总线、楼宇自动化等对可靠性要求严苛场景的优选方案。要实现TTL设备与RS422网络的稳定互联,关键在于设计一个能够完成单端信号到差分信号高质量转换的硬件模块。这涉及到差分总线收发器芯片的选型、包含终端电阻与TVS二极管的保护电路设计,以及遵循差分走线规则的

weixin_29195615的博客 342

POJ 2965 (枚举)

题意: 这个题和之前的1753差不多一样,主要就是只有全在open状态的时候才能开,,改变某个值的时候,这一行和 这一列都要进行反转,而且还得把最小步数一个一个打印出来,具体分析见POJ 1753 代码:#include <iostream> #include <cstring> #include <cmath> using namespace std; int ans=35;

happy_doy的博客 453

Wireshark时间分析实战:精准调试网络延迟与时间同步问题

本文深入探讨了Wireshark在网络延迟与时间同步问题分析中的核心应用。通过实战案例,详细讲解了如何设置时间显示格式、利用时间参考点量化关键路径延迟,以及运用时间平移功能校正错位时间轴。掌握这些时间分析技巧,能帮助网络工程师精准定位隐藏于数据包时序中的性能瓶颈与故障根源。

weixin_29290963的博客 262

枚举——POJ2965

POJ2965 /* Amazing! ************************************************************ 算法原理: 设'+'出现在位置(i,j) 对于除去{(i,j)+(i,:)+(:,j)}的开关每个被翻转2次; 对于{(i,:)+(:,j)}上的开关每个被同行(同列)翻转4次; 对于(i,j)上的开关被翻转7

zykimmy的博客 424

GD-Link离线烧录全攻略:从配置到一键下载的保姆级教程

本文详细介绍了GD-Link离线烧录的全流程,从硬件准备到软件配置,再到一键下载的实战技巧。通过保姆级教程,帮助工程师快速掌握国产MCU的离线烧录技术,适用于产线批量烧录和现场设备维护等场景,显著提升工作效率。

ww90123的博客 649

告别环境配置噩梦:用Docker Desktop + WSL2在Windows上5分钟搞定vLLM运行环境

本文详细介绍了如何在Windows系统上使用Docker Desktop和WSL2快速搭建vLLM开发环境,5分钟内完成配置。通过容器化技术解决传统环境配置中的依赖冲突、环境污染等问题,提供一键复用的高效方案,特别适合AI开发者快速部署和测试vLLM框架。

weixin_28728495的博客 502

poj 2965 解题报告

就是对一个4X4的棋盘进行翻转,每一次翻转都将让同一行和列一起翻转,直到所有符号都变为‘-’时成功。 通过枚举加上深度优先搜索的方法进行解决,枚举通过行号和列号顺序进行,每个位置都有翻转和不翻转两种选择(通过一个位置两次翻转来回溯) //poj 2965 //244K 844MS #include using namespace std; bool OpenClose

firechungelaile的专栏 827

视觉Transformer实战 | 将卷积引入视觉Transformer(CvT)

CvT 是一种融合卷积神经网络与 Vision Transformer 优势的视觉模型,旨在解决 ViT 缺乏平移不变性和局部性等归纳偏置的问题。CvT 采用分层结构逐级降采样,使用卷积词元嵌入代替传统 patch 切分,引入卷积投影替代线性投影。这些设计使得 CvT 能够去除位置编码,在高分辨率输入下表现更优。本节深入解析 CvT 的核心原理,并提供完整的 PyTorch 代码实现,演示如何在实际数据集上训练和评估 CvT 模型。

盼小辉丶的博客 726

[POJ]POJ2965(dfs)

题意:给出一个4*4的01方阵,每次可选择i,j使第i行和第j列状态取反,求全变成0的最小步数。显然每个坐标最多选择一次,因此最多有2^16种选法,枚举最小步数dfs即可。#include <cstdio> #include<iostream> #include<algorithm> using namespace std; typedef lo...

weixin_30537451的博客 199

查找【优快云】- 人工客服

【代码】查找【优快云】- 人工客服。

👨‍💻 前端开发者 | 技术分享者 1401

【测开求职】面试题:计算机网络 详细版整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍计算机网络的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。

vector的博客 5936

poj 2965 The Pilots Brothers' refrigerator

http://poj.org/problem?id=2965 位运算+搜索 题意:将下图这样的图案都变成减号,规则每次改变一个,这一个的行和列都会发生转换; 思路:总共有2^16的情况,全部都搜一遍,用位运算一次改变一行和一列; -+-- ---- ---- -+-- 搜索题解: View Code #include <iostream>#include &...

weixin_34013044的博客 119

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

Poj2965

和Poj1753一样,但是Poj2965要求输出路径,暴力就完事儿了 http://poj.org/problem?id=1753 http://poj.org/problem?id=2965 //Poj2965 #include<cstdio> #include<algorithm> #include<string.h> #include<vec...

qq_35752161的博客 351

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

POJ初级分类 枚举专题 poj1753 poj2965

POJ1753 题目大意:给你一个 4X4 的棋盘,每次操作你可以反转一个棋子,但是附加着把上下左右相邻的棋子也反转。   如果经过一定次数的操作可以使棋子变得全相同,就输出操作数;反之,就输出impossible。 思路:想到了用0 1替换a、b,从而简化操作,然而对递归回溯并不是理解的很透彻,看的别人的代码才勉强写出来,太弱了,弱弱要变强! #include//POJ1753 #i

huatian5的博客 2779

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

POJ 2965 枚举

题意 传送门 POJ 2965 题解 枚举 2162^{16}216 种可能的开关选取方法,对满足条件的方法更新答案即可。 #include <algorithm> #include <cmath> #include <cstdio> #include <cstring> using namespace std; int sw[4][4], tmp[4][4], tx[16], ty[16], rx[16], ry[16]; char str[4][4];

neweryyy的博客 267

POJ 1753 POJ 2965 解题报告

<br /> <br />POJ 1753 POJ 2965 解题报告<br />POJ 1753 和 POJ 2965 是同一类型的题目,但是2965 有一个比较简单的方法来解决。<br /> <br />POJ 1753 我用的是打表的方法,打表很不厚道。<br />思路:<br />首先我们需要确定存储的数据结构,从网上搜得用二进制位来存,这确实是个很巧妙的方法,例如,我们将问题简化为一个2X2 的矩阵,那么就只需要有4 个二进制位就可以存储,假如我

Kunsa的编程专栏 2338

POJ 2965 题解

POJ 2965 题解题目地址AC代码题解和题目思路 题目地址 这是地址 AC代码 #include <iostream> #include <cstring> using namespace std; int list[4][4]; int ans = 65536; int boo = 0; int mark[4][4]; int listOfAns[4][4]; ...

a47451516的博客 227

poj 2965

http://poj.org/problem?id=2965 本题要结合poj 1753 来看最好。。。又有了一点搜索的经验。。加油。。。 1 #include <iostream> 2 #include<queue> 3 #include<cstring> 4 using namespace std; 5 int step[...

a18865477815的博客 76

poj2965(枚举)题解

poj2965(枚举)题解 题目 Description The game “The Pilots Brothers: following the stripy elephant” has a quest where a player needs to open a refrigerator. There are 16 handles on the refrigerator door. Every...

简 --- 386

POJ 2965 The Pilots Brothers' refrigerator【枚举+dfs】

题目:http://poj.org/problem?id=2965 来源:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26732#problem/B 题意: 就是把题目中给出的状态图,全部翻转成 ---- ---- ---- ----状态 翻转: 每次翻转一个,那么它所在的行和列都要翻转 问最小翻转次数,

free斩 6364

POJ2965

POJ原址:POJ2965 这道

Leafy_xy 521

poj2965 java_POJ2965 The Pilots Brothers' refrigerator

POJ2965The Pilots Brothers' refrigeratorTime Limit:1000MSMemory Limit:65536KTotal Submissions:31415Accepted:12159Special JudgeDescriptionThe game “The Pilots Brothers: following the stripy elephan...

weixin_34086714的博客 191

poj2965

最近再用ubuntu系统,这是在ubuntu下写的第一个像样的程序,呵呵。 vim编辑器很强大,就是不太会用啊,倒腾了半天终于把配置文件给改了,能自动缩进等等,用起来舒服多了。 poj2965,直接在1753上改写一下就行了。 poj 2965代码:#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;fstream&g...

爱.NET 190

POJ2965 The Pilots Brothers' refrigerator

题目链接:http://poj.org/problem?id=2965 大致题意:这题和POJ1753 Flip GAME差不多,就是在这里反转时是一整行一整列都要变化,而不像1753题只是相邻的上下左右要变化,具体见https://blog.youkuaiyun.com/Fitz1318/article/details/86146329 解题思路:具体见https://blog.youkuaiyun.com/Fit...

Fitz的博客 383

poj2965枚举

http://poj.org/problem?id=2965 1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int i,j,k,t; 6 int f[4][4]={0}; 7 char ch; 8 for(i=0;i&l...

94
上一篇: 关于阅读技术类图书的思考
下一篇: UNREFERENCED_PARAMETER的用处
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值