P1368 工艺

题目

P1368 工艺
你好水题

做法

备份一下原数组,然后插入,直接输出贪心每位最小的就好了

My complete code

再见水题

#include<map>
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
typedef int LL;
const LL maxn=1000000;
inline LL Read(){
    LL x(0),f(1);char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();
    return x*f;
}
LL n,nod=1,lst=1;
LL a[maxn];
struct SAM{
    LL fail,len;
    map<LL,LL> son;
}S[maxn];
inline void Insert(LL c){
    LL np=++nod,p=lst; lst=nod;
    S[np].len=S[p].len+1;
    while(p&&S[p].son[c]==0){
        S[p].son[c]=np;
        p=S[p].fail;
    }
    if(!p)
        S[np].fail=1;
    else{
        LL q=S[p].son[c];
        if(S[q].len==S[p].len+1)
            S[np].fail=q;
        else{
            LL nq=++nod; S[nq].len=S[p].len+1;
            S[nq].son=S[q].son;
            S[nq].fail=S[q].fail;
            S[q].fail=S[np].fail=nq;
            while(p&&S[p].son[c]==q){
                S[p].son[c]=nq;
                p=S[p].fail;
            }
        }
    }
}
int main(){
    n=Read();
    for(LL i=1;i<=n;++i)
        a[i]=Read();
    for(LL i=1;i<n;++i)
        a[i+n]=a[i];
    for(LL i=1;i<2*n;++i)
        Insert(a[i]);
    LL now(1);
    for(LL i=1;i<=n;++i){
        printf("%d ",S[now].son.begin()->first);
        now=S[now].son.begin()->second;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/y2823774827y/p/10317546.html

时间: 2024-11-02 01:38:07

P1368 工艺的相关文章

后缀自动机(SAM) 合集

先上模板 int len[maxn << 1],fa[maxn << 1],son[maxn << 1][maxc]; LL num[maxn << 1]; int size,last; void Init(){ size = last = 1; } void insert(char c){ int s = c - 'a'; int p = last,np = ++size;last = np; num[np] = 1; //主链结点出现次数 + 1 len

画册制作尺寸纸张工艺推荐

企业画册制作推荐尺寸A4(210mm*285mm) 纸张建议封面250g铜版纸/内页157g铜版纸 高档画册印后工艺推荐封面覆膜,24P(12页纸)以内可以骑马钉装订,24P以上建议用锁线胶装. 其他尺寸画册介绍: 方形画册尺寸210mm*210mm,A5尺寸画册140mm*210mm,特殊尺寸可以定制. 画册纸张选择: 纸张比较厚实的可以选择封面250g(覆膜)/内页200g或250g铜版纸,产品手册说明书纸张一般比较薄,可以选择封面157g/内页105g铜版纸,高档企业画册可选择特种纸做封面

新美坚分享真空包装袋成型工艺

小编不才,能为大家提供的关于真空包装袋成型工艺的详情只有以下几点,如果大家看了觉得您可以补充的欢迎联系我们,感谢您的参与. 真空袋与塑料袋的不同之处也在于它的密封性,所以,在真空袋的加工过程中,袋子的密封性是关系质量好坏的枢纽因素. 真空袋的制造过程并不像其它包装袋一样只有一种原料,真空袋的成型工艺是复合材料的加工成型过程,真空袋的质量非常优秀,操纵起来也非常简朴,而且产品的质量很不乱,不会产生漏气等质量题目.真空袋属于真空包装,在使用过程中要抽真空,这种使用状态需要包装袋有很强的隔氧性与非透气

洛谷P1368 均分纸牌(加强版)

P1368 均分纸牌(加强版) 题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,纸牌总数必为 N 的倍数.可以在任一堆上取1张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,能移到编号为 2和N 的堆上:在编号为 N 的堆上取的纸牌,能移到编号为 N-1和1 的堆上:其他堆上取的纸牌,可以移到相邻左边或右边的堆上. 现在要求找出一种移动方法,使每堆上纸牌数都一样多且牌的移动次数尽量少. 输入输出格式 输入格式: 第一行一个整数n 第二行为n个空格分开的正整数,为

BZOJ 2882: 工艺( 后缀自动机 )

把串S复制成SS然后扔进后缀自动机里, 从根选最小的儿子走, 走N步就是答案了...一开始还想写个treap的...后来觉得太麻烦..就用map了... --------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<map> using nam

4.10.4 生产控制模块的使用和设计-工艺路线

工艺路线(Routes),是生产任务从一个工序(Operation)到另一个工序的路径或序列,伴随着生产流程开始而开始,结束而结束.它是制造一个产品所必须的一组操作或任务的序列.操作路径描述了执行每个操作所必须的资源.每个路径都包含下面的: 要被执行的工序 工序的关系 工序的顺序 要完成工序,所要必须的资源 装配和运行生产所需要的标准时间 基于产品和流程,每个产品都能映射一个或多个路径.你可以创建一个完整的新路径,或基于现有的路径信息创建一个新路径,然后调整或更新信息,来匹配新的生产流程.相同的

Oracle EBS-SQL (BOM-14):检查工艺路线明细.sql

select msi.segment1                                         装配件编码,       msi.description                                        装配件描述,       bos.operation_seq_num                                    序号,       bso.operation_code                        

bzoj2882 工艺

2882: 工艺 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 488  Solved: 212 [Submit][Status][Discuss] Description 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边. 他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮. 两个工艺品美观的

收藏脚炉关键是看工艺

脚炉 □杜学峰 过去一入冬,不少人家就会把脚炉找出来,供家里的老人取暖.街坊中的老人,手提一只脚炉串门,或往膝盖上搭块毯子,把暖暖的脚炉放到毯子下面,坐着打盹的场景,是昔日最为常见的市井画面.这种脚炉,多是用铜铸造,且大都是历经几代人传下来的旧物,包浆俨然,乌光锃亮,造型丰富精美,制作工艺考究,如今也进入到了收藏市场,渐为玩家所关注. 脚炉和手炉一样,都是冬日取暖的用具.但是,两者的体形和工艺有很大区别,手炉的个头小,炉壁也薄,可以捧在手上或置于袖中取暖.脚炉的体量就要大得多,炉壁也更厚实,供人