Fliptile

poj 3279 Fliptile所有测试数据txt文件,打开按样例粘贴使用 poj 3279 Fliptile所有测试数据txt文件,打开按样例粘贴使用。每个样例前面是输入,后面是输出,将输入数据粘贴输入,输出样例用于答案对比。 立即下载

Description
Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they manipulate an M × N grid (1 ≤ M ≤ 15; 1 ≤ N ≤ 15) of square tiles, each of which is colored black on one side and white on the other side.

As one would guess, when a single white tile is flipped, it changes to black; when a single black tile is flipped, it changes to white. The cows are rewarded when they flip the tiles so that each tile has the white side face up. However, the cows have rather large hooves and when they try to flip a certain tile, they also flip all the adjacent tiles (tiles that share a full edge with the flipped tile). Since the flips are tiring, the cows want to minimize the number of flips they have to make.

Help the cows determine the minimum number of flips required, and the locations to flip to achieve that minimum. If there are multiple ways to achieve the task with the minimum amount of flips, return the one with the least lexicographical ordering in the output when considered as a string. If the task is impossible, print one line with the word “IMPOSSIBLE”.

Input
Line 1: Two space-separated integers: M and N
Lines 2.. M+1: Line i+1 describes the colors (left to right) of row i of the grid with N space-separated integers which are 1 for black and 0 for white
Output
Lines 1.. M: Each line contains N space-separated integers, each specifying how many times to flip that particular location.
Sample Input
4 4
1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1
Sample Output
0 0 0 0
1 0 0 1
1 0 0 1
0 0 0 0
就是一个01矩阵,翻一个位置,那么周围四个相邻格子以及自身都会变为相反的数(即0变1,1变0),问最少步数的方案。第一下拿到这个题目是一点思路都没有,之后想的最暴力方法是每个枚举一遍,我疯了……但是发现,其实枚举某一行或者一列,那么其他的就可以定了。比如把最后一行情况列出来,如果这行还有1,那就只能通过上一行来改变它的值,再看题目说要求字典序最小的,那就是枚举第一行了,而且是先搜不翻的情况,再搜翻的情况,这样字典序才会最小。
PS:讨论区有人说数据有问题。
官方数据:
7 8
0 0 0 0 1 0 1 0
0 0 0 0 0 0 1 0
1 0 0 0 1 0 0 1
0 1 0 1 1 0 0 1
0 0 0 1 1 0 1 1
0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 0
它的答案是:
1 1 1 0 1 1 0 0
0 1 0 0 1 0 0 0
0 0 0 1 0 0 1 0
1 1 1 1 1 1 1 0
0 0 1 1 0 1 1 0
1 0 1 0 0 1 0 0
1 0 0 1 1 0 0 0

