USACO 6.4.1 Wisconsin Squares 暴力

Mendix 开发实践指南|Mendix平台概览 低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。 阅读详情

http://train.usaco.org/usacoprob2?a=VNPgIbuqM60&S=wissqu

题目大意:一个4*4的牧场有ABCDE五种奶牛,其中C4个别的各3个,现在要用另一批奶牛替换这一批,其中D4个别的各3个,要求用来替换的奶牛种类和当前种类不同并且和周围八个格子的种类也不同(原本的奶牛分布同样满足这个条件),并且第一个用于替换的是D种类,要求输出字典序最小的替换顺序以及能够和这个顺序的替换等效的所有可能情况总数

时限:5秒

时限很宽松,暴力枚举就行。如果已经超过字典序且和已知答案不匹配了就剪枝

/*
ID: frontie1
TASK: wissqu
LANG: C++
*/
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

char ori[6][6], arr[6][6], ans[6][6];
int remain[5] = {3, 3, 3, 4, 3};
bool yearling[6][6];

int go_r[8] = {0, -1, -1, -1, 0, 1, 1, 1};
int go_c[8] = {1, 1, 0, -1, -1, -1, 0, 1};

string output_str = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
int cnt = 0;

bool valid(int r, int c, char chr)
{
    if(arr[r][c] == chr) return false;
    int nxt_r, nxt_c;
    for(int i = 0; i < 8; ++i){
        nxt_r = r + go_r[i];
        nxt_c = c + go_c[i];
        if(nxt_r > 4 || nxt_r <= 0 || nxt_c > 4 || nxt_c <= 0) continue;
        else if(arr[nxt_r][nxt_c] == chr) return false;
    }
    return true;
}

bool same(char arr[][6], char ans[][6])
{
    for(int i = 1; i < 5; ++i){
        for(int k = 1; k < 5; ++k){
            if(arr[i][k] != ans[i][k]) return false;
        }
    }
    return true;
}

void judge(string log)
{
    if(log < output_str){
        output_str = log;
        cnt = 1;
        for(int i = 1; i <= 4; ++i){
            for(int k = 1; k <= 4; ++k){
                ans[i][k] = arr[i][k];
            }
        }
    }
    else if(same(arr, ans)) ++cnt;
}

bool match(string str)
{
    int len = str.length();
    if(len < 3) return true;
    if(ans[str[len-2]-'0'][str[len-1]-'0'] == str[len-3]) return true;
    else return false;
}

void DFS(int dep, char chr, string log)
{
    if(log > output_str && !match(log)) return;

    --remain[chr-'A'];
    for(int i = 1; i <= 4; ++i){
        for(int k = 1; k <= 4; ++k){
            if(yearling[i][k]) continue;
            if(valid(i, k, chr)){
                yearling[i][k] = true;
                arr[i][k] = chr;
                string nxt_log = (((log+chr)+(char)('0'+i))+(char)('0'+k));
                if(dep == 15) judge(nxt_log);
                else{
                    for(int i = 0; i < 5; ++i){
                        if(remain[i] > 0) DFS(dep+1, 'A'+i, nxt_log);
                    }
                }
                arr[i][k] = ori[i][k];
                yearling[i][k] = false;
            }
        }
    }
    ++remain[chr-'A'];
}

int main()
{
    freopen("wissqu.in", "r", stdin);
    freopen("wissqu.out", "w", stdout);

    for(int i = 1; i <= 4; ++i){
        cin >> ori[i]+1;
        for(int k = 1; k <= 4 ; ++k){
            arr[i][k] = ori[i][k];
        }
    }

    DFS(0, 'D', "");

    for(int i = 0; i < 16; ++i){
        cout << output_str[i*3] << ' ' << output_str[i*3+1] << ' ' << output_str[i*3+2] << endl;
    }
    cout << cnt << endl;

    return 0;
}

【个人记录】CentOS7升级glibc至2.28 由于CentOS7系统已经停止支持, 虽然大部分业务已经迁移至OpenEuler,但仍然有部分业务系统跑在CentOS7上。在尝试部署新业务环境时经常会提示如下错误(以code-server运行需要的node 20为例)node -v为了保障业务可正常运行,通常采用Docker继承好的node环境进行部署,但部分场景还是需要宿主机使用新版glibc版本。本文记录本人一次成功升级glibc(2.17=>2.28)的步骤。 阅读详情

