dp [ x ] [ y ] [ z ] 表示二进制y所表示的组合对应的之和mod x余数为z的最小数...

如可用的数字为 1 2 3 4...那么 dp [ 7 ] [ 15 ] [ 2 ] = 1234 ....

输入一个数列后..将dp的表做出来..然后O(1)的输出...题目要求是( T + X ) % K =0 可以转化为 T % K = ( K - ( X % K ) ) % K

Program:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<set>
#include<algorithm>
#include<cmath>
#define oo 1000000007
#define ll long long
#define pi acos(-1.0)
#define MAXN 505
using namespace std;
int n,a[10],dp[102][520][102],num,ans[10];
bool legal(int k)
{int x=1,i;for (i=0;i<n;i++){if (k%2) x=a[i];k/=2;}  return x;
}
int main()
{ int i,m,X,K,j,t,p; while (~scanf("%d%d",&n,&m)){for (i=0;i<n;i++) scanf("%d",&a[i]);sort(a,a+n);memset(dp,-1,sizeof(dp));for (K=1;K<100;K++){dp[K][0][0]=0;for (i=0;i<(1<<n);i++)if (legal(i))  for (j=0;j<n;j++)if ( (i & (1<<j)))for (t=0;t<K;t++)if (dp[K][i-(1<<j)][t]!=-1){p=dp[K][i-(1<<j)][t]*10+a[j];if (dp[K][i][(t*10+a[j])%K]==-1 || dp[K][i][(t*10+a[j])%K]>p)dp[K][i][(t*10+a[j])%K]=p;}   }        while (m--){scanf("%d%d",&X,&K); if (dp[K][(1<<n)-1][(K-(X%K))%K]==-1) printf("None\n");else printf("%d\n",dp[K][(1<<n)-1][(K-(X%K))%K]);}     }return 0;
}

转载于:https://www.cnblogs.com/jiangu66/p/3196802.html

HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP相关推荐

  1. DP动态规划企业级模板分析(数字三角,上升序列,背包,状态机,压缩DP)

    前言 经过基础的算法模型讲解和题海战术,将DP动态规划这个重点呢考纲进行细分题类型,此篇是上半章节的DP动态分析提升题.主要包括数字三角形,以及最大上升序列,背包问题,状态机的拆分以及优化状态机的压缩 ...

  2. HDU1755 A Number Puzzle【全排列+暴力】

    A Number Puzzle Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. dfs入门排列数字问题(一看就懂的讲解)

    dfs入门排列数字问题 dfs入门排列数字问题 一.问题概述 二.问题分析 三.代码分析 (一).如何表示填写完成 (二).如何判断该填哪个数 (三).如何表示填空 (四).实现dfs 四.代码全览 ...

  4. DFS和BFS概念及实践+acwing 842 排列数字(dfs) +acwing 844. 走迷宫(bfs)

    DFS (深搜), 也有说就是递归的 执着: 一直搜到底,然后回溯下一个节点 数据结构 : stack (这里的栈,实际上是编译器内部的栈, 所以说也可以看成递归, 递归内部也是调用编译器内部栈) 空 ...

  5. ---排列数字---

    排列数字(回溯的应用) 题目链接,点击直达 题解: 1.用path数组来保存排列 2.bool st[]数组来标识当前数字是否被用过 3.dfs继续递归下一层 4,恢复现场,第 i 个位置填写某个数字 ...

  6. 移动端苹果手机的input框type= number只是唤起数字键盘 不能阻止输入汉字和字母

    移动端苹果手机的input框type= number只是唤起数字键盘 不能阻止输入汉字和字母 , input事件的replace(正则,'')没有作用 解决办法 用input type = text ...

  7. 杭电oj HDOJ 1018 Big Number(斯特林公式求大数阶乘的位数)

    杭电oj HDOJ 1018 Big Number 题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=1018 Problem Description In ...

  8. 《算法竞赛进阶指南》打卡-基本算法-AcWing 94. 递归实现排列型枚举:dfs、二进制状态压缩

    文章目录 题目解答 题目来源 题目解答 分析: dfs求全排列,这里是用二进制状态压缩进行优化,二进制状态压缩,顾名思义,每个状态是用二进制的某一位表示.这里的体现是state这个状态,它的每一位代表 ...

  9. CF1189B Number Circle(数字圈)

    You are given nn numbers a1,a2,-,ana1,a2,-,an. Is it possible to arrange them in a circle in such a ...

最新文章

  1. java_pandas_Joinery
  2. 同级选择器_基础选择器
  3. Linux网络编程 | 高性能定时器 :时间轮、时间堆
  4. winCE改变字库方法(WINCE字库更新)
  5. java 线程间通信 handler_Handler不同线程间的通信
  6. 场景模型驱动自动化测试在盒马的探索及实践
  7. UVa 808 (建坐标系、找规律) Bee Breeding
  8. 卧式储罐液位体积计算公式excel_2020晋中化工防腐储罐订做欢迎来电-环保设备...
  9. Intellij Idea 创建maven WebAPP项目
  10. MATLAB画图函数plot简单用法
  11. Echart 四象限图
  12. java 汉字转拼音缩写_用JAVA实现汉字转拼音缩写
  13. 【NLP学习笔记】Word Normalization and Stemming
  14. 《人类简史-从动物到上帝》读后感
  15. java 读取文件inputstream_使用Inputstream读取文件
  16. lol-----寒冰射手-----艾希
  17. FireFox浏览器的about:config
  18. 如何跨域调用微信图片
  19. Oracle版本升级后引出的catalog连接问题
  20. Apollo项目导航模式下的坐标转换研究

热门文章

  1. 简单实现x的n次方pta_Day12 :数值的整数次方
  2. 运筹优化(十二)--带约束非线性规划(NLP)
  3. 图像分割(三)--Grab Cut
  4. 新代数控系统编程说明书_数控加工中心编程快速入门教程
  5. android des ecb加密_Android逆向 | 基础知识篇 01
  6. http请求状态码表示的意义
  7. 双链表(线性表的链式存储)---C语言版
  8. 顺序表(线性表的顺序存储)---C语言版
  9. scala 偏函数及其用途
  10. 什么是服务的熔断降级