但其是如果我们理解成从左到右的话解为:
0 0 1 1 0 1 1 1
0 1 0 0 1 0 0 0
1 1 0 0 1 0 0 1
1 1 1 1 1 1 1 0
1 1 1 0 1 1 0 1
1 0 1 0 0 1 0 0
0 1 0 0 0 0 1 1
但是官方数据只用了26步,他们的解答要30步,题目要的是最少的步数,最小步数中最小字典序才是题目需要的,所以这个误导人可能。
还有,一直默认n为行,m为列,今天坑死我了……

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int m, n, pre;
int a[17][17], b[17][17], time, moban[17][17], moban2[17][17];
int max(int a, int b)
{
    return a > b ? a : b;
}
inline void ex_check(int x)
{
    int i, j, leap;
    leap = 0;
    for (i = 1; i <= m; i++)
    for (j = 1; j <= n; j++)
    {
        if (b[i][j] == 0)continue;
        else
        {
            leap = 1; break;
        }
    }
    if (!leap)
    {
        if (x < time)
        {
            time = x;
            for (i = 1; i <= m;i++)
            for (j = 1; j <= n; j++)
                moban2[i][j] = moban[i][j];
        }
    }
}
void check(int x)
{
    int i, j, sum, c[17][17];
    for (i = 1; i <= m;i++)
    for (j = 1; j <= n; j++)
        c[i][j] = moban[i][j];
    sum = x;
    if (x == 5){
        sum = x;
    }
    for (i = 2; i <= m; i++)
    {
        for (j = 1; j <= n; j++)
        {
            if (b[i - 1][j] == 1)
            {
                moban[i][j] = 1;
                b[i][j] = 1 - b[i][j];
                b[i - 1][j] = 0;
                if (j >= 2)
                    b[i][j - 1] = 1 - b[i][j - 1];
                if (j + 1 <= n)
                    b[i][j + 1] = 1 - b[i][j + 1];
                if (i + 1 <= m)
                    b[i + 1][j] = 1 - b[i + 1][j];
                sum++;
            }
        }
    }
    ex_check(sum);
    for (i = 1; i <= m; i++)
    for (j = 1; j <= n; j++)
        moban[i][j] = c[i][j];
}
void dfs(int x)
{
    int i, j, c[17][17], d[17][17];
    if (x == n + 1)
    {
        check(pre);
    }
    else if(x<=n)
    {
        for (i = 1; i <= m; i++)
        for (j = 1; j <= n; j++)
        {
            c[i][j] = b[i][j];
            d[i][j] = moban[i][j];
        }
        dfs(x + 1);
        for (i = 1; i <= m; i++)
        for (j = 1; j <= n; j++)
            b[i][j] = c[i][j];
        b[1][x] = 1 - b[1][x];
        moban[1][x] = 1;
        if (x - 1 >= 1)
            b[1][x - 1] = 1 - b[1][x - 1];
        if (x + 1 <= n)
            b[1][x + 1] = 1 - b[1][x + 1];
        if (m >= 2)
            b[2][x] = 1 - b[2][x];
        pre++;
        dfs(x + 1);
        pre--;
        for (i = 1; i <= m;i++)
        for (j = 1; j <= n; j++)
        {
            b[i][j] = c[i][j];
            moban[i][j] = d[i][j];
        }
    }
}
int main()
{
    int i, j;
    cin >> m >> n;
    for (i = 1; i <= m; i++)
    {
        for (j = 1; j <= n; j++)
        {
            scanf("%d", &a[i][j]);
            b[i][j] = a[i][j];
        }
    }
    pre = 0; time = 500;
    for (i = 1; i <= m;i++)
    for (j = 1; j <= n; j++)
        moban[i][j] = 0;
    dfs(1);
    if (time == 500)
    {
        cout << "IMPOSSIBLE" << endl;
    }
    else
    {
        for (i = 1; i <= m; i++)
        {
            for (j = 1; j <= n; j++)
                cout << moban2[i][j] << " ";
            cout << endl;
        }
    }
    return 0;
}
低照度与极端天气环境中的YOLOv8优化:CPA-Enhancer网络的应用与分析 为了克服上述问题,本文提出了一种名为的网络改进方案。CPA-Enhancer通过引入链式思考机制和改进的注意力机制,有效地提升了YOLOv8在低照度和复杂天气下的表现。本文提出了针对低照度和恶劣天气条件下目标检测的YOLOv8改进方案——CPA-Enhancer链式思考网络。通过引入低照度图像增强和多尺度特征融合技术,CPA-Enhancer显著提高了YOLOv8在低光照、雾霾、雨雪等环境下的检测性能。实验结果表明,CPA-Enhancer相较于原始YOLOv8,在多个指标上都有显著的提升,尤其是在mAP。 阅读详情

相关推荐

ROS2实战:打造智能巡检机器人的关键技术与实现

本文详细介绍了基于ROS2和Navigation2构建智能巡检机器人的完整实战流程。通过设计主从协作的事件驱动架构,实现了机器人在已知地图中的自动导航、定点语音播报和环境图像采集功能。文章涵盖了从环境搭建、仿真配置到核心控制节点、语音服务与图像记录模块的代码实现,为开发者打造实用的自动巡检机器人提供了清晰的技术指南。

weixin_29031057的博客 222

Fliptile (DFS)

题目链接: Fliptile 大致题意: 给定一个01矩阵, 大小为N*M, 每次可以选定一个格子, 将该格子与其上下左右四个格子进行反转, (0变1, 1变0), 问至少操作多少次可以将矩阵中的所有数值变为0. 若有解则输出翻转次数最少的翻转情况(若翻转次数最少的情况有多种, 则输出翻转字典序最小的.), 否则输出 IMPOSSIBLE. 解题思路: 我们很容易发现, 如果对1个格子进行偶数次翻转, 那将是没有意义的, 所以每个格子的情况只有翻转和不翻转两种情况. 一共N*M个格子, 每一个格子都有两种情

Fau的博客 329

计算机视觉——SIFT特征匹配

文章目录一、SIFT特征检测原理1.1基本思想1.2二、SIFT特征检测图片兴趣点三、SIFT特征检测描述子匹配四、输入图片检测与之 一、SIFT特征检测原理 1.1基本思想 1.2 二、SIFT特征检测图片兴趣点 代码: 检测结果: 三、SIFT特征检测描述子匹配 四、输入图片检测与之 ...

