[NC13B]贝伦卡斯泰露/[51Nod1400]序列分解
[NC13B]贝伦卡斯泰露/[51Nod1400]序列分解
题目大意:
给定\(A_{1\sim n}(n\le40)\),问是否能将\(A\)分解成两个相同的子序列?
思路:
折半搜索。时间复杂度\(\mathcal O(2^{\frac n2})\)。
源代码:
#include<set>
#include<cstdio>
#include<cctype>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'0';
while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
return x;
}
const int N=41;
const int base=57,mod=1e9+7;
typedef long long int64;
int n,a[N],b[N],c[N];
std::set<std::pair<int,int> > set;
void dfs1(const int &dep) {
if(dep==n/2) {
int val=0;
if(b[0]<=c[0]) {
for(register int i=b[0]+1;i<=c[0];i++) {
val=((int64)val*base+c[i])%mod;
}
} else {
for(register int i=c[0]+1;i<=b[0];i++) {
val=((int64)val*base+b[i])%mod;
}
}
set.insert(std::make_pair(b[0]-c[0],val));
return;
}
b[++b[0]]=a[dep+1];
if(b[0]>c[0]||b[b[0]]==c[b[0]]) dfs1(dep+1);
b[0]--;
c[++c[0]]=a[dep+1];
if(c[0]>b[0]||c[c[0]]==b[c[0]]) dfs1(dep+1);
c[0]--;
}
void dfs2(const int &dep) {
if(dep==n/2+1) {
int val=0;
if(b[0]<=c[0]) {
for(register int i=c[0];i!=b[0];i--) {
val=((int64)val*base+c[i])%mod;
}
} else {
for(register int i=b[0];i!=c[0];i--) {
val=((int64)val*base+b[i])%mod;
}
}
if(set.count(std::make_pair(c[0]-b[0],val))) throw 0;
return;
}
b[++b[0]]=a[dep-1];
if(b[0]>c[0]||b[b[0]]==c[b[0]]) dfs2(dep-1);
b[0]--;
c[++c[0]]=a[dep-1];
if(c[0]>b[0]||c[c[0]]==b[c[0]]) dfs2(dep-1);
c[0]--;
}
int main() {
for(register int T=getint();T;T--) {
n=getint();
for(register int i=1;i<=n;i++) a[i]=getint();
set.clear();
b[0]=c[0]=0;
dfs1(0);
try {
dfs2(n+1);
} catch(...) {
puts("Frederica Bernkastel");
continue;
}
puts("Furude Rika");
}
return 0;
}
[NC13B]贝伦卡斯泰露/[51Nod1400]序列分解的更多相关文章
- 牛客练习赛3 B - 贝伦卡斯泰露
链接:https://www.nowcoder.net/acm/contest/13/B来源:牛客网 题目描述 贝伦卡斯泰露,某种程度上也可以称为古手梨花,能够创造几率近乎 为0的奇迹,通过无限轮回成 ...
- 牛客练习赛3 贝伦卡斯泰露——队列&&爆搜
题目 链接 题意:给出一个长度为 $n$ 的数列 $A_i$,问是否能将这个数列分解为两个长度为n/2的子序列,满足: 两个子序列不互相重叠(是值不能有共同元素,但位置可以交错). 两个子序列中的数要 ...
- 墨西哥萨卡特卡斯将举行GNOME GUADEC 2020 峰会
导读 GNOME基金会今天宣布了下两届GUADEC(GNOME用户和开发人员欧洲会议)活动的主办城市,这也将是GNOME桌面环境下一版本的代号. 随着GNOME 3.34 “Thessalonik”的 ...
- 51NOD 1400 序列分解
传送门:1400 序列分解序列分解 基准时间限制:1s 空间限制:131072 KBKB131072 KB 1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题1 秒 空间限制:13 ...
- 1400 序列分解(dfs)
1400 序列分解 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 小刀和大刀是双胞胎兄弟.今天他们玩一个有意思的游戏. 大刀给小刀准备了一个长度为n的整数序列.小 ...
- 51nod 算法马拉松3 A:序列分解
序列分解 System Message (命题人) 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 小刀和大刀是双胞胎兄弟.今天他们玩一个有意思的游戏. 大刀给小刀准备了一个长度为n ...
- "巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场
Combine String #include<cstdio> #include<cstring> #include<iostream> #include<a ...
- hdu_5705_Clock("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5705 题意:给你一个时间和一个角度,问你下一个时针和分针形成给出的角度是什么时候 题解:我们可以将这个 ...
- hdu_5707_Combine String("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5707 题意:给你三个字符串 a,b,c,问你 c能否拆成a,b,a,b串的每一个字符在c中不能变 题解 ...
随机推荐
- 用体渲染的方法在Unity中渲染云(18/4/4更新)
github: https://github.com/yangrc1234/VolumeCloud 更新的内容在底部 最近在知乎上看到一篇文章讲云层的渲染(https://zhuanlan.zhihu ...
- 【leetcode 简单】第一题 两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], target ...
- Linux实用命令之xdg-open
为什么要介绍 xdg-open 呢,得先从需求说起. 一般在控制台中,可以使用命令操作各式文本文件.但难以避免,需要操作一些非文本文件,如 pdf,doc 等. 此时,一般的做法是,打开文件管理器,再 ...
- PHP扩展插件 imagick 、PDO_MYSQL 安装
环境准备 echo $LC_ALL echo "export LC_ALL=C" >> /etc/profile source /etc/profile yum ins ...
- C语言地址对齐(转)--网络编程之结构体大小的计算
什么是地址对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数 ...
- ECharts图表tooltip显示时超出canvas图层解决方法
我们在做ECharts图表的时候可能会遇到tooltip显示时超出了canvas图层范围,并且被其它z-index较高的div容器遮盖,这是悬浮展示信息就看不全,我们根据官网文档的配置项查询发现con ...
- hosts,命令行前面的显示
1,/etc/hosts,主机名ip配置文件. # Do not remove the following line, or various programs # that require netwo ...
- Codeforces 86D - Powerful array(莫队算法)
题目链接:http://codeforces.com/problemset/problem/86/D 题目大意:给定一个数组,每次询问一个区间[l,r],设cnt[i]为数字i在该区间内的出现次数,求 ...
- SVN文件上感叹号、加号、问号等图标的原因
黄色感叹号(有冲突): --这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别 ...
- [ JS 进阶 ] Repaint 、Reflow 的基本认识和优化
你是不是经常听师兄或一些前端前辈说不能用CSS通配符 *,CSS选择器层叠不能超过三层,CSS尽量使用类选择器,书写HTML少使用table,结构要尽量简单-DOM树要小....等这些忠告,以前我就大 ...