【暴力枚举&BFS】Flow Free @RMRC2017/upcexam5124

Anchor Free检测算法之FCOS 一.提出背景 2019 是 Anchor Free 大行其道的一年,从CornerNet 到 ExtremeNet,从FSAF到FCOS,层出不穷。 论文:FCOS: Fully Convolutional One-Stage Object Detection【paper】【github】 二.算法框架 FCOS框架比较简单,架构图参考: 基础backbone是一个3层的卷积网络(对... 阅读详情

时间限制: 1 Sec 内存限制: 128 MB
题目描述
Flow Free is a puzzle that is played on a 2D grid of cells, with some cells marked as endpoints of certain colors and the rest of cells being blank. To solve the puzzle, you have to connect each pair of colored endpoints with a path, following these rules:
there is a path connecting two points with the same color, and that path also has that color
all cells in the grid are used and each cell belongs to exactly one path (of the same color as the endpoints of the path)
The rules imply that different colored paths cannot intersect.
The path is defined as a connected series of segments where each segment connects two neighbouring cells. Two cells are neighbours if they share a side (so all segments are either horizontal or vertical). By these definitions and rules above, each colored cell will be an endpoint of exactly one segment and each blank cell will be an endpoint of exactly two segments.
In this problem we will consider only the 4×4 puzzle, with 3 or 4 pairs of colored endpoints given.
Your task is to determine if a given puzzle is solvable or not.
输入
The input consists of 4 lines, each line containing 4 characters. Each character is from the set {R, G,B, Y,W}whereW denotes the blank cells and the other characters denote endpoints with the specified color. You are guaranteed that there will be exactly 3 or 4 pairs of colored cells. If there are 3 colors in the grid, Y will be omitted.
输出
On a single line output either “solvable” or “not solvable” (without the quotes).
样例输入
RGBW
WWWW
RGBY
YWWW
样例输出
solvable

开始读错了题,没注意要连上所有的块。
暴力枚举每个W块的颜色,每种情况下从起点广搜终点,不用vis数组剪枝而采用记录路径(状压)可以保证搜到每种路径,搜到终点时判断是否走过了所有相同颜色的格子。
第二天仔细想想,还是写的太麻烦了,实际上直接深搜就好了…

#define IN_LB() freopen("F:\\in.txt","r",stdin)
#define IN_PC() freopen("C:\\Users\\hz\\Desktop\\in.txt","r",stdin)
#include <bits/stdc++.h>

using namespace std;
const int dirx[] = {-1,0,1,0};
const int diry[] = {0,1,0,-1};
const char col[] ="RGBY";
char mapp[5][5];

struct node {
    int x,y,route,step;
    node() {}
    node(int x,int y,int route,int step):x(x),y(y),route(route),step(step) {}
} cR[2],cG[2],cB[2],cY[2];

int cntR,cntG,cntB,cntY;
vector <int> v;

int xytoInd(int x,int y){
    return x*4+y;
}

bool bfs(char color,node st,node ed,int cnum) {
    queue<node> q;
    q.push(st);
    while(!q.empty()) {
        int x = q.front().x,y=q.front().y,route = q.front().route,step = q.front().step;
        q.pop();
        if(x==ed.x&&y==ed.y&&cnum+1==step)return true;
        for(int i=0; i<4; i++) {
            int xx = x+dirx[i],yy=y+diry[i];
            if(xx>=0&&xx<4&&yy>=0&&yy<4&&mapp[xx][yy]==color&&((route&(1<<xytoInd(xx,yy)))==0)) {
                q.push(node(xx,yy,route|(1<<xytoInd(xx,yy)),step+1));
            }
        }
    }
    return false;
}

int main() {
//    IN_PC();
    for(int i=0; i<4; i++) {
        scanf("%s",mapp[i]);
    }
    for(int i=0; i<4; i++) {
        for(int j=0; j<4; j++) {
            if(mapp[i][j]=='W') {
                v.push_back(i*4+j);
            }
            if(mapp[i][j]=='R') {
                cR[cntR++] = node(i,j,1<<xytoInd(i,j),0);
            }
            if(mapp[i][j]=='G') {
                cG[cntG++] = node(i,j,1<<xytoInd(i,j),0);
            }
            if(mapp[i][j]=='B') {
                cB[cntB++] = node(i,j,1<<xytoInd(i,j),0);
            }
            if(mapp[i][j]=='Y') {
                cY[cntY++] = node(i,j,1<<xytoInd(i,j),0);
            }
        }
    }
    int num = v.size();
    int flag = 0;
    if(num==8) {
        int sumsta = pow(4,8);
        for(int i=0; i<sumsta; i++) {
            int c = i,cn[4]={0};
            for(int j=0; j<8; j++) {
                int x = v[j]/4,y = v[j]%4;
                mapp[x][y] = col[c%4];
                cn[c%4]++;
                c/=4;
            }
            if(bfs('R',cR[0],cR[1],cn[0])
                    &&bfs('G',cG[0],cG[1],cn[1])
                    &&bfs('B',cB[0],cB[1],cn[2])
                    &&bfs('Y',cY[0],cY[1],cn[3])) {
                flag = 1;
                break;
            }
        }
    } else if(num==10) {
        int sumsta = pow(3,10);
        for(int i=0; i<sumsta; i++) {
            int c = i,cn[3]={0};
            for(int j=0; j<10; j++) {
                int x = v[j]/4,y = v[j]%4;
                mapp[x][y] = col[c%3];
                cn[c%3]++;
                c/=3;
            }
            if(bfs('R',cR[0],cR[1],cn[0])
                    &&bfs('G',cG[0],cG[1],cn[1])
                    &&bfs('B',cB[0],cB[1],cn[2])) {
                flag = 1;
                break;
            }
        }
    }
    if(flag)printf("solvable\n");
    else printf("not solvable\n");
    return 0;
}
TensorFlow学习笔记:编程模型 1 计算图在TensorFlow中,算法都被表示成计算图(computational graphs)。计算图也叫数据流图,可以把计算图看做是一种有向图,图中的节点表示操作,图中的边代表在不同操作之间的数据流动。如图所示,左边的图表示z=x+yz=x+y。从图中可以看到,x y z是图中的三个节点,x和y分别有一个箭头指到z,在z节点的下方有一个+号,表明是一个加法操作,因此最后的输出结果就是z=x+ 阅读详情

相关推荐

【模拟】[NOIP2014]螺旋矩阵[c++]

题目描述 一个n行n列的螺旋矩阵可由如下方法生成: 从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入1, 2, 3, … , n,便构成了一个螺旋矩阵。

银狼的黎明 4306

UPC-5124 - Flow Free - 搜索

题解链接: https://lucien.ink/archives/181/ 题目链接: http://exam.upc.edu.cn/problem.php?id=5124 题目: 题目描述 Flow Free is a puzzle that is played on a 2D grid of cells, with some cells marked as end...

LucienShui 1092

matlab规则裁剪影像代码-Flow-Free:无流量

matlab规则裁剪影像代码自由流动 游戏说明 这是一个单人游戏。 播放器必须以两种颜色的路径不相交的方式连接相似的颜色。 Playstore连结: 难度等级:中等 您可以在以下链接中观看该游戏的演示视频: 概述 首先,使用图像处理功能可以识别所有颜色及其位置。 解决了使用回溯算法游戏的问题,并使用adb工具对触摸进行了适当的模拟。 要求 装有MATLAB,ADB工具和所需驱动程序的计算机。 安装了该游戏的Android设备。 (打开“开发人员”选项以获得更好的可视化效果) USB数据传输电缆。 框图 教程 这是使游戏自动化的分步教程。 源代码可用。 步骤1:使用ADB工具捕获屏幕截图 以下命令立即获取所连接设备的屏幕快照,并按照指定路径将其存储在SD卡中。 system( ' adb shell screencap -p /sdcard/screen.png ' ); 以下命令按照指定的路径将其从android设备的SD卡拉入操作系统。 system( ' adb pull /sdcard/screen.png ' ); MATLAB将提取的图像以像素值矩阵的形式存储。 步骤2:图像

Kattis - flowfree Flow Free 多个两点的DFS

grid of cells Flow Free is a puzzle that is played on a 2D grid of cells, with some cells marked as endpoints of certain colors and the rest of cells being blank. To solve the puzzle, you have to ...

深海沧澜的博客 1038

结合qtdesigner,用pyqtgraph在界面上绘制波形图(一)

思路:先画图,然后在qtdesigner上放一个容器,给这个容器添加一个布局,然后把图当作一个Widget放入布局中。二、PyUIC把test.ui转换成test.py,再新建一个load_test.py写脚本。就这么简单,基础部分就完成了。也可以给它添加样式,我知道的样式不算多,但会继续写。一、随便拖进来一个容器控件,我拖了一个Widget。要想把波形图显示在界面上,核心思想其实很简单。三、load_test.py的代码。

learninger_lt7的博客 1803

openEuler系统下安装Google Chrome浏览器全攻略(附依赖问题解决方案)

本文详细介绍了在openEuler系统上安装Google Chrome浏览器的完整指南,包括环境准备、多种安装方式、依赖问题解决方案及性能优化技巧。针对openEuler特有的软件生态和依赖管理机制,提供了实用的命令和配置方法,帮助用户克服安装过程中的常见障碍,实现流畅的Chrome使用体验。

hadoop5ranger的博客 1152

flow

http://blog.youkuaiyun.com/wwh999/article/details/6174067 http://blog.youkuaiyun.com/wwh999/article/details/6176115#comments 有些东西我需要记住: 在我现在的项目里,因为是加入新项目,要先搞清楚流程,听说很重要,不是么? 1.在main.cs主页面,有个property booking --

freelove_2005的专栏 680

感应加热电源设计避坑指南:半桥LC串联谐振的5个关键问题

本文深入解析半桥LC串联谐振在感应加热电源设计中的5个关键问题,包括均压电阻选型、功率管驱动时序、谐振频率补偿等实战经验。通过真实故障案例和解决方案,帮助工程师避开常见设计陷阱,提升电路稳定性和效率,特别适合从事桥感应加热电源开发的工程师参考。

weixin_27013291的博客 510

Flow Free Kattis - flowfree DFS

题目链接:https://vjudge.net/problem/Kattis-flowfree 转自:https://blog.youkuaiyun.com/deepseazbw/article/details/81281628 题意:把带颜色的块连接起来,要求路径不能重叠且经过所有白色方块。 思路:dfs。 #include <bits/stdc++.h> using namespace std...

A 373

BRep实战指南:从理论到文件格式的全面解析

本文全面解析BRep(边界表示法)从基础概念到文件格式的实战应用。详细介绍了BRep的数学定义、工业应用场景,以及STEP、IGES等主流文件格式的对比与使用技巧,帮助读者掌握三维建模核心技术并优化性能。

weixin_29235923的博客 407

论文阅读:NeurIPS 2024 JailbreakBench: An Open Robustness Benchmark for Jailbreaking Large Language Model

论文指出评估越狱攻击存在挑战,如缺乏评估标准、成本和成功率计算方法不一致、许多研究无法复现。为解决这些问题,作者提出了JailbreakBench,这是一个开源基准测试,包含以下组件:持续更新的越狱提示库(jailbreak artifacts)。包含100种行为的越狱数据集,符合OpenAI的使用政策。标准化的评估框架,包括威胁模型、系统提示、聊天模板和评分函数。跟踪各种LLMs攻击和防御性能的排行榜。

CSPhD-winston的博客 1433

Fire Game(不一样的bfs+暴力枚举)

Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empty and then they start...

ACMerdsb的博客 587

工程级 RK3588 YOLOv5 Android 架构拆解:NPU 量化优化 + 多线程推理 + 跟踪算法源码

本文将带你完成一个完整的AI视觉项目:在搭载RK3588芯片的Android开发板上运行实时目标检测与跟踪应用。实战目标:成功运行官方YOLOV5摄像头实时检测案例技术深度:深入理解RKNN开发框架和源码实现核心技能:掌握NPU推理、多线程并发、目标跟踪等关键技术。

LXY_LOVE36的博客 130

open vswitch研究:flow

struct sw_flow_key 用来唯一定义一个flow,该结构相当复杂,请参考源码 sw_flow_key分为四部分,分别代表switch, L2, L3, L4的profile switch的profile是一个struct phy结构,包括了tunnel ID, priority, input switch port;ethernet的profile是一个struct eth结构,

majieyue的专栏 5945

IP-guard发布新版本4.87.2241.0

IP-guard发布了新版本4.87.2241.0,用户可通过提供的下载地址获取完整安装包和升级包。下载后,用户需联系厂家申请测试序列号以进行安装和使用。IP-guard是一款专注于企业文件加密、文档加密系统、防泄密软件、数据安全的软件。

IP-Guard专栏 1531

uniapp开发小程序保存图片权限获取失败一直走fail?本地能保存,线上版就不行! 原来是这个问题!

通过这次经历,我发现线上版小程序和开发版、体验版的权限控制差异较大。如果你也遇到类似的问题,首先要检查是否已勾选“采集用户隐私”,并确保在提交审核时配置了隐私条款。这个设置非常关键,避免像我一样浪费了不少时间和版本。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1077

无锁的 ( lock-free ) 线程安全算法

友情提示:对 Lock-free 算法没概念的朋友,请先看下面的参考。算法描述Lock-free 算法的基础是 CAS (Compareand-Swap) 原子操作。当某个地址的原始值等于某个比较值时,把值改成新值,无论有否修改,返回这个地址的原始值。目前的cpu 支持最多64位的CAS。并且指针 p 必须对齐。 注:原子操作指一个cpu时钟周期内就可以完成的操作,不会被其他线程干扰。

jadedrip的专栏 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

目标检测——anchor-free的算法的阅读笔记

FCOS、Centre-Net和Corner-Net;

墨门 680

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

独家 | 深度学习 V.S. 谜题游戏

作者:Kabalan Gaspard翻译:王紫岳校对:陈汉青本文约4000字,建议阅读10+分钟。本文为大家介绍了作者使用不同的算法来解决Free Flow谜题游戏的心路历程,从一开始的...

数据派THU 857

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【贪心】LIS @The 15th Zhejiang Provincial Collegiate Programming Contest E

传送门 题意要你构造一个序列,使得该序列的每个位置上的最长上升子序列的长度能构成给定的序列。 构造序列的元素要求还要求满足给定的上下界 solution 我们可以把给出的最长上升子序列的长度按升序排列,长度相同的按下标降序排列。 排完序后第一个数可以贪心的取其下界,同一层(即长度相同)的下标小的取值应该大于等于下标较大的取值 同时取值应该大于前一层下标最大且小于该位置的数 ...

weixin_30657541的博客 186

LeetCode LCP 33. 蓄水(暴力枚举)

文章目录1. 题目2. 解题 1. 题目 给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。小扣有以下两种操作: 升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]+1 蓄水:将全部水桶接满水,倒入各自对应的水缸 每个水缸对应最低蓄水量记作 vat[i],返回小扣至少需要多少次操作可以完成所有水缸蓄水要求。 注意:实际蓄水量 达到或超过 最低蓄水量,即完成蓄水要求。 示例 1: 输入:bucket = [1,3], va

