1400 序列分解(dfs)
小刀和大刀是双胞胎兄弟。今天他们玩一个有意思的游戏。 大刀给小刀准备了一个长度为n的整数序列。小刀试着把这个序列分解成两个长度为n/2的子序列。
这两个子序列必须满足以下两个条件:
1.他们不能相互重叠。
2.他们要完全一样。
如果小刀可以分解成功,大刀会给小刀一些糖果。
然而这个问题对于小刀来说太难了。他想请你来帮忙。
第一行给出一个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)
如果小刀可以完成游戏,输出"Good job!!" (不包含引号),否则 输出"What a pity!" (不包含引号)。
2 4 1 1 2 2 6 1 2 3 4 5 6
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)相关推荐
- Python将序列分解为单独的变量
提出问题: 假设我们有一个包含N个元素的元组或者序列,现在想将它分解为N个单独的变量. 解决思路: 任何序列或者是可迭代的对象,都可以通过一个简单的赋值操作来分解为单独的变量 下面是例子,请看: 但是 ...
- R-时间序列-分解季节性时间序列
1.季节性时间序列 包含:长期趋势Trend,季节趋势Seasonal,周期循环Circle,随机项Random 这里分解为相加模型X=T+S+C+R 在对时间序列进行分解之前,应该对序列进行检验:( ...
- 题目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 ...
- scala把序列分解成子集(group by,partition)
Problem 你想要基于一种算法或者规则,把一个序列切分为两个或者多个子集. Solution 使用groupBy,partition,span,splitAt方法可以把一个集合切分成子集合.sli ...
- 算法设计大赛21题---三升序列(DFS)
算法设计大赛21. 矩阵为: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNKIRWGZWXWRHKXFASA ...
- Autoformer: 基于深度分解架构和自相关机制的长期序列预测模型
本文介绍本组时间序列预测方向的最新工作:Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Serie ...
- 【时序列】时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 详细理解python sm.tsa.seasonal_decompose
[时序列]时序列数据如何一步步分解成趋势(trend)季节性(seasonality)和误差(residual)- 理解python sm.tsa.seasonal_decompose 在做时序列分析 ...
- Java中字符序列的替换与分解
一.使用String类 String对象调用public String replaceAll(String regex,String replacement)方法,返回一个新的String对象,返回的 ...
- 搜索(DFS与BFS)
搜索 BFS Flood Fill模型 池塘计数 城堡问题 山峰和山谷 最短路模型 迷宫问题 武士风度的牛 抓住那头牛 多源BFS 矩阵距离 最小步数模型 魔板 双端队列广搜 电路维修 双向广搜 字串 ...
- 已知序列求蝶形运算_在N=32的基 2 时间抽取发 FFT 运算流图中,从 到 需______级蝶形运算过程。 (4.0分)_学小易找答案...
[单选题]互相关函数性质正确的是: [计算题]两个有限长的复序列 x[n] 和 h[n] ,其长度分别为 N 和 M ,设两序列的线性卷积为 y[n]=x[n]*h[n] ,回答下列问题: (1) 序 ...
最新文章
- 在Windows下为PHP安装redis扩展
- I00014 汉若塔问题的C++程序
- activemq 发两条只收到一条_浅谈ActiveMQ与使用
- python中字符编码使用_python中字符编码是什么?如何转换字符?
- 【渝粤教育】 国家开放大学2020年春季 1190当代中国政治制度 参考试题
- linux线程出错,在线程应用程序(linux,pthreads)中读取文件大小时出错
- SharePoint2007 配置MOSS基于AD的Forms验证
- 软考复习之路—组成原理
- MySQL中innodb_page_cleaners详解
- 长沙理工大学计算机网络试题,长沙理工大学考试试卷(计算机网络)要点.docx
- 陈润生院士:我给自己取了个微信名,叫“微不足道”
- 以ssm+mvc框架来开发一个系统的基本流程
- Python自动运维系列:每天凌晨定时执行特定任务
- 如何讲商业智能(BI)融入大数据中
- jquery + ashx + Json 操作数据
- Windows 无法启动 vmwave workstation server 服务 错误1075
- 一款好用的电池管理工具:App Tamer Mac版
- MAL-PEG-Cholesterol,MAL-PEG-CLS
- [2021.11.19]UPC-2021级新生个人训练赛第4场-19278 Problem D 关门
- 天道酬勤,记春招之路(完美世界,360,腾讯IEG,网易雷火)
热门文章
- Git指令及码云的使用笔记
- nodejs中md5加密模块
- 上海财经大学计算机考研好不好,五所不错的财经类大学,不歧视,不压分,你会考虑吗?...
- MAC使用CodeSign查看已签名的文件的数字签名情况
- 六石管理学:头目们为什么要忽略产品质量
- dontshrink解决ProGuard错误:java.lang.StackOverflowError
- error LNK2005: 已经在 app_launcher.obj 中定义
- Can‘t find third_party/gtest. Run git submodule update --init, or disable with CMake -DBUILD_TEST
- VirtualBox虚拟机压缩减少体积
- 博客访问量,有没有可能是系统所为?