COGS 2123. [HZOI 2015] Glass Beads

本文介绍了一种使用后缀自动机实现字符串最小表示法的方法。通过双倍重复输入字符串并利用后缀自动机进行处理,可以找到该字符串的最小表示形式。虽然这种方法不是最优解,但它为理解后缀自动机提供了一个实践案例。

最小表示法,这里用后缀自动机实现。
刚刚学了后缀自动机,懵逼中。
ps:纯属为了练习后缀自动机,字符串最小表示法的专门算法比这快很多。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=3001000;
char s[maxn*2];
int n;
struct sam
{
    int a[maxn][30],mx[maxn],fa[maxn],last,cnt;
    sam(){
        last=++cnt;
    }
    void insert(int c)
    {
        int p=last,np=last=++cnt;mx[np]=mx[p]+1;
        while(p&&!a[p][c]) a[p][c]=np,p=fa[p];
        if(!p) fa[np]=1;
        else
        {
            int q=a[p][c];
            if(mx[p]+1==mx[q]) fa[np]=q;
            else
            {
                int nq=++cnt;mx[nq]=mx[p]+1;
                memcpy(a[nq],a[q],sizeof(a[q]));
                fa[nq]=fa[q];
                fa[np]=fa[q]=nq;
                while(a[p][c]==q) a[p][c]=nq;p=fa[p];
            }
        }
    }
}SAM;
int main()
{
    freopen("MinRepresentations.in","r",stdin);
    freopen("MinRepresentations.out","w",stdout);
    scanf("%d%s",&n,s+1);
    for(int i=1;i<=n;i++) s[i+n]=s[i];
    for(int i=1;i<=2*n;i++) SAM.insert(s[i]-'a');
    for (int i=1,p=1;i<=n;i++)
    {
        for (int j=0;j<26;j++)
        if(SAM.a[p][j])
        {
            putchar('a'+j);
            p=SAM.a[p][j];
            break;
        }
    }
    puts("");
    return 0;
}
/*
10
qqqqaabaaa
*/
### SAP F.01 COGS 配置 使用指南 SAP 系统中的财务模块(FICO)提供了一种灵活的机制来配置和管理销售成本(COGS)。在 SAP 的标准配置中,F.01 是一个与 COGS 相关的重要字段,用于定义销售订单或交货单中 COGS 的计算方式。以下是关于如何在 SAP 中配置和使用 F.01 来处理 COGS 的详细信息: #### 1. COGS 的基本概念 销售成本(COGS)是指企业在生产和销售商品过程中发生的直接成本。在 SAP 系统中,COGS 的计算通常基于物料的成本核算方法[^1]。SAP 提供了多种存货计价方法,例如移动平均价(MAP)、标准价格(STD)、先进先出(FIFO)和后进先出(FILO),这些方法直接影响 COGS 的计算结果。 #### 2. F.01 字段的作用 F.01 是 SAP 系统中用于标识 COGS 的字段之一。它主要用于以下场景: - 在销售订单或交货单中触发 COGS 的过账。 - 定义 COGS 的来源,例如从物料主数据、成本中心或其他来源获取成本信息。 - 控制 COGS 的分配逻辑,确保成本能够正确地分配到相应的利润中心或成本对象[^2]。 #### 3. F.01 的配置步骤 以下是配置 F.01 字段以支持 COGS 计算的主要步骤: ##### (1)定义成本核算变式 在 SAP 中,需要通过事务码 `OB52` 配置成本核算变式(Costing Variant)。此变式决定了物料成本的计算方式。例如,可以选择基于标准价格的变式或基于实际成本的变式。 ```python # 示例代码:通过事务码 OB52 配置成本核算变式 def configure_costing_variant(variant_name): """ 配置成本核算变式 :param variant_name: 变式名称 """ print(f"正在配置成本核算变式: {variant_name}") ``` ##### (2)设置物料主数据 通过事务码 `MM01` 或 `MM02` 创建或修改物料主数据时,需要指定物料的成本核算变式。此外,还需要维护物料的价格控制字段(如 S 标准价格或 V 移动平均价)。 ##### (3)配置 COGS 过账规则 通过事务码 `OBYC` 配置 COGS 的过账规则。此步骤定义了 COGS 如何从库存账户转移到销售成本账户。具体配置包括: - 指定 COGS 的会计科目。 - 定义 COGS 的分配逻辑,例如是否按利润中心或成本中心分配。 ```python # 示例代码:通过事务码 OBYC 配置 COGS 过账规则 def configure_cogs_posting(account_code, distribution_logic): """ 配置 COGS 过账规则 :param account_code: 会计科目代码 :param distribution_logic: 分配逻辑 """ print(f"正在配置 COGS 过账规则: 科目={account_code}, 分配逻辑={distribution_logic}") ``` ##### (4)测试 COGS 的计算 完成配置后,可以通过事务码 `MB1B` 或 `VF01` 测试 COGS 的计算结果。验证 COGS 是否正确地从库存账户转移到销售成本账户。 #### 4. 注意事项 - 如果企业采用计划成本法,则需要定期结转成本差异,将计划成本调整为实际成本[^3]。 - 在期末处理时,确保所有未处理的差异已正确分摊到 COGS 中。 - 对于多账套环境(如法定账套和管理账套),需要确保 COGS 的计算逻辑在不同账套中保持一致。 #### 5. 示例代码 以下是一个简单的 Python 示例,展示如何通过 API 调用 SAP 系统以获取 COGS 数据: ```python # 示例代码:通过 SAP API 获取 COGS 数据 def fetch_cogs_data(material_number, plant_code): """ 获取指定物料的 COGS 数据 :param material_number: 物料编号 :param plant_code: 工厂代码 :return: COGS 数据 """ cogs_data = f"Material={material_number}, Plant={plant_code}, COGS=100.00" return cogs_data print(fetch_cogs_data("MAT123", "1000")) ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值