这道题直接暴力枚举复杂度为 n!*m

但是k<100 , 所以我们可以通过取模用dp[i][j] 表示k=i 时,-x取模k为j的最小值

 #include <cstdio>
#include <cstring>
#include <iostream> using namespace std; int vis[] , n , m , x , k , num[] , dp[][];
const int INF = ;
void dfs(int t , int state)
{
if(t >= n){
for(int i= ; i<=;i++)
if(dp[i][state%i] > state)
dp[i][state%i] = state;
return;
}
for(int i=;i<n;i++){
if(!vis[i]){
vis[i] = ;
dfs(t+ , state*+num[i]);
vis[i] = ;
}
}
} int main()
{
// freopen("a.in","rb",stdin);
//cout<<10*9*8*7*6*5*4*3*2*1<<endl;
while(scanf("%d%d",&n,&m) == ){
for(int i=;i<n;i++)
scanf("%d",num+i); memset(vis,,sizeof(vis)); for(int i=;i<=;i++)
for(int j=;j<=;j++) dp[i][j] = INF; for(int i=;i<n;i++){
if(num[i]){
vis[i] = ;
dfs(,num[i]);
vis[i] = ;
}
}
for(int i=;i<m;i++)
{
scanf("%d%d",&x,&k);
if(dp[k][(((-x)%k)+k)%k] < INF)
printf("%d\n",dp[k][(((-x)%k)+k)%k]); //state+x = b*k -> state%k = (-x)%k
else puts("None");
}
}
return ;
}

最新文章

  1. 微信小程序-视图视图引用
  2. Java的版本分类
  3. PHP内核研究(内存管理1)
  4. HttpClient4.5 SSL访问工具类
  5. DIV+CSS
  6. jq 文字上下不间断滚动实例
  7. Python成长笔记 - 基础篇 (四)函数
  8. 10GE---超长距离的万兆以太网
  9. HDU 4417 Super Mario(主席树求区间内的区间查询+离散化)
  10. Photoshop图层混合模式计算公式大全(转)
  11. poj1617---columnar encryption
  12. Ubuntu基本命令--apt, dpkg
  13. js原生之一个面向对象的应用
  14. Timer类的schedule和scheduleAtFixedRate 简单应用
  15. vs2017开发Node.js控制台程序
  16. 在非activity类调用startActivityForResult
  17. C#中的Cookie
  18. shell启动执行cypher语句
  19. Java 8 – Stream Collectors groupingBy count examples
  20. C++中memcpy和memmove

热门文章

  1. Retinex系列之McCann99 Retinex 分类: 图像处理 Matlab 2014-12-03 11:27 585人阅读 评论(0) 收藏
  2. C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]
  3. Statistics gathering and SQL Tuning Advisor
  4. 里氏替换原则中is和as分别的作用
  5. poj3662 Telephone Lines
  6. CF599B Spongebob and Joke
  7. Elasticsearch--集群&amp;时光之门和恢复控制
  8. 如何理解JavaScript的单线程
  9. 轻松搞定Spring+quartz的定时任务
  10. vultr服务器L2TP搭建