weixin_43869874的博客 3855

Fliptile(状压+思维)

Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they manipulate an M × N grid (1 ≤ M ≤ 15; 1 ≤ N ≤ 15) of square tiles, each of which is colored black on one

starlet_kiss的博客 463

ubuntu17.04 UHD 驱动出错

ubuntu 17.04 源码安装UHD

xrh003的博客 1万+

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2981

Fliptile(翻格子问题)

题目大意: 就是给定一个m*n的矩阵代表地板砖,0代表白砖,1代表黑砖,每个砖都有两面,一面白一面黑,翻转一次即可把白变成黑把黑变成白,但与此同时,与该砖块相邻的上下左右四块转也随之翻转。要求使用最少的翻转次数,将砖块翻转。要求输出反转位置。 思路: 这是典型的开关问题,重点是要想到第一行的格子能被第一行翻转影响,也能被第二行反转影响,所以第一行要特殊处理,二进制枚举第一行所有翻转情况,之后每一行的反转就都有唯一解了。因为剩下的过程就是:用第二行翻转来保证第一行全白,用第三行翻转来保证第二行全白.

bunny_1024的博客 813

NSIDC海冰运动产品-速度矢量场图绘制(数据下载和处理--年、季节平均)【python/basemap】

入门级NSIDC海冰运动产品速度矢量场图绘制(数据下载和处理--年、季节平均)【python/basemap】

Mluoo的博客 2959

Fliptile(dfs+状态压缩)

Problem:Fliptile Description: Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they manipulate an M × ...

Welcome to csdn_PatrickStar's blog 204

通信算法之267 : DJI无人机 云哨 DroneID 640ms

消费级无人机可以用于高级航拍、物流和人道主义救援等等。但是其广泛使用给安全、安保和隐私带来了许多风险。例如,攻击方可能会使用无人机进行监视、运输非法物品,或通过侵入机场上方的封闭空域造成经济损失。为了防止恶意使用,无人机制造商采用多种对策来强制安全可靠地使用无人机,例如对速度和高度施加软件限制,或使用地理围栏实施禁飞区。作为对传统对策的补充,市场领导者大疆(DJI)为无人机实施了一种称为 DroneID 的跟踪协议,该协议旨在将无人机及其操作员的位置传输给授权实体,例如执法部门或关键基础设施的运营商。

leegang12的专栏 3306

【花雕学编程】Arduino ESP32 SPP 之使用Servo库控制360度舵机正反转

使用 Servo 库控制 360 度舵机的正反转是 Arduino ESP32 SPP 应用中的一个重要案例,具有简易控制接口、灵活速度调节和高兼容性等特点,广泛应用于机器人、自动化装置和动态艺术等领域。在第三个案例中,使用map()函数将用户输入的速度参数(范围0-100)映射到舵机控制的角度(0-180),使得用户能够以更人性化的方式控制舵机速度。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

雕爷学编程 1468

Fliptile(枚举&DFS)

Fliptile 题目传送门 Fliptile 题目大意 给你一个n×mn×mn×m的矩阵,矩阵由0和1组成,可以选择一个点翻转 翻转:将该点以及该点上下左右的点翻转(0变1,1变0) 求将矩阵翻转成全为0的最小步数,若没有则输出“IMPOSSIBLE” 思路 很经典的题目了,可以从第二行开始推,用第二行的翻转将第一行全变成0,同理,第三行变第二行为全0… 到最后一行时,判断该行是否为0,全为0即为这种方法可以。 对于第一行的状态可以直接枚举,枚举第一行翻转的情况(采取二进制的枚举方式),对于每次枚举的答案

Kuricip的博客 1018

使用mindie:2.0.RC2-800I-A2-py311-openeuler24.03-lts制作一个通用的模型推理性能测试的镜像

本文详细介绍了在NPU环境下进行模型推理性能测试的完整流程。首先配置了测试所需的环境和设备信息,包括Python 3.10.9和3.11.6版本、测试脚本和镜像文件。然后分步骤说明了镜像制作过程:创建特权容器、安装Python 3.10.9、配置VLLM环境,并详细描述了测试容器的启动方法。最后提供了镜像打包和使用指南,包括如何加载镜像、启动容器、运行测试脚本(以DeepSeek-32B模型为例)以及更换测试模型的步骤。整个过程涉及环境变量配置、权限设置和服务启动等关键操作。

m0_50105717的博客 1015

【简单搜索】FlipTile

