/*
爆搜,正解弃坑
*/
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
const int maxn = ;
int n,m,x1[maxn],y1[maxn],x2[maxn],y2[maxn],vis[maxn][maxn],p[maxn][maxn],l[maxn];
bool dfs(int col,int stp,int y,int x){
if(y == y2[col] && x == x2[col]){
l[col] = stp;
if(col == m){
int tmpl = ;
for(int i = ;i <= m;i++) tmpl += l[i];
if(tmpl == n*n) return true;
else return false;
}
return dfs(col+,,y1[col+],x1[col+]);
}
vis[y][x] = col;
int ty,tx;
for(int i = ;i <= ;i+=){
if(i == ){
ty = y - ;
tx = x;
}else if(i == ){
ty = y;
tx = x - ;
}else if(i == ){
ty = y;
tx = x + ;
}else{
ty = y + ;
tx = x;
}
if(ty < || ty > n || tx < || tx > n || (vis[ty][tx] && (ty != y2[col] || tx != x2[col]))) continue;
p[y][x] = i;
if(dfs(col,stp+,ty,tx)) return true;
}
if(y != y1[col] || x != x1[col])vis[y][x] = ;
return false;
}
int main(){
freopen("jian.in","r",stdin);
freopen("jian.out","w",stdout);
cin>>n>>m;
for(int i = ;i <= m;i++){
cin>>x1[i]>>y1[i]>>x2[i]>>y2[i];
vis[y1[i]][x1[i]] = vis[y2[i]][x2[i]] = i;
}
dfs(,,y1[],x1[]);
int nowy,nowx;
for(int i = ;i <= m;i++){
cout<<l[i]<<endl;
nowy = y1[i];
nowx = x1[i];
for(int j = ;j <= l[i];j++){
cout<<nowx<<" "<<nowy<<endl;
if(p[nowy][nowx] == ) nowy--;
else if(p[nowy][nowx] == ) nowx--;
else if(p[nowy][nowx] == ) nowx++;
else if(p[nowy][nowx] == ) nowy++;
}
}
return ;
}

清北暑假模拟day2 将的更多相关文章

  1. 清北暑假模拟day2 之

    /* 现场代码,枚举每条边删除 */ #include<iostream> #include<cstdio> #include<string> #include&l ...

  2. 清北暑假模拟day2 国

    [题目描述]在世界的东边,有三瓶雪碧.--laekov黎大爷为了虐 zhx,给 zhx 出了这样一道题.黎大爷搞了一个数据结构,但是他没有告诉 zhx 这到底是什么数据结构,我们只知道这是一个数据结构 ...

  3. 清北暑假模拟day1 艳阳天

    /* 注意P有可能不是质数,不要用欧拉函数那一套,正解可以倍增,就是等比数列和的性质,注意n是否为奇数 */ #include <cstdio> #include <algorith ...

  4. 清北暑假模拟day1 生活

    /* 数字三角形,要求第K大的值,可以推知,如果得知k的范围,那么一定是在上一行可转移状态的对应范围内(反证法可以证明),这个在背包九讲里也有提及 */ #include<cstdio> ...

  5. 清北暑假模拟day1 爱

    /* 水题 */ #include<iostream> #include<cstdio> #include<string> #include<cstring& ...

  6. 清北学堂模拟赛day7 数字碰撞

    /* clj:水题别人都满分你不是你就完了,所以说水题一定要细心一点,有这么几个细节:①前导零的处理,全是零的时候要特判②换行要注意,不要多大一行,剩下就是水水的模拟了 */ #include< ...

  7. 清北学堂模拟赛d4t1 a

    分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变, ...

  8. 清北学堂模拟赛day7 错排问题

    /* 考虑一下已经放回m本书的情况,已经有书的格子不要管他,考虑没有书的格子,不考虑错排有(n-m)!种,在逐步考虑有放回原来位置的情况,已经放出去和已经被占好的格子,不用考虑,剩下全都考虑,设t=x ...

  9. 清北学堂模拟赛day7 石子合并加强版

    /* 注意到合并三堆需要枚举两个端点,其实可以开一个数组记录合并两堆的结果,标程好像用了一个神奇的优化 */ #include<iostream> #include<cstdio&g ...

随机推荐

  1. js调用刷新

    _self.fireEvent('refresh');

  2. string字符串的一系列操作

    IndexOf() 查找字串中指定字符或字串首次出现的位置,返首索引值,如: str1.IndexOf("字"): //查找“字”在str1中的索引值(位置) str1.Index ...

  3. POJ2010 Moo University - Financial Aid(二分法)

    题目地址 分析:如果用二分法,关键是score和aid分开排序,score排序是为了充分利用中位数的性质,这样就可以确定m左右必须各选N/2个,到这之后有人是用dp求最优解,可以再次按照aid排序一次 ...

  4. JSF dataTable 添加列 动态创建数据表 列

    @Named @ViewScoped public class LiveRangeService implements Serializable { private List< Map<S ...

  5. su su- sudo的区别

    linux su命令参数及用法详解(linux切换用户命令) su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码   linux su 命令 建议大家切换用户的时候 使用 su ...

  6. spring boot properties

    [转载] 代码从开发到测试要经过各种环境,开发环境,测试环境,demo环境,线上环境,各种环境的配置都不一样,同时要方便各种角色如运维,接口测试, 功能测试,全链路测试的配置,hardcode 肯定不 ...

  7. 查看apt-get安装软件的版本

    apt-cache search name 查询 apt-get install name 安装 dpkg dpkg dpkg-checkbuilddeps dpkg-genchanges dpkg- ...

  8. 如何修改Linux主机名

    Linux 下什么都比较麻烦,就连修改主机名也不例外.我们就下文说一下具体方法. Linux 安装好后,其默认的主机名是 localhost.修改 Linux 主机名需要3步. 使用 hostname ...

  9. WinRAR压缩

    WinRAR压缩软件: ------------------ 软件官网:http://www.winrar.com.cn/ -------------------------------

  10. 关于centos的yum代理设置

    10. 有代理服务器时使用 yum默认情况下,yum 通过 HTTP 连接到网络上的仓库.所有 yum HTTP 操作都使用 HTTP/1.1,与支持这一标准的 web 代理服务器兼容.您也可以连接到 ...