• POJ 2034 Antiprime Sequences (筛素数+DFS)


    题目链接http://poj.org/problem?id=2034 题目大意:输入m, n, d,求出m,m+1,m+2,````m+n的一个排列。使得任意的连续k个数之和都为合数,2<=k<=d。 思路:暴力DFS,依次枚举第一个数,第二个数····,第n-m+1个数即可.但是本人并不是很清楚为什么DFS不会超时……粗略看了一下觉得可能是当m-n远大于d时一定有解,所以不会出现无解遍历完的情况……  
    #include 
    #include 
    #include 
    using namespace std;
    int n, m, d;
    int a[1100];
    int sum[11];
    int noprime[11100];
    int vis[1110];
    bool okflag;
    void Prime(int n){
        for (int i = 2; i * i <= n; i ++){
            if (!noprime[i]){
                int p = i + i;
                while(p <= n){
                    noprime[p] = 1;
                    p += i;
                }
            }
        }
    }
    void dfs(int p){
        if (okflag == 1)
            return ;
        if (p > m - n + 1){
            for (int i = 1; i < p - 1; i ++){
                cout << a[i] << ",";
            }
            cout << a[p-1] <> n >> m >> d){
            if (n + m + d == 0){
                return 0;
            }
            memset(vis, 0, sizeof(vis));
            okflag = 0;
            dfs(1);
            if (okflag == 0){
                cout << "No anti-prime sequence exists." << endl;
            }
        }
        return 0;
    }
    
     
    举杯独醉,饮罢飞雪,茫然又一年岁。 ------AbandonZHANG
  • 相关阅读:
    织梦DEDEcms首页调用文档整篇内容
    dedecms专题列表页不显示标题的解决办法
    怎么让织梦文章按照权重排序
    Codeforces274B
    HDU5693
    HDU2476
    POJ3613
    「LibreOJ NOIP Round #1」旅游路线
    Educational Codeforces Round 48
    组合博弈学习笔记
  • 原文地址:https://www.cnblogs.com/AbandonZHANG/p/4114196.html
Copyright © 2020-2023  润新知