//真是郁闷的一晚上
//比赛时看到这题是就感觉会做,感觉思路清晰 就去准备找第二题 ,因为感觉第二题是个经典问题,(我不会计算几何),就去搜索了下,然后找到求最小面积的,改来改去,一直Wa
// 然后就只剩下一个小时了 ,我决定放弃它,去写第一题 就是这题,然后整栋楼离奇断网什么的、、还调试了好久、、 // 思路 :将K个字符串算出Hash值 保存,同时要记录串的长度
// 这样在搜索时候 就可以根据Hash和字符串长度来筛选出某一位置可以填哪些串 因为串的起始和结束位置也能判断可以填的串可以多长
// 这样就是暴力搜索了
// 我对M个串位置进行了排序,然后我发现排不排序都一样,无所谓的 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#include<functional>
#include<cmath>
#include <vector>
using namespace std;
vector <string> Hs[];
vector <int > len[];
int Map[][];
int n,m;
struct node
{
int x1,y1,x2,y2,k;
bool operator <(const node&t) const
{
if(x1==t.x1) return x2<t.x2;
return x1<t.x1;
}
} st[];
int K;
int flag;
char str[];
int ar[];
void dfs(int index)
{
if(index==m)
{
flag=;
return ;
}
int x1=st[index].x1,x2=st[index].x2;
int y1=st[index].y1,y2=st[index].y2;
int k=st[index].k;
int le=x1-x2+y1-y2;
if(le<) le=-le;
le++;
for(int i=; i<Hs[k].size(); i++)
if(le==len[k][i])
{
if(x1==x2)
{
int dir=y1<y2?:-;
int j,id=;
for(j=y1; j!=y2; id++, j+=dir)
if(Map[x1][j]&&Map[x1][j]!=Hs[k][i][id])
break;
if(j==y2)
{ id=;
for(j=y1; j!=y2; id++, j+=dir)
if(!Map[x1][j])
{
Map[x1][j]=Hs[k][i][id];
ar[j]=;
}
else
ar[j]=;
if(!Map[x1][j])
{
Map[x1][j]=Hs[k][i][id];
ar[j]=;
}
else
ar[j]=;
dfs(index+);
if(flag) return;
for(j=y1; j!=y2; j+=dir)
if(ar[j])
Map[x1][j]=;
}
}
else if(y1==y2)
{
int dir=x1<x2?:-;
int j,id=;
for(j=x1; j!=x2; id++, j+=dir)
if(Map[j][y1]&&Map[j][y1]!=Hs[k][i][id]) break;
if(j==x2)
{
id=;
for(j=x1; j!=x2; id++,j+=dir)
if(!Map[j][y1])
{
Map[j][y1]=Hs[k][i][id];
ar[j]=;
}
else
ar[j]=;
if(!Map[j][y1])
{
Map[j][y1]=Hs[k][i][id];
ar[j]=;
}
else
ar[j]=;
dfs(index+);
if(flag) return;
for(j=x1; j!=x2; j+=dir)
if(ar[j])
Map[j][y1]=;
}
}
}
}
int main()
{
int i,j;
int Case=;
while(scanf("%d %d",&n,&m),n|m)
{
if(Case++!=) printf("\n");
for(i=; i<m; i++)
scanf("%d %d %d %d %d",&st[i].x1,&st[i].y1,&st[i].x2,&st[i].y2,&st[i].k);
sort(st,st+m);
scanf("%d",&K);
for(i=; i<K; i++)
{
scanf("%s",str);
int hs=;
for(j=; str[j]!='\0'; j++)
hs=(hs*+str[j])%;
Hs[hs].push_back(str);
len[hs].push_back(j);
}
memset(Map,,sizeof(Map));
flag=;
dfs();
if(flag)
for(i=; i<=n; i++)
{
for(j=; j<n; j++)
if(Map[i][j])
printf("%c",Map[i][j]);
else
printf(" "); if(Map[i][j])
printf("%c\n",Map[i][j]);
else
printf(" \n");
}
}
return ;
}

