hdu 5077 NAND(暴力打表)

题目链接:hdu 5077 NAND

题目大意:Xiaoqiang要写一个编码程序,然后根据x1,x2,x3的值构造出8个字符,现在给定要求生成的8个字符,问

说Xiaoqiang最少要写多少行代码。代码内容只能为NAND操作和return操作,操作的变量可以是常数。

解题思路:输入总共就256中情况,所以暴力剪枝打表,打表的代码手贱给删了。。。所以就将一下思路,开一个s数组

表示变量,然后对应每一层每次两个变量进行NAND操作。

大致三个剪枝,dfs时候,变量出现相同就跳过;8个字符可以直接根据数的位运算计算;单前层出现相同的跳过。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int ans[300] = {1, 5, 6, 3, 6, 3, 7, 4, 7, 8, 4, 5, 4, 5, 4, 1, 6, 3, 7, 4, 7, 4, 9, 7, 8, 8, 7, 5, 7, 5, 7, 4, 7, 8, 4, 5, 8, 8, 7, 5, 8, 9, 5, 6, 8, 8, 5, 5, 4, 5, 4, 1, 7, 5, 7, 4, 8, 8, 5, 5, 5, 7, 6, 4, 7, 8, 8, 8, 4, 5, 7, 5, 8, 9, 8, 8, 5, 6, 5, 5, 4, 5, 7, 5, 4, 1, 7, 4, 8, 8, 5, 7, 5, 5, 6, 4, 8, 9, 8, 8, 8, 8, 5, 7, 11, 9, 8, 9, 8, 9, 8, 8, 5, 6, 5, 5, 5, 5, 6, 4, 8, 9, 8, 8, 8, 8, 8, 7, 8, 9, 9, 9, 9, 9, 10, 9, 5, 7, 6, 6, 6, 6, 7, 6, 9, 9, 10, 9, 10, 9, 10, 10, 7, 6, 7, 7, 7, 7, 9, 7, 5, 7, 6, 6, 7, 6, 7, 7, 5, 6, 2, 3, 6, 6, 4, 3, 6, 6, 7, 6, 7, 7, 9, 7, 6, 6, 4, 3, 7, 7, 7, 6, 5, 7, 7, 6, 6, 6, 7, 7, 5, 6, 6, 6, 2, 3, 4, 3, 6, 6, 7, 7, 7, 6, 9, 7, 6, 6, 7, 7, 4, 3, 7, 6, 5, 6, 6, 6, 6, 6, 7, 7, 8, 9, 5, 6, 5, 6, 2, 5, 2, 3, 4, 3, 4, 3, 7, 6, 5, 6, 2, 5, 2, 5, 4, 1};

int main () {
    int cas;
    char p[10];
    scanf("%d", &cas);
    while (cas--) {
        scanf("%s", p);
        int ret = 0;
        for (int i = 0; i < 8; i++)
            ret = ret * 2 + p[i] - ‘0‘;
        printf("%d\n", ans[ret]);
    }

    return 0;
}
时间: 2024-10-13 11:22:32

hdu 5077 NAND(暴力打表)的相关文章

hdu 5077 NAND(打表)2014 Asia regional 鞍山站 H题

题目链接:点击打开链接 题意:就是一个按位运算的一个函数,问最少经过多少步运算可以得到给定数: 思路:不是我投机取巧想打表,是特么这题只能打表...打表思想用可以得到的数的集合表示状态bfs:最后有一个需要11步的需要打将近1h,除去这一个十分钟就够了. cpp: #include <cstdio> #include <cstring> #include <queue> #include <vector> #include <map> using

HDU 5077 NAND

题意: 输入真值表的最后一列  问  最少使用多少个"与非"式使真值表成立 思路: 纱布题-  现场赛出了就是看前面谁做得快了 - -b  这题就是暴力打表  然后提交那个表- 我的打表巨暴力  能把ans=10的答案打出  全部表打完估计要跑30min才行  其中104这个点打不出来  于是我们可以用人工枚举的办法 - -b  就是从11开始枚举  不断提交-  WA了就改一下- 其实这题的暴搜可以写的很美  但是我很懒-- QAQ 代码: #include<cstdio>

HDU 1012 u Calculate e【暴力打表,水】

u Calculate e Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 46844    Accepted Submission(s): 21489 Problem Description A simple mathematical formula for e is where n is allowed to go to infini

筛法暴力打表 --- hdu : 12876 Quite Good Numbers

Quite Good Numbers Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 77, Accepted users: 57 Problem 12876 : No special judgement Problem description A "perfect" number is an integer that is equal to the sum

HDU 4858 项目管理(邻接表 暴力模拟)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的! 两个节点间可能有多条边,不过一条边的两端必然是不同的节点.每个节点都有一个能量值. 现在我们要编写一个项目管理软件,这个软件呢有两个操作:1.给某个项目的能量值加上一个特定值.2.询问跟一个项目相邻的项目的能量值之和.(如果有多条边就算多次,比如a和b有2条边,那么询问a的时候b的权值算2次). 解题报告:这个

HDU 5179 beautiful number (数位dp / 暴力打表 / dfs)

beautiful number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 801    Accepted Submission(s): 518 Problem Description Let A=∑ni=1ai?10n?i(1≤ai≤9)(n is the number of A's digits). We call A as "

hdu 1431 素数回文(暴力打表,埃托色尼筛法)

这题开始想时,感觉给的范围5 <= a < b <= 100,000,000太大,开数组肯定爆内存,而且100000000也不敢循环,不超时你打我,反正我是不敢循环. 这题肯定得打表,筛素数肯定用埃托色尼筛法(不好意思把大名鼎鼎的埃拉托色尼名字打错了,表打我). 再看当你所找的回文数的位数为偶数时,有如下定理除11外所有偶数位数的回文数都能被11整除,所以所有偶数位数的回文都不是素数. 证明看如下(我手写的) 手机像素渣(凑活着吧)字丑也凑和着. 证完后我们在来说题目给的数据范围 所以当

HDU 4952 Number Transformation 打表规律

点击打开链接 Number Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 495    Accepted Submission(s): 248 Problem Description Teacher Mai has an integer x. He does the following operation

HDU 4731 Minimum palindrome 打表找规律

题目链接 虽然想到了可能有规律,但是比赛的时候没有去仔细推敲. 暴力打表找出可以得到对应的长度n和对应字符集m所对应的答案 10 1 1 1 a 2 2 aa 3 3 aaa 4 4 aaaa 5 5 aaaaa 6 6 aaaaaa 7 7 aaaaaaa 8 8 aaaaaaaa 9 9 aaaaaaaaa 10 10 aaaaaaaaaa 20 2 1 1 a 2 1 ab 3 2 aab 4 2 aabb 5 3 aaaba 6 3 aaabab 7 3 aaababb 8 3 aaab