Michael是个半路程序员 900

Flow Free solver[连线游戏求解器]

Fast automated solver for Flow Free puzzles written in C. 用C语言编写的连线游戏的快速自动求解器。 GIF of the final program in action (see below if you’re unfamiliar with Flow Free): 最终程序的GIF效果(如果您不熟悉Flow Free,请参见下文): Standard admonishments apply: feel free to skip ahea.

lacoucou的专栏 4148

A Math Problem

2018TYUT暑期ACM模拟赛(1) A Math Problem 题意:给你一个数字n(1-1e18),找一个最大的数字k满足k^k&lt;=n。输出k 首先可以自己算一下16^16已经超过1e18了。所以k最大最大也就是15 所以可以打表预处理一下+快速幂 #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cm...

DeathYmz的博客 564

TensorFlow内存管理bfc算法

1. 基本介绍 tensorflow设备内存管理模块实现了一个best-fit with coalescing算法(后文简称bfc算法)。 bfc算法是Doung Lea’s malloc(dlmalloc)的一个非常简单的版本。 它具有内存分配、释放、碎片管理等基本功能。 2. bfc基本算法思想1. 数据结构 整个内存空间由一个按基址升序排列的Chunk双向链表来表示,它们的直接前趋和后继必须在

todo 5674

HDU 3549 Flow Problem【Ford-Fulkerson+DFS 最大流】

Problem Description Network flow is a well-known difficult problem for ACMers. Given a graph, your task is to find out the maximum flow for the weighted directed graph. Input The first line of inpu...

weixin_33763244的博客 241
上一篇: 【分块】教主的魔法 @洛谷P2801/upcexam3138
下一篇: 【枚举】Consonant Fencity @upcexam5110
乌拉尔银狼
博客等级 码龄10年 9粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值