http://poj.org/problem?id=2034

大致题意:给出区间[n,m],对这个区间的数进行排列使得相邻的2个、3个......d个数之和都不是素数。输出字典序最小的。


思路:裸的dfs。

TLE了无数次是由于素数打表的范围太小,最大应打到10000。


#include <stdio.h>
#include <iostream>
#include <map>
#include <stack>
#include <vector>
#include <math.h>
#include <string.h>
#include <queue>
#include <string>
#include <stdlib.h>
#include <algorithm>
#define LL long long
#define _LL __int64
#define eps 1e-8
#define PI acos(-1.0)
using namespace std;const int maxn = 10010;bool prime[maxn];
int vis[1010],ans[1010];
int n,m,d;
int ok;void init()
{memset(prime,true,sizeof(prime));prime[0] = prime[1] = false;for(int i = 2; i <= 10000; i++){if(prime[i] == true){for(int j = i*i; j <= 10000; j += i)prime[j] = false;}}
}void dfs(int dep)
{if(ok == 1)return;if(dep == m-n+2){ok = 1;for(int i = 1; i < dep-1; i++)printf("%d,",ans[i]);printf("%d\n",ans[dep-1]);return;}for(int i = n; i <= m; i++){if(!vis[i]){bool flag = 0;for(int k = 2; k <= d && dep-k>=0; k++){int sum = 0;for(int j = dep-k+1; j <= dep-1; j++)sum += ans[j];if(prime[sum + i] == true)flag = 1;}if(flag == 1)continue;ans[dep] = i;vis[i] = 1;dfs(dep+1);vis[i] = 0;}}
}int main()
{init();while(~scanf("%d %d %d",&n,&m,&d)){if(n == 0 && m == 0 && d == 0) break;memset(vis,0,sizeof(vis));ok = 0;dfs(1);if(ok == 0)printf("No anti-prime sequence exists.\n");}return 0;}

转载于:https://www.cnblogs.com/gcczhongduan/p/5102352.html

poj 2034 Anti-prime Sequences(dfs)相关推荐

  1. poj 1321 棋盘问题(dfs)

    题目:http://poj.org/problem?id=1321 没什么难度,比较水... View Code 1 #include <iostream> 2 #include<c ...

  2. POJ 3087 Shuffle'm Up DFS

    link:http://poj.org/problem?id=3087 题意:给你两串字串(必定偶数长),按照扑克牌那样的洗法(每次从S2堆底中拿第一张,再从S1堆底拿一张放在上面),洗好后的一堆可以 ...

  3. POJ 2676/2918 数独(dfs)

    思路:记录每行每列每一个宫已经出现的数字就可以.数据比較弱 另外POJ 3074 3076 必须用剪枝策略.但实现较麻烦,还是以后学了DLX再来做吧 //Accepted 160K 0MS #incl ...

  4. POJ - 2485(最小生成树.prime)

    题目链接: http://poj.org/problem?id=2485 题目: Highways Time Limit: 1000MS   Memory Limit: 65536K Total Su ...

  5. poj 1129 四色原理DFS

    如题:http://poj.org/problem?id=1129     用中继器(repeater)给每个接受者(receiver)发送信号,为了防止信号干扰,两个相邻的广播站之间的中继器要不相同 ...

  6. POJ 3984 迷宫问题 BFS DFS两种解法

    题目地址:点这里 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18495 Accepted: 10947 Descr ...

  7. POJ - 2763 Housewife Wind LCA+dfs序+线段树

    q次询问求两个点之间的距离,并且可以随时修改某条边的长度,最短距离可以用lca来求,但是树上维护每一个点到root的距离必须要用dfs序来记录时间戳,在dfs的时候顺便记录每一条边(u,v)对应的v节 ...

  8. POJ 1321 棋盘问题【DFS】

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35493   Accepted: 17485 Descriptio ...

  9. POJ 1321 棋盘问题(DFS 状压DP)

    用DFS写当然很简单了,8!的复杂度,16MS搞定. 在Discuss里看到有同学用状态压缩DP来写,就学习了一下,果然很精妙呀. 状态转移分两种,当前行不加棋子,和加棋子.dp[i][j]中,i代表 ...

最新文章

  1. 手把手教你搭建 ELK 实时日志分析平台
  2. php dir类,PHP基于dir类实现目录遍历删除
  3. 从零开始发布web项目(五)
  4. 【Android】Fragment的简单笔记
  5. redis 和 数据库mysql之间的关系
  6. LeetCode MySQL 1571. 仓库经理
  7. 关于mono的编译与安装
  8. 高并发面试 - 如何设计一个高并发系统?
  9. python列表定义和操作_Python 列表的定义及操作
  10. 【3】测试用例设计-因果图
  11. mysql 61_MySQL 连接错误Can't connect to MySQL server on (61)
  12. CNN文本分类原理讲解与实战
  13. 寻找协调器FindCoordinatorRequest请求流程
  14. 电脑自带的应用商店连接不到服务器,win10应用商店无法连接服务器最佳解决方法...
  15. 淘宝商家再也看不到客户手机号了
  16. python获取大小写字母、数字,各种字符
  17. 高端投影仪有哪些品牌,当贝X3激光投影仪市占比达53.7%
  18. 【人工智能项目】缺陷检测分割数据集相关整理分享
  19. 刷题:力扣-LCS 01. 下载插件
  20. 对接阿里云opensearch

热门文章

  1. android-技术教程-调试程序的基础,在控制台上打印出想打印的东西 转载
  2. 点云数据的类型主要分为_点云学习在自动驾驶中的研究概述
  3. frps 多个_frp端口批量穿透教程
  4. python递归合并排序_python 归并排序的递归法与迭代法(利用队列)实现,以及性能测试...
  5. iphone导出照片到电脑_如何更改 iPhone 照片格式?
  6. 21.Ubuntu安装软件时出现无法获得锁 /var/lib/dpkg/lock-frontend的问题解决
  7. 13、GridView案例
  8. 9.QML Qt Quick Controls 2中常用的界面形式——并排式界面(SwipeView)
  9. WaitForMultipleObjects用法详解
  10. python实现摄像头拍照_使用Python控制摄像头拍照并发邮件