hdu 4665 Unshuffle(暴力)
来源:互联网 发布:hive sql 编辑:程序博客网 时间:2024/06/08 02:08
题目链接:hdu 4665 Unshuffle
解题思路
因为每个位置出现次数不超过4,所以搜索可以优化很多,预处理出每个位置和后面最近字符相同的位置。然后递归求解即可。
代码
#include <cstdio>#include <cstring>#include <vector>#include <algorithm>using namespace std;const int maxn = 2005;int N, A[maxn], P[maxn], S[maxn];void init () { scanf("%d", &N); for (int i = 1; i <= N; i++) scanf("%d", &A[i]); memset(P, -1, sizeof(P)); for (int i = N; i; i--) { S[i] = P[A[i]]; P[A[i]] = i; } memset(P, 0, sizeof(P));}bool dfs (int d, int l, int c) { if (l >= N) return c * 2 == N; if (P[d]) return dfs(d + 1, l, c); if (S[d] > l) { P[S[d]] = 1; if (dfs(d + 1, S[d], c + 1)) return true; P[S[d]] = 0; } int s = S[d]; if (s != -1 && S[s] > l) { P[S[s]] = 1; if (dfs(d + 1, S[s], c + 1)) return true; P[S[s]] = 0; } return false;}int main () { int cas; scanf("%d", &cas); while (cas--) { init(); dfs(1, 1, 0); for (int i = 1; i <= N; i++) printf("%d", P[i]); printf("\n"); } return 0;}
0 0
- hdu 4665 Unshuffle(暴力)
- hdu 4665 Unshuffle (DFS)
- HDU 4665 Unshuffle
- hdu 4665 Unshuffle
- hdu - 4665 - Unshuffle
- hdu 4665Unshuffle
- 2013 多校第六场 hdu 4665 Unshuffle
- Unshuffle(深搜加剪枝-hdu4665)
- HDU 5745(暴力)
- HDU 5762(暴力)
- hdu 5762(暴力)
- hdu 1015 (DFS,暴力)
- hdu 4968(暴力枚举)
- HDU 5258(水暴力)
- hdu 5305 Friends(暴力)
- hdu 5353 Average(暴力)
- hdu 5339 Untitled(暴力)
- hdu 5386 Cover (暴力)
- Matlab “Out of memory”解决办法
- android基础之ADB常用命令
- Android中的webview详细使用
- LeetCode16:3Sum Closest
- 计算机原理之c语言实现链表
- hdu 4665 Unshuffle(暴力)
- On Hat Puzzle 2.1: From Dr. Todd Ebert's thesis
- Linux下载安装sshd服务,用SecureCRT连接虚拟机
- 二维RMQ
- hdu 4666 Hyperspace(线段树)
- 声明map对象时你不知道的事
- BaseAdapter优化------文艺式
- Samba的简介和配置
- Viewpager