1400 序列分解
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

小刀和大刀是双胞胎兄弟。今天他们玩一个有意思的游戏。 大刀给小刀准备了一个长度为n的整数序列。小刀试着把这个序列分解成两个长度为n/2的子序列。

这两个子序列必须满足以下两个条件:

1.他们不能相互重叠。

2.他们要完全一样。

如果小刀可以分解成功,大刀会给小刀一些糖果。

然而这个问题对于小刀来说太难了。他想请你来帮忙。

Input
第一行给出一个T,表示T组数据。(1<=T<=5)
接下来每一组数据,输入共2行。
第一行包含一个整数n (2<=n<=40且为偶数)。
第二行给出n个整数a[0],a[1],a[2],…,a[n-1]表示大刀给小刀准备的序列。(-1,000,000,000<=a[i]<=1,000,000,000)
Output
如果小刀可以完成游戏,输出"Good job!!" (不包含引号),否则 输出"What a pity!" (不包含引号)。
Input示例
2
4
1 1 2 2
6
1 2 3 4 5 6
Output示例
Good job!!
What a pity!

//难懂的题意,看了讨论才知道,就是说将大序列分成两个子序列,子序列的顺序关系不能改变,那么没想到什么好办法,玄学dfs走一波,算起来复杂度高,实际是不怎么高的,毕竟要相同才能移动,想清楚即可

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define INF 0x3f3f3f3f
 4 #define LL long long
 5 #define MX 45
 6
 7 int n;
 8 int dat[MX];
 9 bool vis[MX];
10
11 int dfs(int x, int y, int s)
12 {
13     if (s==n/2) return 1;
14     vis[x]=1, vis[y]=1;
15     int _x = x+1, _y = y+1;
16     while (_x<=n&&vis[_x]) _x++;
17     while(1)
18     {
19         while (_y<=n&&(vis[_y]||_y==_x||dat[_x]!=dat[_y])) _y++;
20         if (_x<=n&&_y<=n)
21         {
22             if (dfs(_x,_y,s+1))
23                 return 1;
24             _y++;
25         }
26         else break;
27     }
28     vis[x]=0, vis[y]=0;
29     return 0;
30 }
31
32 int main()
33 {
34     int T;
35     scanf("%d",&T);
36     while (T--)
37     {
38         memset(vis,0,sizeof(vis));
39         scanf("%d",&n);
40         for (int i=1;i<=n;i++)
41             scanf("%d",&dat[i]);
42         bool ok = 0;
43         for (int i=2;i<=n/2+1;i++)
44         {
45             if (dat[1]==dat[i]&&dfs(1,i,1))
46             {
47                 ok=1;
48                 break;
49             }
50         }
51         if (ok)
52             printf("Good job!!\n");
53         else
54             printf("What a pity!\n");
55     }
56 }

View Code

转载于:https://www.cnblogs.com/haoabcd2010/p/7623578.html

1400 序列分解(dfs)相关推荐

  1. Python将序列分解为单独的变量

    提出问题: 假设我们有一个包含N个元素的元组或者序列,现在想将它分解为N个单独的变量. 解决思路: 任何序列或者是可迭代的对象,都可以通过一个简单的赋值操作来分解为单独的变量 下面是例子,请看: 但是 ...

  2. R-时间序列-分解季节性时间序列

    1.季节性时间序列 包含:长期趋势Trend,季节趋势Seasonal,周期循环Circle,随机项Random 这里分解为相加模型X=T+S+C+R 在对时间序列进行分解之前,应该对序列进行检验:( ...

  3. 题目1251:序列分割(DFS+剪枝)

    题目描述: 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值   比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1;   {3,6}{2,4,3} m=2   {3 ...

  4. scala把序列分解成子集(group by,partition)

    Problem 你想要基于一种算法或者规则,把一个序列切分为两个或者多个子集. Solution 使用groupBy,partition,span,splitAt方法可以把一个集合切分成子集合.sli ...

  5. 算法设计大赛21题---三升序列(DFS)

    算法设计大赛21. 矩阵为: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASA ...

  6. Autoformer: 基于深度分解架构和自相关机制的长期序列预测模型

    本文介绍本组时间序列预测方向的最新工作:Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Serie ...

  7. 【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose

    [时序列]时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 理解python sm.tsa.seasonal_decompose 在做时序列分析 ...

  8. Java中字符序列的替换与分解

    一.使用String类 String对象调用public String replaceAll(String regex,String replacement)方法,返回一个新的String对象,返回的 ...

  9. 搜索(DFS与BFS)

    搜索 BFS Flood Fill模型 池塘计数 城堡问题 山峰和山谷 最短路模型 迷宫问题 武士风度的牛 抓住那头牛 多源BFS 矩阵距离 最小步数模型 魔板 双端队列广搜 电路维修 双向广搜 字串 ...

  10. 已知序列求蝶形运算_在N=32的基 2 时间抽取发 FFT 运算流图中,从 到 需______级蝶形运算过程。 (4.0分)_学小易找答案...

    [单选题]互相关函数性质正确的是: [计算题]两个有限长的复序列 x[n] 和 h[n] ,其长度分别为 N 和 M ,设两序列的线性卷积为 y[n]=x[n]*h[n] ,回答下列问题: (1) 序 ...

最新文章

  1. 在Windows下为PHP安装redis扩展
  2. I00014 汉若塔问题的C++程序
  3. activemq 发两条只收到一条_浅谈ActiveMQ与使用
  4. python中字符编码使用_python中字符编码是什么?如何转换字符?
  5. 【渝粤教育】 国家开放大学2020年春季 1190当代中国政治制度 参考试题
  6. linux线程出错,在线程应用程序(linux,pthreads)中读取文件大小时出错
  7. SharePoint2007 配置MOSS基于AD的Forms验证
  8. 软考复习之路—组成原理
  9. MySQL中innodb_page_cleaners详解
  10. 长沙理工大学计算机网络试题,长沙理工大学考试试卷(计算机网络)要点.docx
  11. 陈润生院士:我给自己取了个微信名,叫“微不足道”
  12. 以ssm+mvc框架来开发一个系统的基本流程
  13. Python自动运维系列:每天凌晨定时执行特定任务
  14. 如何讲商业智能(BI)融入大数据中
  15. jquery + ashx + Json 操作数据
  16. Windows 无法启动 vmwave workstation server 服务 错误1075
  17. 一款好用的电池管理工具:App Tamer Mac版
  18. MAL-PEG-Cholesterol,MAL-PEG-CLS
  19. [2021.11.19]UPC-2021级新生个人训练赛第4场-19278 Problem D 关门
  20. 天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)

热门文章

  1. Git指令及码云的使用笔记
  2. nodejs中md5加密模块
  3. 上海财经大学计算机考研好不好,五所不错的财经类大学,不歧视,不压分,你会考虑吗?...
  4. MAC使用CodeSign查看已签名的文件的数字签名情况
  5. 六石管理学:头目们为什么要忽略产品质量
  6. dontshrink解决ProGuard错误:java.lang.StackOverflowError
  7. error LNK2005: 已经在 app_launcher.obj 中定义
  8. Can‘t find third_party/gtest. Run git submodule update --init, or disable with CMake -DBUILD_TEST
  9. VirtualBox虚拟机压缩减少体积
  10. 博客访问量,有没有可能是系统所为?