http://acm.hdu.edu.cn/showproblem.php?pid=4068

暴力枚举两个全排列,犯了若干错误,以此为鉴

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std ;
int n,f,m[],vis[],vis2[],temp[] ;
string str[],ans[],s[][],res[] ;
int OK()
{
int i,j,flag ;
i=j= ;
while(i<n && j<n)
{
flag= ;
for(int k= ;k<m[temp[i]] ;k++)
{
if(s[temp[i]][k]==res[j])
{
flag= ;
break ;
}
}
if(flag)j++ ;
else i++ ;
}
if(i==n)return ;
return ;
}
int ff ;
int dfs2(int cur)
{
if(cur==n)
{
if(!OK()){
ff= ;
return ;
}
}
for(int i= ;i<n && ff ;i++)
{
if(!vis2[i])
{
vis2[i]= ;
temp[cur]=i ;
dfs2(cur+) ;
vis2[i]= ;
}
}
if(ff)return ;
return ;
}
void dfs(int cur)
{
if(f)
return ;
if(cur==n)
{
ff= ;
memset(vis2,,sizeof(vis2)) ;
if(dfs2())
{
f= ;
for(int i= ;i<n ;i++)
ans[i]=res[i] ;
}
return ;
}
for(int i= ;i<n ;i++)
{
if(!vis[i])
{
vis[i]= ;
res[cur]=str[i] ;
dfs(cur+) ;
vis[i]= ;
}
}
} int main()
{
int t ;
scanf("%d",&t) ;
for(int cas= ;cas<=t ;cas++)
{
scanf("%d",&n) ;
for(int i= ;i<n ;i++)
cin >> str[i] ;
for(int i= ;i<n ;i++)
{
scanf("%d",&m[i]) ;
for(int j= ;j<m[i] ;j++)
{
cin >> s[i][j] ;
}
}
sort(str,str+n) ;
f= ;
memset(vis,,sizeof(vis)) ;
dfs() ;
printf("Case %d: ",cas) ;
if(f)
{
puts("Yes") ;
for(int i= ;i<n ;i++)
{
if(i)
{
putchar(' ') ;
}
cout << ans[i] ;
}
putchar('\n') ;
}
else
puts("No") ;
}
return ;
}

HDU 4068的更多相关文章

  1. hdu 4068 I-number【大数】

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=4608 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  2. hdu 4068 福州赛区网络赛H 排列 ***

    拍的太慢了,很不满意 排完序之后,枚举自己和对手状态,若被击败,则再枚举自己下一个策略,直到可以击败对手所有的策略 #include<cstdio> #include<iostrea ...

  3. hdu 4068 SanguoSHA

    搜索下就可以了…… 代码如下: #include<iostream> #include<cstring> #include<cstdio> #include< ...

  4. hdu 4068 I-number

    #include<stdio.h> #include<string.h> ]; int al; int mysum() //求各位和 { ; al=strlen(a); ; i ...

  5. [置顶] 2013_CSUST暑假训练总结

    2013-7-19 shu 新生训练赛:母函数[转换成了背包做的] shuacm 题目:http://acm.hdu.edu.cn/diy/contest_show.php?cid=20083总结:h ...

  6. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  8. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  9. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. 3.6 Templates -- Binding Element Class Names(绑定元素类名)

    1. 一个HTML元素的class属性可以像其他属性一样被绑定: <div class={{priority}}> Warning! </div> 生成的HTML <di ...

  2. F题:等差区间(RMQ||线段树)

    原题大意:原题链接  题解链接 给定一个长为n的数组元素和q次区间[l,r]询问,判断区间[l,r]内元素排序后能否构成等差数列 #include<cmath> #include<c ...

  3. EditPlus 4.3.2463 中文版已经发布(10月16日更新)

    距离上个版本在本年5月发布后,EditPlus 网站沉寂多月.日前终于发布了一个新的小版本. 该版本却具有多项改进,值得一提: * Ctrl+Alt+Up/Down 键在列选模式下可插入多个插入点. ...

  4. SQL :模糊查询,转义字符

    1. 查询table表name列包含 '_BCE' 的记录 select * from table where name like '_BCE%' ABCEDF _BCEFG _BCEDF 3 row ...

  5. bzoj1628 [Usaco2007 Demo]City skyline(单调栈)

    Description Input 第一行给出N,W 第二行到第N+1行:每行给出二个整数x,y,输入的x严格递增,并且第一个x总是1 Output 输出一个整数,表示城市中最少包含的建筑物数量 Sa ...

  6. c++语言中的遍历

    原文地址:http://www.cnblogs.com/xylc/p/3653036.html 随着C++11标准的出现,C++标准添加了许多有用的特性,C++代码的写法也有比较多的变化. vecto ...

  7. linux内核分析第六周-分析Linux内核创建一个新进程的过程

    Linux内核对进程管理是操作系统的重要任务之一. 此次实验就是了解内核创建一个新进程的大致过程. 为了简单,使用fork再用户态创建一个进程.代码如下: 下面是准备工作​​​ cd LinuxKer ...

  8. Two Sum(II和IV)

    本文包含leetcode上的Two Sum(Python实现).Two Sum II - Input array is sorted(Python实现).Two Sum IV - Input is a ...

  9. 如何表示各个时区的时间DateTime.ToString()

    使用sqlite进行时间的插入的时候,使用了 DateTime.ToString("s")  //s: 2008-06-15T21:15:07 插入到数据库之后,发现时间被加了8个 ...

  10. 枚举子集&高位前缀和

    最近做的题里面有这个东西,于是写一篇博客总结一下吧. 枚举子集 枚举子集就是状压的时候枚举其中的二进制位中的1的子集.直接暴力枚举二进制位时间复杂度是\(O(4^n)\),但是我们可以发现,对于每一位 ...