相关推荐

UOS的ARM机编译QT5.14.2记录

我需要的qt版本是Qt5.14.2,所以选择编译Qt5.14.2源码;几个月前尝试了编译一次,当时编译过程中出现了报错,当时时间很紧最后安装的默认版本来使用,最近有时间重新进行了一次编译,历经3个星期(4G的内存)终于解决了各种坑,编译成功了,现在将编译过程中遇见的一些坑记录一下,方便日后能记得这一次可恶的编译过程,如有描述欠缺的地方,还希望各位大佬给点意见指导指导🙏。

NiF693zzz的博客 1617

usaco 5.2 Wisconsin Squares(DFS)

Wisconsin Squares It's spring in Wisconsin and time to move the yearling calves to the yearling pasture and last year's yearlings to the greener pastures of the north 40. Farmer John has five kind

志当存高远 1116

DCDC--控制方式(Control Mode)

DCDC反馈控制方式

网始如芯个人博客 1万+

USACO 6.4 Wisconsin Squares

Wisconsin Squares It's spring in Wisconsin and time to move the yearling calves to the yearling pasture and last year's yearlings to the greener pastures of the north 40. Farmer John has five k...

weixin_30408739的博客 174

深入了解torch框架

大国的游戏,政府支持到位,是未来;AI : Artificial Intelligence,旨在研究、开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统,是一种拥有自主学习和推理能力的技术。它模仿人类大脑某些功能,包括感知、学习、理解、决策和问题解决。AI本质​ NLP(说话,听)、CV(眼睛)、自动驾驶、机器人(肢体动作)、大模型三要素:数据、网络、算力① 神经网络:找到合适的数学公式;② 训练:用已有数据训练网络,目标是求最优解;③ 推理:用模型预测新样本;PyTorch,简称Torch

qq_74732076的博客 1135

【Fluent】太阳辐射模型—Solar Ray Tracing

一、引言Fluent提供了一个太阳能负载模型,可用于计算进入计算域的太阳光线的辐射效应。该模型可以分为:太阳光线追踪和太阳辐照。其中太阳辐照需要使用DO或MC模型,直接向辐射模型提供外光束方向和强度参数。太阳光线追踪不限制辐射模型,可以独立于辐射方程使用,甚至可以在辐射模型off的情况下使用。本文主要介绍太阳光线追踪模型。该模型非常适用于以下领域汽车气候控制 (ACC) 应用建筑物中的人体热舒适建模应用该模型使用着色算法进行太阳光线追踪。光线会透过半透明的面加载在照射面上。

a5567899的博客 7588

Wisconsin Squares [USACO]

这个也不记得了,反正不难 /* ID: zhangyc1 LANG: C++ TASK: wissqu */ #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> using na...

weixin_30521161的博客 242

TI毫米波雷达人体生命体征(呼吸、心跳)信号提取算法(IWR6843ISK+DCA1000EVM)

本篇内容介绍的算法主要为传统的提取算法,但可实现在1m内呈现良好的检测效果,能够提取出非常可观的呼吸和心跳波形,但在超出1m的距离后便不适用这个算法了。远距离检测呼吸和心跳始终是这个领域一个很大的挑战。要实现远距离检测可在提取相位信号、分离呼吸和心跳信号上进行改进处理,例如线性解调提取相位、改进的VMD分离呼吸和心跳算法。

m0_61934621的博客 3万+

USACO6.4.1 The Primes(prime3)

搜索题,但是好麻烦,各种的优化才涉险过了 1.先打表是必须的:这个表是既是素数且每位相加又是所要求的数的5位数,并且为避免重复计算,可以把每个符合要求的数给拆分好记录 2.确定行,列,对角线,直接确定一整行或者一整列或一整对角线,也就是直接是找个五位数全部添上去(因为已经有打好的有序的表),减少了无意义的搜索试探 3.搜索顺序:最上一条—最左一条—两个对角线—第二行—枚举2,3,4,5列(为

xsy_victory的专栏 431

逆向工程的艺术:如何绕过PDD的长连接机制实现高效抓包

本文深入解析了如何通过逆向工程技术绕过拼多多(PDD)的长连接机制实现高效抓包。详细介绍了动态调试方案、关键函数Hook技巧及流量解密重组方法,帮助开发者在非Root环境下捕获并解析PDD的加密数据。结合Python工具链,实现稳定数据采集,适用于电商数据分析和反爬策略研究。

weixin_29058331的博客 674

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图、天地图)

