Wannafly模拟赛3-B 贝伦卡斯泰露(DFS)

来源:互联网 发布:证券软件下载 编辑:程序博客网 时间:2024/06/16 17:27

题目链接:https://www.nowcoder.com/acm/contest/13/B

题解:枚举两个序列的起点,直接爆搜即可。

#include<set>      #include<map>         #include<stack>                #include<queue>                #include<vector>        #include<string>     #include<time.h>    #include<math.h>                #include<stdio.h>                #include<iostream>                #include<string.h>                #include<stdlib.h>        #include<algorithm>       #include<functional>        using namespace std;                #define ll long long          #define inf 1000000000           #define mod 1000000007                #define maxn  50   #define lowbit(x) (x&-x)                #define eps 1e-9  int a[maxn],b[maxn],n,c[maxn],flag,used[maxn];bool dfs(int x,int y,int num){if(num==n/2)return 1;used[x]=used[y]=1;int xx=x+1,yy=y+1;while(xx<=n && used[xx])xx++;while(1){while(yy<=n && (used[yy] || xx==yy || a[xx]!=a[yy]))yy++;if(xx<=n && yy<=n){if(dfs(xx,yy,num+1))return 1;yy++;}elsebreak;}used[x]=used[y]=0;return 0;}int main(void){int T,i;scanf("%d",&T);while(T--){flag=0;memset(used,0,sizeof(used));scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=2;i<=n/2+1;i++)if(a[1]==a[i] && dfs(1,i,1)){flag=1;break;}if(flag)printf("Frederica Bernkastel\n");elseprintf("Furude Rika\n");}return 0;}


原创粉丝点击