zoukankan      html  css  js  c++  java
  • E. 因数串

    题目链接:https://acm.ecnu.edu.cn/contest/292/problem/E/

    想法:

    我们直接考虑dfs搜索,dfs(now),从后往前(也可以从前往后)找第一个可以增加或减少的,那些不能动的就换方向,这个能的计算后就输出,dfs下一个数,然后break,这样构造就能保证每个输出的数他都是不同的

    每次搜索的时候注意换一下方向就可以了

    #include <algorithm>
    #include <string>
    #include <cstring>
    #include <vector>
    #include <map>
    #include <stack>
    #include <set>
    #include <queue>
    #include <cmath>
    #include <cstdio>
    #include <iomanip>
    #include <ctime>
    #include <bitset>
    #include <cmath>
    #include <sstream>
    #include <iostream>
    #include <unordered_map>
    
    #define ll long long
    #define ull unsigned long long
    #define ls nod<<1
    #define rs (nod<<1)+1
    #define pii pair<int,int>
    #define mp make_pair
    #define pb push_back
    #define INF 0x3f3f3f3f
    #define max(a, b) (a>b?a:b)
    #define min(a, b) (a<b?a:b)
    
    
    const double eps = 1e-8;
    const int maxn = 1e5 + 10;
    const ll MOD = 1e9 + 7;
    const int mlog=20;
    
    int sgn(double a) { return a < -eps ? -1 : a < eps ? 0 : 1; }
    
    using namespace std;
    
    const int N = 20,M = 70;
    ll f[N][M];
    int p[N],k[N],n;
    bool vis[N];
    void dfs(int id,ll x){
        if(id==n+1){
            printf("%lld
    ",x);
            return;
        }
        if(!vis[id]){
            for(int i=0;i<=k[id];i++)
                dfs(id+1,x*f[id][i]);
        }
        else {
            for(int i=k[id];i>=0;i--)
                dfs(id+1,x*f[id][i]);
        }
        vis[id]^=1;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d%d",&p[i],&k[i]);
            f[i][0]=1;
            for(int j=1;j<=k[i];j++)
                f[i][j]=f[i][j-1]*p[i];
        }
        dfs(1,1);
        return 0;
    }
  • 相关阅读:
    hdu 4614 线段树 二分
    cf 1066d 思维 二分
    lca 最大生成树 逆向思维 2018 徐州赛区网络预赛j
    rmq学习
    hdu 5692 dfs序 线段树
    dfs序介绍
    poj 3321 dfs序 树状数组 前向星
    cf 1060d 思维贪心
    【PAT甲级】1126 Eulerian Path (25分)
    【PAT甲级】1125 Chain the Ropes (25分)
  • 原文地址:https://www.cnblogs.com/-Ackerman/p/13365583.html
Copyright © 2011-2022 走看看