poj 2034 Anti-prime Sequences(dfs)
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)相关推荐
- poj 1321 棋盘问题(dfs)
题目:http://poj.org/problem?id=1321 没什么难度,比较水... View Code 1 #include <iostream> 2 #include<c ...
- POJ 3087 Shuffle'm Up DFS
link:http://poj.org/problem?id=3087 题意:给你两串字串(必定偶数长),按照扑克牌那样的洗法(每次从S2堆底中拿第一张,再从S1堆底拿一张放在上面),洗好后的一堆可以 ...
- POJ 2676/2918 数独(dfs)
思路:记录每行每列每一个宫已经出现的数字就可以.数据比較弱 另外POJ 3074 3076 必须用剪枝策略.但实现较麻烦,还是以后学了DLX再来做吧 //Accepted 160K 0MS #incl ...
- POJ - 2485(最小生成树.prime)
题目链接: http://poj.org/problem?id=2485 题目: Highways Time Limit: 1000MS Memory Limit: 65536K Total Su ...
- poj 1129 四色原理DFS
如题:http://poj.org/problem?id=1129 用中继器(repeater)给每个接受者(receiver)发送信号,为了防止信号干扰,两个相邻的广播站之间的中继器要不相同 ...
- POJ 3984 迷宫问题 BFS DFS两种解法
题目地址:点这里 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18495 Accepted: 10947 Descr ...
- POJ - 2763 Housewife Wind LCA+dfs序+线段树
q次询问求两个点之间的距离,并且可以随时修改某条边的长度,最短距离可以用lca来求,但是树上维护每一个点到root的距离必须要用dfs序来记录时间戳,在dfs的时候顺便记录每一条边(u,v)对应的v节 ...
- POJ 1321 棋盘问题【DFS】
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35493 Accepted: 17485 Descriptio ...
- POJ 1321 棋盘问题(DFS 状压DP)
用DFS写当然很简单了,8!的复杂度,16MS搞定. 在Discuss里看到有同学用状态压缩DP来写,就学习了一下,果然很精妙呀. 状态转移分两种,当前行不加棋子,和加棋子.dp[i][j]中,i代表 ...
最新文章
- 手把手教你搭建 ELK 实时日志分析平台
- php dir类,PHP基于dir类实现目录遍历删除
- 从零开始发布web项目(五)
- 【Android】Fragment的简单笔记
- redis 和 数据库mysql之间的关系
- LeetCode MySQL 1571. 仓库经理
- 关于mono的编译与安装
- 高并发面试 - 如何设计一个高并发系统?
- python列表定义和操作_Python 列表的定义及操作
- 【3】测试用例设计-因果图
- mysql 61_MySQL 连接错误Can't connect to MySQL server on (61)
- CNN文本分类原理讲解与实战
- 寻找协调器FindCoordinatorRequest请求流程
- 电脑自带的应用商店连接不到服务器,win10应用商店无法连接服务器最佳解决方法...
- 淘宝商家再也看不到客户手机号了
- python获取大小写字母、数字,各种字符
- 高端投影仪有哪些品牌,当贝X3激光投影仪市占比达53.7%
- 【人工智能项目】缺陷检测分割数据集相关整理分享
- 刷题:力扣-LCS 01. 下载插件
- 对接阿里云opensearch
热门文章
- android-技术教程-调试程序的基础,在控制台上打印出想打印的东西 转载
- 点云数据的类型主要分为_点云学习在自动驾驶中的研究概述
- frps 多个_frp端口批量穿透教程
- python递归合并排序_python 归并排序的递归法与迭代法(利用队列)实现,以及性能测试...
- iphone导出照片到电脑_如何更改 iPhone 照片格式?
- 21.Ubuntu安装软件时出现无法获得锁 /var/lib/dpkg/lock-frontend的问题解决
- 13、GridView案例
- 9.QML Qt Quick Controls 2中常用的界面形式——并排式界面(SwipeView)
- WaitForMultipleObjects用法详解
- python实现摄像头拍照_使用Python控制摄像头拍照并发邮件