携程 决赛 第一题 Crossword的更多相关文章

  1. Megcup 2017 决赛第一题 规则

    2017Megcup 2017Megcup决赛第三题题解 只做出了一道题,虽然慢慢地退出了前128名,但还是要记录一下. 10点钟开始,一看第一题很熟悉,因为研究过格点图中电流问题,其实就是求解线性方 ...

  2. CTF---编程入门第一题 循环

    循环分值:10 来源: 北邮天枢战队 难度:易 参与人数:1478人 Get Flag:467人 答题人数:523人 解题通过率:89% 给出一个循环公式,对于一个整数n,当n为奇数时,n=3n+1, ...

  3. [原]携程预选赛A题-聪明的猴子-GCD+DP

    题目: 聪明的猴子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. 第三届蓝桥杯Java高职组决赛第一题

    题目描述: 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. 这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = ...

  5. poj1182 and 携程预赛2第一题 带权并查集

    题意:       动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.  现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...

  6. 【BFS + Hash】拼图——携程2017春招编程题2

    写在前面 前天参加了携程的网测--还是感觉自己太!渣!了!    _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...

  7. 携程Java后台开发三面面经

    前言 携程是我面试的第一个互联网公司,投递的岗位是后台开发实习生,总共面了三面,止步于人才库.中间兜兜转转,复杂的心理活动,不足与外人道也.唯有面试的技术部分与大家共享. 宣讲会完了之后有个手写代码的 ...

  8. 剑指Offer——携程笔试题+知识点总结

    剑指Offer--携程笔试题+知识点总结 情景回顾 时间:2016.9.17 19:10-21:10 地点:山东省网络环境智能计算技术重点实验室 事件:携程笔试 总体来说,携程笔试内容与其它企业笔试题 ...

  9. 今天携程出事了:让我们来学习下http的响应码

    就在今天,2015年5月28日,中国最大的旅游机票预订网站--携程网粗大事了.据传携程网的数据库被人物理删除了,而容灾备份的数据又无法正常使用,服务器全面遭受瘫痪.每小时给携程带来的损失约100万美元 ...

随机推荐

  1. JavaScript高级程序设计-读书笔记(7)

    第22章 高级技巧 1.高级函数 (1)安全的类型检测 在任何值上调用Object原生的toString()方法,都会返回一个[object NativeConstructorName]格式的字符串. ...

  2. CDN方式使用iview

    如果没有使用webpack,可以使用我们提供的工具iview-theme来编译 首先需要安装主体生成工具,从npm全局活在项目中局部安装 以全局安装为例: npm install iview-them ...

  3. apollo各协议支持的客户端

    apollo 源自 activemq,以快速.可靠著称,支持多协议:STOMP, AMQP, MQTT, Openwire, SSL, and WebSockets,下面就STOMP, AMQP, M ...

  4. Java之聊天室系统设计二

    服务器端: 浏览器端:

  5. C#区块链零基础入门,学习路线图 转

    C#区块链零基础入门,学习路线图 一.1分钟短视频<区块链100问>了解区块链基本概念 http://tech.sina.com.cn/zt_d/blockchain_100/ 二.C#区 ...

  6. web页面中 将几个字段post提交

    思路 自己在html中构建form 先根据传入的action构建form的action  然后根据要提交的字段构建form中的元素  最后通过调用form中的按钮提交from表单 方法:var jsP ...

  7. 第五章 如何使用Burp Target

    Burp Target 组件主要包含站点地图.目标域.Target 工具三部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况.当前的工作涉及哪些目标域.分析可能存在的攻击面等信息,下面我们就分 ...

  8. 14.并发容器之ConcurrentHashMap(JDK 1.8版本)

    1.ConcurrentHashmap简介 在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hasht ...

  9. linux---进程,(rpm,yum)软件包

      3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大小为5G fdisk -l fdisk /dev/sdb p 查看 n 新建    p  主分区 ...

  10. Ansible 小手册系列 五(inventory 主机清单)

    Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts 主机清单示例 mail.example. ...