QGis软件 —— 2、QGis加载在线地图两种方式(谷歌地图)

1万+

USACO 6.4.1 The Primes 搜索剪枝

http://train.usaco.org/usacoprob2?a=gY0nBCREMEt&amp;S=prime3题目大意:往一个5*5的方阵填数字,最左上角数字给定,要求每一行每一列两个对角线(都是从左到右看)是一个五位素数,且的五位上的数字之和确定(给定)一道令人绝望的搜索题,尝试了四个版本终于过了虽然搜索题给人的感觉往往是麻烦又没什么意义,但这道题(也确实如此)让我第一次接触到了搜索树...

Frontier_Setter的博客 395

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[USACO 6.4.3]Wisconsin Squares

题解   暴搜即可. 代码 /* TASK:wissqu LANG:C++ */ #include <cstdio> #include <cstring> using namespace std; char matrix[8][8], path[16][10]; bool v[4][4], flag; int ans, num[5] = ...

weixin_30933531的博客 146

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

USACO 6.3.1 Fence Rails 01多背包问题(BS+IDDFS)

http://train.usaco.org/usacoprob2?a=NaWWtjt80VA&amp;S=fence8题目大意:有N(1-50)块原木,要切成R(1-1023)块长度(1-128)可重复的木板,并不一定所有的木板都能被切出来,求能够交货的最大木板数量错误想法:我一开始正着想觉得有种网络流的感觉,把每个原木看作一个有限容量的节点,和每个木板结点以无限容量的管道连接,木板结点在和汇点...

Frontier_Setter的博客 730

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

USACO 6.1.1 Postal Vans 特例dp

http://train.usaco.org/usacoprob2?a=iHzQON4VeJX&amp;S=vans题目大意:由4条横线,N条纵线划划分的网络,要求一条路线经过每个网点一次且仅一次,求共有多少条这样的路径想法一:枚举,不可能,其实到第五章之后的题目好像都不太能枚举了想法二:相当于先有一个最外层的大矩形轮廓,然后逐步“下凹”,只要下凹的那一格在当前外表面轮廓组成中只有一条边就不会使最...

Frontier_Setter的博客 548

