//真是郁闷的一晚上
//比赛时看到这题是就感觉会做,感觉思路清晰 就去准备找第二题 ,因为感觉第二题是个经典问题,(我不会计算几何),就去搜索了下,然后找到求最小面积的,改来改去,一直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. UOJ34 多项式乘法(NTT)

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  2. Enter键禁止表单提交

    Enter键禁止表单提交js代码: //禁用Enter键表单自动提交 document.onkeydown = function (event) { var target, code, tag; if ...

  3. UIAutomation学习入门

    一.界面的自动化操作 .Ui自动化测试 .软件外挂 二.Win32基础知识 a.Win32中一切元素皆窗口,窗口之间有父子关系.整个桌面是一个“根窗口”. b.进程: 根据进程id拿到进程对象Proc ...

  4. Angular for TypeScript 语法快速指南 (基于2.0.0版本)

    引导 import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; platformBrowserDynami ...

  5. kindeditor支持flv视频播放方法

    打开plugins\media下面的media.js,打开,找到下面的代码: var html = K.mediaImg(self.themesPath + ‘common/blank.gif’, { ...

  6. hdu4305生成树计数

    先预处理出距离,然后判断是否可行,要注意判断是否在一条直线上时判断是在两侧还是一边(wa了四次) double型数据 #include<map> #include<set> # ...

  7. Spring的引用内部Bean属性和给级联属性

    第一个是内部Bean的配置:               首先是要理解其中的原理,再去操作就很简单了,下面老表就给大家说一下自己的观点(有点简单,但是老表我第一次学习的时候看着视频上的代码确实有点懵逼 ...

  8. 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://github.com/muchrooms/zheye 注意:此程序依赖以下模块包 Keras==2.0.1 Pillow= ...

  9. mysql中一个字段根据另一字段的值分割为不同列

    1.数据结构如下: vehicleId mileage_type mileage 11AM6897           0 120 11AM6897           1 60 13AY9180 0 ...

  10. 转:基于Flume的美团日志收集系统(一)架构和设计

    美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flume的美团日志收 ...