FlipTile 问题描述 Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows in which they manipulate an M × N grid (1 ≤ M ≤...

Mark_Eleven的学习笔记 310

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【每日一题】Fliptile

Fliptile 题意: 一个方阵,1为黑,0为白,翻转其中一个的时候,周围的四个也会跟着翻转。问至少翻几个可以得到都是白色的方阵?怎么翻? 题解: 先遍历第一行的所有翻转方法,在每种翻转情况下,遍历第二行,如果对应上一行是黑色,就翻,以此类推,直到最后一行。如果最后一行都是白色,则成功,否则失败。详细题解代码有对应注释 个人问题: WA了一段时间,主要是不了解遍历方式,题目整体挺麻烦的。 代码:...

海贼王OP的博客 251

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[搜索]poj3279 fliptile

Fliptile Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4886 Accepted: 1870 DescriptionFarmer John knows that an intellectually satisfied cow is a happy cow who will give more m

童凌的技术博客 766

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

POJ 3279 Fliptile

Fliptile Time Limit: 2000MS Memory Limit: 65536K Description Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He has arranged a brainy activity for cows ...

忘梦心的博客 261

POJ-3279-Fliptile【状态压缩】【DFS】【好题】

POJ-3279-Fliptile

Linoy 3658

POJ3279 Fliptile —— 状态压缩 + 模拟

题目链接:http://poj.org/problem?id=3279 Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11771   Accepted: 4360 Description Farmer John knows

A man can be destroyed, but not defeated. 562

poj3279 Fliptile dfs暴力枚举状态

Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8632   Accepted: 3230 Description Farmer John knows that an intellectually satisfied cow is a happ

kyoma的博客 776

【回炉重造】POJ-3279.Fliptile 题解

【回炉重造】POJ-3279.Fliptile 题解 我好弱,记录一个想了两天也想不到的暴力 题目链接:POJ-3279.Fliptile 明白题意只想看看代码的同学建议直接跳到这里:正常代码 题目 题意 解题思路 代码分块解析 主函数 after_flip() 函数 - 返回上一行的翻转结果 end_line_all_zero() 函数 - 返回最后一行是否全0 变量很长的代码 正常代码 题目 题意 给你一个0、1组成的表,翻转一个方块,可以把它本身和上下左右5个方块都从0变1、从1变0 要求

qq_37504214的博客 703

Fliptile 状态压缩搜索

状态压缩搜索:比如第一行有4个棋子,可以翻转,翻转的可能型就是都不翻,只翻第一个,只翻第二个,翻第一个和第二个,,,,很多种情况,每一种都有翻和不翻两种,也就是2的4次方 这样的话总不能去四重循环吧,压缩法就是可以把以上的状态简化为一重的循环,也就是0到15 就可以了 例题: https://vjudge.net/problem/POJ-3279 ...

h_666666的博客 240

【HDU】3279 - Fliptile(bfs & 二进制)

点击打开题目 Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7440   Accepted: 2797 Description Farmer John knows that an intellectually satisfied

wyg1997 630

poj3279Fliptile

poj3279Fliptile 题目大意及理解 大意就是心情愉悦能让奶牛产更多的奶,所以农民搞了个游戏给奶牛玩,奶牛 需要把所有黑色朝上的格子变成白色(1代表黑色,0代表白色),因为奶牛的 力气比较大,所以在翻动某一个格子时会同时翻转这个格子的邻接格子(上,下 左, 右)问怎样翻动可以使奶牛所需翻动次数最少,把每个格子的翻动次数以 矩阵的形式输出(只输出最少的)。如果全白时做不到的,输出IMPOSSIBLE M-行数,N-列数 因为当第一行的翻动次数确定了,第一行的颜色也就确定了,所以第二行只需要 翻动本

weixin_49165728的博客 279

Fliptile (搜索+二进制枚举)

题目链接: [Fliptile] 大致题意: 给出一个m*n的01矩阵,每次操作可以选一个位置,使它和它的上下左右翻转一次(0变1,1变0),问最少多少次操作可以使所有数都变为0,如果有,输出翻转的方案,否则输出IMPOSSIBLE 解题思路: 二进制枚举,枚举第一行的所有情况,一共有2m种,只要第一行确定,矩阵其他的就都可以确定,最后判断最后一行是否全为0即可。 (判断每一行时,看上一行来确定当前行是否需要翻转,tmp记录上一行对当前行的影响) AC代码: #include<iostream>

qq_49494204的博客 430
上一篇: Find a way
下一篇: 三个水杯
Techay
博客等级 码龄11年 11粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值