[hdu4801]搜索

http://acm.hdu.edu.cn/showproblem.php?pid=4801

状态和生成状态的过程处理好了,这个题就是简单的搜索题了==

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 #include <map>
 7 #include <stack>
 8 #include <string>
 9 #include <ctime>
10 #include <queue>
11 #define mem0(a) memset(a, 0, sizeof(a))
12 #define mem(a, b) memset(a, b, sizeof(a))
13 #define lson l, m, rt << 1
14 #define rson m + 1, r, rt << 1 | 1
15 #define eps 0.0000001
16 #define lowbit(x) ((x) & -(x))
17 #define memc(a, b) memcpy(a, b, sizeof(b))
18 #define x_x(a) ((a) * (a))
19 #define LL long long
20 #define DB double
21 #define pi 3.14159265359
22 #define MD 10000007
23 #define INF (int)1e9
24 #define max(a, b) ((a) > (b)? (a) : (b))
25 using namespace std;
26 int arr[6][12] = {
27         {0, 1, 9, 15, 19, 18, 10, 4, 22, 23, 21, 20}, {4, 10, 18, 19, 15, 9, 1, 0, 20, 21, 23, 22},
28         {1, 3, 7, 13, 17, 19, 21, 23, 9, 8, 14, 15}, {23, 21, 19, 17, 13, 7, 3, 1, 15, 14, 8, 9},
29         {22, 23, 9, 8, 7, 6, 5, 4, 0, 1, 3, 2}, {4, 5, 6, 7, 8, 9, 23, 22, 2, 3, 1, 0},
30 };
31 int arr2[6][4] = {{0, 1, 2, 3}, {4, 5, 10, 11}, {6, 7, 12, 13}, {8, 9, 14, 15}, {16, 17, 18, 19}, {20, 21, 22, 23}};
32 int n, ans;
33 struct Node {
34         int a[24];
35         void inp() {
36                 for(int i = 0; i < 24; i++) {
37                         scanf("%d", a + i);
38                 }
39         }
40 };
41 Node doit(Node state, int arr[])
42 {
43         Node tmp = state;
44         for(int i = 0; i < 8; i++) state.a[arr[i]] = tmp.a[arr[(i + 2) % 8]];//转两格
45         for(int i = 0; i < 4; i++) state.a[arr[i + 8]] = tmp.a[arr[(i + 1) % 4 + 8]];//转一格,这里想都没想写成了走两格,wa了无数次,写搜    索题一定要细心啊
46         return state;
47 }
48 int getAns(Node state)
49 {
50         int ans = 0;
51         for(int i = 0; i < 6; i ++) {
52                 int F = 1;
53                 for(int j = 1; j < 4; j++) {
54                         if(state.a[arr2[i][j]] != state.a[arr2[i][j - 1]]) {
55                                 F = 0;
56                                 break;
57                         }
58                 }
59                 ans += F;
60         }
61         return ans;
62 }
63
64 void dfs(int k, Node state)
65 {
66         if(k > n) return;
67         for(int i = 0; i < 6; i++) {
68                 Node newState = doit(state, arr[i]);
69                 ans = max(ans, getAns(newState));
70                 dfs(k + 1, newState);
71         }
72 }
73 int main()
74 {
75         //freopen("input.txt", "r", stdin);
76         //freopen("output.txt", "w", stdout);
77         while(cin>> n) {
78                 Node state;
79                 state.inp();
80                 ans = getAns(state);
81                 dfs(1, state);
82                 cout<< ans<< endl;
83         }
84         return 0;
85 }

时间: 2024-08-24 18:12:17

[hdu4801]搜索的相关文章

Android零基础入门第62节:搜索框组件SearchView

原文:Android零基础入门第62节:搜索框组件SearchView 一.SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索. SearchView默认是展示一个search的icon,点击icon展开搜索框,也可以自己设定图标.用SearchView时可指定如下表所示的常见XML属性及相关方法. 如果为SearchView增加一个配套的ListView,则可以为Se

Android----- 改变图标原有颜色 和 搜索框

