The 2019 China Collegiate Pro gramming Contest Harbin Site (F. Fixing Banners)
1 second
512 megabytes
standard input
standard output
Harbin, whose name was originally a Manchu word meaning "a place for drying fishing nets", grew from a small rural settlement on the Songhua River to become one of the largest cities in Northeast China. Founded in 1898 with the coming of the Chinese Eastern Railway, the city first prospered as a region inhabited by an overwhelming majority of the immigrants from the Russian Empire. Now, Harbin is the capital of Heilongjiang province and the largest city in the northeastern region of the People's Republic of China. It serves as a key political, economic, scientific, cultural, and communications hub in Northeast China, as well as an important industrial base of the nation.
This year, a CCPC regional contest is going to be held in this wonderful city, hosted by Northeast Forestry University. To ensure the contest will be a success and enjoyed by programmers around the country, preparations for the event are well underway months before the contest.
You are the leader of a student volunteer group in charge of making banners to decorate the campus during the event. Unfortunately, your group made a mistake and misprinted one of the banners. To be precise, the word "harbin" is missing in that banner. Because you don't have time to reprint it, the only way to fix it is to cut letters from some used old banners and paste them onto the misprinted banner. You have exactly six banners, and for some reason, you must cut exactly one letter from each banner. Then, you can arrange and paste the six letters onto the misprinted banner and try to make the missing word "harbin". However, before you start cutting, you decide to write a program to see if this is possible at all.
The input contains multiple cases. The first line of the input contains a single integer T (1≤T≤50000)T (1≤T≤50000), the number of cases.
For each case, the input contains six lines. Each line contains a non-empty string consisting only of lowercase English letters, describing the letters on one of the old banners.
The total length of all strings in all cases doesn't exceed 2⋅1062⋅106.
For each case, print the string "Yes" (without quotes) if it is possible to make the word "harbin", otherwise print the string "No" (without quotes).
2
welcome
toparticipate
inthe
ccpccontest
inharbin
inoctober
harvest
belong
ninja
reset
amazing
intriguing
No
Yes
签到题。不过自己搞复杂了,明明可以用一个技巧,但是我加了6个for,TLE了。
这个题是输入六条字符串,每一条仅只能截取一个字符,看能否组成harbin。
我想的算法是,把这个东西转成一个二维矩阵来进行dfs求解。(队友暴力过了,代码极其暴力,惨无人道..我表示看不懂....)
j 1 2 3 4 5 6
h a r b i n
i 1
2
3
4
5
6
把输入的东西转化为01矩阵,i对应6条字符串,比如样例第一条harvest,出现了h,a,r,那么在i=1行处,横着分别为 1 1 1 0 0 0
这里有个技巧
id['h']=;
id['a']=;
id['r']=;
id['b']=;id['i']=;id['n']=;
这样的话,一个字母对应一个值,比如输入字符串a, e[ i ] [ id[ a[j] ] ] 就可以了。
录入过程就是下面这个亚子:
for(int i=;i<=;i++)
{
scanf("%s",s);
vis[i]=false;
int len=strlen(s);
for(int j=;j<len;j++)
{
e[i][id[s[j]]]=;
}
}
那么接下来就是DFS了
void dfs(int idx)
{
if(ok)
return ;
if(idx==)
{
ok=;return ;
}
for(int i=;i<=;i++)
{
if(!vis[i]&&e[i][idx])
{
vis[i]=true;
dfs(idx+);
vis[i]=false;
}
}
}
思想是:idx表示字母序号,由于需要完整的harbin,所以从 idx=1 开始;idx进去以后,for里的i表示第几条字符串,如果有这么一条字符串,未被使用而且存在idx这个字符,那么记录在案,标记已使用,dfs(idx+1)找下一个字母。如果idx==7了,肯定OK,终止输出YES,否则是NO
最后,每次记得初始化
#include<iostream>
#include<cstdio>
#include<cstring>
const int maxn=2e6+;
using namespace std;
char s[maxn];
int e[][];
bool vis[];
int id[];
int ok=;
void dfs(int idx)
{
if(ok)
return ;
if(idx==)
{
ok=;return ;
}
for(int i=;i<=;i++)
{
if(!vis[i]&&e[i][idx])
{
vis[i]=true;
dfs(idx+);
vis[i]=false;
}
}
}
int main()
{
int t;
scanf("%d",&t);
id['h']=;
id['a']=;
id['r']=;
id['b']=;id['i']=;id['n']=;
while(t--)
{
memset(e,,sizeof(e));
ok=;
for(int i=;i<=;i++)
{
scanf("%s",s);
vis[i]=false;
int len=strlen(s);
for(int j=;j<len;j++)
{
e[i][id[s[j]]]=;
}
}
dfs();
if(ok)
printf("Yes\n");
else
printf("No\n");
}
return ;
}
另一个录入方法:
for(int i=;i<=;i++)
{
scanf("%s",a);
int len=strlen(a);
for(int j=;j<len;j++)
{
if(a[j]=='h')
{
e[i][]=;
}
if(a[j]=='a')
e[i][]=;
if(a[j]=='r')
e[i][]=;
if(a[j]=='b')
e[i][]=;
if(a[j]=='i')
e[i][]=;
if(a[j]=='n')
e[i][]=; }
}
The 2019 China Collegiate Pro gramming Contest Harbin Site (F. Fixing Banners)的更多相关文章
- The 2019 China Collegiate Programming Contest Harbin Site
题解: https://files.cnblogs.com/files/clrs97/HarbinEditorialV2.zip Code: A. Artful Paintings /* let x= ...
- The 2019 China Collegiate Programming Contest Harbin Site F. Fixing Banners
链接: https://codeforces.com/gym/102394/problem/F 题意: Harbin, whose name was originally a Manchu word ...
- The 2019 China Collegiate Programming Contest Harbin Site K. Keeping Rabbits
链接: https://codeforces.com/gym/102394/problem/K 题意: DreamGrid is the keeper of n rabbits. Initially, ...
- The 2019 China Collegiate Programming Contest Harbin Site J. Justifying the Conjecture
链接: https://codeforces.com/gym/102394/problem/J 题意: The great mathematician DreamGrid proposes a con ...
- The 2019 China Collegiate Programming Contest Harbin Site I. Interesting Permutation
链接: https://codeforces.com/gym/102394/problem/I 题意: DreamGrid has an interesting permutation of 1,2, ...
- 模拟赛小结:The 2019 China Collegiate Programming Contest Harbin Site
比赛链接:传送门 上半场5题,下半场疯狂挂机,然后又是差一题金,万年银首也太难受了. (每次银首都会想起前队友的灵魂拷问:你们队练习的时候进金区的次数多不多啊?) Problem J. Justify ...
- 2019 China Collegiate Programming Contest Qinhuangdao Onsite
传送门 D - Decimal 题意: 询问\(\frac{1}{n}\)是否为有限小数. 思路: 拆质因子,看是不是只包含2和5即可,否则除不尽. Code #include <bits/st ...
- 2019 China Collegiate Programming Contest Qinhuangdao Onsite F. Forest Program(DFS计算图中所有环的长度)
题目链接:https://codeforces.com/gym/102361/problem/F 题意 有 \(n\) 个点和 \(m\) 条边,每条边属于 \(0\) 或 \(1\) 个环,问去掉一 ...
- 2019 Multi-University Training Contest 1 String(序列自动机+贪心)
题意 链接:https://vjudge.net/problem/HDU-6586 给你一个字符串和k,还有每个字符出现次数的限制,求一个长度为k的字典序最小的满足限制的子序列. 思路 先构造出序列自 ...
随机推荐
- MyEclipse8.5 + jdk 1.6.0_43 + tomcat6 + maven 3.0.4 + win7 32位 ,环境搭建并看到“hello world”
一.前期准备 1.首先安装jdk,具体略,用java -version在cmd中看到下图所示就说明安装好了 2.安装tomcat6,具体略,在浏览器中输入http://localhost:8080/, ...
- PE文件结构体-IMAGE_SECTION_HEADER
在PE文件头与原始数据之间存在一个区块表(Section Table),它是一个IMAGE_SECTION_HEADER结构数组, 区块表包含每个块在映像中的信息(如位置.长度.属性),分别指向不同的 ...
- vscode点击ctrl键报错Request textDocument/definition failed.
现象 用vscode写java代码的时候突然出现,修复问题点击Ctrl时,输出窗口就打日志,报错Request textDocument/definition failed. 我百度唯一的有用线索就是 ...
- CVE-2019-0708—微软RDP远程桌面代码执行漏洞复现
0x01 2019年9月7日凌晨,msf上更新了0708的漏洞利用程序. 顿时安全群和朋友圈就爆炸了 - 奈何接到HW攻击队任务,又在家过了个中秋,0708才在今天更新. 0x02 环境 Window ...
- R 《回归分析与线性统计模型》page140,5.1
rm(list = ls()) library(car) library(MASS) library(openxlsx) A = read.xlsx("data140.xlsx") ...
- java#类的实例化顺序
关于类的实例化,不用弄的那么细致,这里只说单一类,没有其他父类(排除Obejct)的情况.要实例化一个类,需要加载class文件到jvm并且验证通过了是安全的字节码文件. 初始化大致上是按照如下步骤: ...
- qq群的表设计探究
2018年3月21日 课题组管理就如qq的群是一样的,课题组有课题组组长:qq群有群主:课题组有组员:qq群有群人员 对于一个课题组来说,组长可以对课题组进行修改,组员只能看得见,但是不能修改.所以 ...
- 微信小程序实现左滑删除效果(原生/uni-app)
实现效果 列表中侧滑删除 删除不同时存在 scrollview上下滑动与侧滑删除不影响 uni-app实现 html部分 <template> <scroll-view :scrol ...
- eclipse 安装spring tools suite插件
之前使用idea进行springboot项目的开发学习,但是由于idea是收费的,总是用着用着说验证码到期之类的,总之还是很不爽,于是就想重新采用eclipse开发springboot项目,为了方便s ...
- Python基础笔记:使用dict和set
dict 就和 C语言中的 map 的作用一样.查找非常快,以空间换时间! dict的使用: >>> d={'Mike':66,'Bob':77,'John':88} #定义一个di ...