Usaco Training Section 4.4 Frame Up

该博客讲述了在Usaco训练中遇到的4.4节Frame Up问题,内容涉及到如何解决长方形边框叠放顺序的算法。博主通过分析每个边框的字母来确定其位置,接着在未使用的边框中寻找符合条件的边框,并建立字母之间的连接。最终,博主利用拓扑排序解决这个问题,但在实现过程中遇到了一些细节问题,如数组大小设置不当导致的错误,以及在不同环境下运行结果的差异。
摘要由CSDN通过智能技术生成

有一些长方形边框叠在一起,求放的顺序。

因为每个边框的每条边至少会出现一个字母,所以我们可以求出每个边框的准确位置。然后每次在未用过的边框中找只包含当前字母和已用字母的边框,标记为已用过,再把遇到的已用字母向当前字母连边。最后跑个dfs,求拓扑排序。

细节挺多的,一开始没想到拓扑排序,过了好一会儿才想到。然后p数组开小了,怎么也没发现,在usaco上竟然跑出来是wa,而不是re!!!在我的电脑竟然没报错,输出的答案居然还是对的!!!……

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define inf 2147483647
#define mp make_pair
#define pii pair<int,int>
#define pb push_back
using namespace std;

char a[35][35];
bool vis[35],used[35],visit[35];
int minx[35],miny[35],maxx[35],maxy[35],d[35],sum,p[905],num[35],ans[35],rd[35],b[35][35];
set<string> s;

inline void dfs(int n){
    if(n>sum){
        string str="";
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值