USACO 6.2.1 Calf Flac 马拉车算法(Manacher's Algorithm)

http://train.usaco.org/usacoprob2?a=Hfv8bxVT1Ac&amp;S=calfflac题目大意:一串字符串(不超过200000个字符),求最长回文子串(不考虑非字母字符),并输出这一段(要包含非字母字符,包括换行符)裸的最大回文子串题,直接用马拉车算法可解:※马拉车算法讲解可参考:https://www.cnblogs.com/grandyang/p/4475...

Frontier_Setter的博客 530

【存疑】USACO 6.5.1 All Latin Squares 打表

http://train.usaco.org/usacoprob2?a=gGSgZ020xrV&amp;S=latin题目大意:N*N的矩阵,要求每一行每一列都出现1-N的数字各一次且不重复,第一行必须是1-N递增顺序,求所有可能情况的总数我原本按照Prime那道题的做法,求出了1-N的全排列,再逐行枚举,按照列的重复性剪枝,失败然后我把枚举按照开头数字分类,逐列枚举,还是失败参考资料:http:...

Frontier_Setter的博客 489

USACO 5.4 Character Recognition

Frontier_Setter的博客 482

USACO 6.5.3 Betsy's Tour 搜索剪枝

http://train.usaco.org/usacoprob2?a=BI4LEPNXcEa&amp;S=betsy题目大意:一个N*N的方阵(N&lt;=7),求从左上角出发到左下角结束经过每个格子一次且仅一次的路径总数听说标准的做法是在左侧补两列然后作为等效的哈密顿回路用插头dp的方法求解,但是我实在是看不懂,所以我学了搜索剪枝的方法,没想到过的绰绰有余,搜索真是其乐无穷啊参考资料:http...

Frontier_Setter的博客 477

USACO 6.1.2 A Rectangular Barn 单调栈

http://train.usaco.org/usacoprob2?S=rectbarn&amp;a=iHzQON4VeJX题目大意:一个R*C的方格阵,有P个无效格,求不包含无效格的矩形的最大面积错误想法一:①对每个位置求出离他最近的左侧无效格到他的距离 ②遍历每个格子,向上伸展直到遇到无效格,在这个过程中计算以该长条为边的矩形的面积时间复杂度是N^3的,而且需要一个R*C的数组,在这道题里是3...

Frontier_Setter的博客 476

USACO 6.5.5 Checker Challenge 回溯

http://train.usaco.org/usacoprob2?a=BI4LEPNXcEa&amp;S=checker题目大意:在一个N*N的棋盘上放棋子,要求每一行每一列都有一个,每一个对角线不超过一个(不仅仅主对角线),要求输出前三个答案(每一行的棋子所在的列号)以及摆放方法总数USACO最后一题,再加上题目里宣扬的种种紧张氛围,还给了整整五个提示,我还以为会是一道巨坑,没想到就是简单的回...

Frontier_Setter的博客 462

USACO 5.5.3 Twofive 记忆式搜索+枚举

http://train.usaco.org/usacoprob2?a=qNexyVCSx2z&amp;S=twofive题目大意:给一个5*5的字符方阵(A-Z),阅读顺序为从上到下逐行从左到右念下来,要求每一个位置的字母比它上方与左侧的字母要大。题目有两个要求:1、给一个方阵求它在所有可能的方阵中排第几个(按字典序升序排列)2、给序号,求出方阵1、要枚举的话有25!种情况,肯定不是这么搞的2、...

Frontier_Setter的博客 450

USACO 6.4.2 Electric Fences 三分算法

http://train.usaco.org/usacoprob2?a=gY0nBCREMEt&amp;S=fence3题目大意:用两点坐标形式给出平面内F条线段(平面为(0,0)到(100,100), F小于等于150),求出平面内一点使得从该点连向所有线段的距离最小(可以和线段上任意一点相连)且平面内的各种线可以任意交叉解题思路:一开始查到了模拟退火的解法,吓了我一跳,后来查到了这个亲民的解法...

Frontier_Setter的博客 445

USACO 6.5.4 The Clocks BFS

http://train.usaco.org/usacoprob2?a=BI4LEPNXcEa&amp;S=clocks题目大意:给九个钟的初始状态,指针只可能指向3,6,9,12,有九种操作,每种操作拨动一个固定组合的种顺时针45°,求最少操作能够把所有钟拨到12的情况(操作数相同时,要操作的数字小),按顺序输出一开始觉得每次有九种选择的可能性,又要输出操作数最少的情况,就想到了用IDDFS,但...

Frontier_Setter的博客 418

USACO 6.3.3 Cowcycles 暴力

http://train.usaco.org/usacoprob2?a=lQZ5UB8ZNRK&amp;S=cowcycle题目大意:选出两组齿轮(数量分别不超过5个和10个),设前后轮齿数比为传动比,要求:1、最大传动比至少要是最小传动比的三倍    2、将传动比排序后相邻两者差(difference)的方差要最小USACO总是出人意料,我原本以为会是一道超难的数学题或者构造题,再不济也得有个很...

Frontier_Setter的博客 396

USACO 6.3.2 Cryptcowgraphy 剪枝

http://train.usaco.org/usacoprob2?a=Bc6YOT0fW9R&amp;S=cryptcow题目大意:字符串解码,字符串中分布有(C,O,W),每一步交换C-O, O-W中的子串,看能否最后达到目标字符串,如可以输出步数(目标字符串给出,且不含C,O,W)字符串处理+搜索剪枝①最直观的剪枝就是当前字符串中不含COW的前后缀必须要和目标串匹配,但仅仅如此肯定是过不了的...

Frontier_Setter的博客 379
上一篇: USACO 6.4.2 Electric Fences 三分算法
下一篇: 【存疑】USACO 6.5.1 All Latin Squares 打表
Frontier_Setter
博客等级 码龄10年 2粉丝 123原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值