首页 > 其他分享 >POJ 1392 Ouroboros Snake

POJ 1392 Ouroboros Snake

时间:2023-08-08 10:12:40浏览次数:51  
标签:1392 POJ 那道题 include Ouroboros Snake

\(POJ\) \(1392\)-\(Ouroboros\) \(Snake\)

// 这道题和上面那道题几乎一样, 算是变形题把, 这道题要求构造的01字符串就是必须是字典序最小的,
// 在上面那道题的注意下建边的顺序即可. 因为是链式前向星法, 应该大边在前。

\(Code\)

#include <iostream>
#include <algorithm>
#include <queue>
#include <map>
#include <cstring>
#include <vector>
#include <stack>
#include <cstdio>

using namespace std;
const int N = 1 << 16, M = N;
int len;
int rl, res[N];
int st[N];

// 链式前向星
int e[M], h[N], idx, w[M], ne[M];
void add(int a, int b, int c = 0) {
    e[idx] = b, ne[idx] = h[a], w[idx] = c, h[a] = idx++;
}

void dfs(int u) {
    for (int i = h[u]; ~i; i = ne[i]) {
        int v = e[i];
        if (st[i]) continue;
        st[i] = 1;
        dfs(v);
        res[rl++] = w[i];
    }
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("POJ1392.in", "r", stdin);
#endif
    int n, k;
    while (scanf("%d%d", &n, &k), n + k) {
        idx = rl = 0;
        memset(h, -1, sizeof h);
        memset(st, 0, sizeof st);
        memset(res, 0, sizeof res);

        len = 1 << (n - 1);
        for (int a = 0; a < len; a++) {
            int num = a << 1 | 1;
            int b = num % len;
            add(a, b, num);

            num = a << 1;
            b = num % len;
            add(a, b, num);
        }
        dfs(0);
        // 输出这个序列生成的第K个数字是多少?
        printf("%d\n", res[rl - 1 - k]);
    }
    return 0;
}

标签:1392,POJ,那道题,include,Ouroboros,Snake
From: https://www.cnblogs.com/littlehb/p/17613418.html

相关文章

  • Spring Boot 文件夹用途 DAO、DTD、VIEW、POJO
    DAO文件夹:用于存放数据访问对象(DataAccessObject),这些类用于封装对数据库的访问和操作,提供了一种与底层数据存储交互的接口。DAO层负责处理数据的持久化和检索,将数据操作与业务逻辑解耦。DTO文件夹:用于存放数据传输对象(DataTransferObject),这些类用于在不同层之间传输数据......
  • POJ 2513 Colored Sticks
    \(POJ\)\(2513\)\(Colored\)\(Sticks\)一、题目描述一堆木棍左右两端涂有颜色,相同颜色的可以连接在一起,问所有木棍能否都连上二、解题代码#include<map>#include<queue>#include<stack>#include<string>#include<vector>#include<stdio.h>#include<std......
  • ## HDU7328 Snake
    HDU7328Snaketag:容斥,生成函数题目链接题意:1到n个数,分成m组,组队元素排列顺序不同则为不同的组,且每组元素个数不能超过k,问有多少种方案。容斥做法:暂且不管排列的事情,先把问题看成求n个球,m个盒子,盒子不能为空,且每个盒子中球数不能超过k。要保证每盒球数不超过k,我们可通过容......
  • POJ 1041 John's trip
    \(POJ\)\(1041\)\(John's\)\(trip\)一、题目大意多组数据,输入\(x,y,z\),表示结点\(x\)和结点\(y\)之间有一条序号为\(z\)的边,如果这个无向图中存在欧拉回路,就输出字典序最小的欧拉回路,如果不存在欧拉回路就输出Roundtripdoesnotexist.。当输入00表示一组数据输入结束......
  • POJ 3020 Antenna Placement
    \(POJ\)\(3020\)\(Antenna\)\(Placement\)一、题目描述*--代表城市,o--代表空地给城市安装无线网,一个无线网最多可以覆盖两座城市,问覆盖所有城市最少要用多少无线。公式:最小路径覆盖=总节点数-最大匹配数我们要尽可能多的建立能覆盖两个城市的基站(二分匹配最大匹配),剩下的......
  • H - Collecting Bugs POJ-2096
    H-CollectingBugsPOJ-2096期望dp题意根据题意可以将原题意转换成:有个\(n*s\)的矩阵,每次会随机选取一个格子填上颜色,问每行每列都填上颜色的期望次数。思路dp,显然是期望dp,那么设\(dp_{i,j}\)为已经有\(i\)行\(j\)列填上颜色,到目标还需的次数的期望,那么每次......
  • SolidUI社区-Snakemq 通信源码分析
    背景随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI是一个创新的项目,旨在将自然语言处理(NLP)与计算机图形学相结合,实现文生图功能。通过构建自研的文生图语言模型,SolidUI利用RLHF(Reinforcem......
  • POJ - Buy Tickets
    Smiling&Weeping----你看这个人,嘴里说着喜欢我却又让我这么难过DescriptionRailwayticketsweredifficulttobuyaroundtheLunarNewYearinChina,sowemustgetupearly......
  • POJ 1548 Robots
    \(POJ\)\(1548\)\(Robots\)题意相当于给出\(N\)个坐标点,因为机器人只能向下或者向右走,所以如果能到达其他点,则连接这两个点,即line[i][j]=1最小路径覆盖数:对于一个\(DAG\)(有向无环图),选取最少条路径,使得每个顶点属于且仅属于一条路径。路径长度可以为零;(有向图中找一些路径,使......
  • POJ1904 King's Quest
    \(POJ1904\)\(King's\)\(Quest\)一、题目描述有\(n\)个王子,每个王子都有\(k\)个喜欢的妹子,每个王子只能和喜欢的妹子结婚。现有一个匹配表,将每个王子都与一个自己喜欢的妹子配对。请你根据这个表得出每个王子可以和几个自己喜欢的妹子结婚,按序号升序输出妹子的编号,这个表应满......