本博客主要讲以下两点知识点 图标改变颜色:Drawable的变色,让Android也能有iOS那么方便的图片色调转换,就像同一个图标,但是有多个地方使用,并且颜色不一样,就可以用这个方法了. 搜索框: 一般是EditText实现,本文 实现 TextView图片和文字居中,键盘搜索. 来看看效果图: 图标改变颜色:第一个界面的左边(二维码)和右边(更多)两个实现,我放进去的图片是黑色的,显示出来是白色的. 搜索框:第一个界面的图片和文字居中,还可以设置间距,第二个见面搜索设置键盘搜索按钮,点击搜

移动端 input 获取焦点后弹出带enter(类似于搜索,确定,前往)键盘,以及隐藏系统键盘

一:调出系统带回车键的键盘 在项目中经常有输入框,当输入完成后点击确定执行相应的动作.但是有些设计没有确定或者搜索按钮,这就需要调用系统键盘,点击系统键盘的确定后执行相应动作. 但是单纯的input是无法实现的,要想调出带回车的键盘必须把input放在form表单里面才可以,并且得加上action(一定要加),下面是个简单的例子. <form action class="search" onsubmit="return false;"> <i cl

HDU 1513 Palindrome:LCS(最长公共子序列)or 记忆化搜索

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加字符的个数. 题解1(LCS): 很神奇的做法. 先求s和s的反串的LCS,也就是原串中已经满足回文性质的字符个数. 然后要变成回文串的话,只需要为剩下的每个落单的字符,相应地插入一个和它相同的字符即可. 所以答案是:s.size()-LCS(s,rev(s)) 另外,求LCS时只会用到lcs[i-

Linux下的搜索命令grep(转)

一.简介 grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 通常grep会结合管道|来使用,比如把上一个命令得到的结果通过管道|传递到grep进行筛选 二.选项 -a 不要忽略二进制数据. -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容. -b 在显示符合范本样式的那一行之外,并

poj 1088 滑雪 DP(dfs的记忆化搜索)

题目地址:http://poj.org/problem?id=1088 题目大意:给你一个m*n的矩阵 如果其中一个点高于另一个点 那么就可以从高点向下滑 直到没有可以下滑的时候 就得到一条下滑路径 求最大的下滑路径 分析:因为只能从高峰滑到低峰,无后效性,所以每个点都可以找到自己的最长下滑距离(只与自己高度有关).记忆每个点的最长下滑距离,当有另一个点的下滑路径遇到这个点的时候,直接加上这个点的最长下滑距离. dp递推式是,dp[x][y] = max(dp[x][y],dp[x+1][y]+

hash算法搜索获得api函数地址的实现

我们一般要获得一个函数的地址,通常采用的是明文,例如定义一个api函数字符串"MessageBoxA",然后在GetProcAddress函数中一个字节一个字节进行比较.这样弊端很多,例如如果我们定义一个杀毒软件比较敏感的api函数字符串,那么可能就会增加杀毒软件对我们的程序的判定值,而且定义这些字符串还有一个弊端是占用的字节数较大.我们想想如何我们的api函数字符串通过算法将它定义成一个4字节的值,然后在GetProcAddress中把AddressOfNames表中的每个地址指向的

模糊查询(类似百度搜索框)

很常见的搜索框,很常用,总结一下,怕自己忘了,使用的是原生的js. 这是原生写的,代码很简单,重要是思路.主要就是用了一个indexOf(),很简单.越简单的东西越难想到,很多人都会想到用正则去做,这样就舍近求远了. html部分: <div id="box"> <input type="text" id="txt" value = ""> <input type="button&quo

Elasticsearch查询期间的即时搜索(Query-time Search-as-you-type)

现在让我们来看看前缀匹配能够如何帮助全文搜索.用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type).这不仅让用户能够在更短的时间内看到搜索结果,也能够引导他们得到真实存在于我们的索引中的结果. 比如,如果用户输入了johnnie walker bl,我们会在用户输入完成前显示Johnnie Walker Black Label和Johnnie Walker Blue Label相关的结果. 和往常一样,有多