SW练习_P1233 木棍加工_变形LIS

本文探讨了如何利用dilworth定理解决木棍加工问题,重点在于理解下降子序列的最小划分与最长不下降子序列长度之间的关系。

从dilworth定理中,我们可知,下降子序列的最小划分等于最长不下降子序列的长度
主要是这个定理


package com.company.luogu;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class P1233 {
//从dilworth定理中,我们可知,下降子序列的最小划分等于最长不下降子序列的长度
    public static void main(String[] args) throws Exception{
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st=new StringTokenizer(reader.readLine());
        int N=Integer.parseInt(st.nextToken());//棍子的个数
        Node1233[] nodes=new Node1233[N];
        st=new StringTokenizer(reader.readLine());
        for (int i = 0; i <N ; i++) {
            nodes[i]=new Node1233(Integer.parseInt(st.nextToken()),Integer.parseInt(st.nextToken()));
        }
        Arrays.sort(nodes);
        int[] arrs=new int[nodes.length];
        for (int i = 0; i < nodes.length; i++) {
            arrs[i]=nodes[i].w;
        }
        System.out.println(LIS(arrs));
        reader.close();
    }
    public static int LIS(int[] arrs){
        //int[] len=new int[arrs.length];
        LinkedList<Integer> list=new LinkedList<Integer>();
        list.add(arrs[0]);
        for (int i = 1; i <arrs.length ; i++) {
            if(arrs[i]>list.getLast()){
                list.add(arrs[i]);
            }else{
                int index=searchList(list,arrs[i]);
                list.set(index,arrs[i]);
            }
            //len[i]=list.size();
        }
        return list.size();
    }
    private static int searchList(LinkedList<Integer> list, int a) {
        int low=0;
        int high=list.size()-1;
        while(low<=high){
            int mid=(low+high)/2;
            if(list.get(mid)==a){
                return mid;
            }else if(list.get(mid)>a){
                high=mid-1;
            }else{
                low=mid+1;
            }
        }
        return low;
    }
}
class Node1233 implements Comparable<Node1233>{
    int l;//长度
    int w;//宽度
    public Node1233(int l, int w) {
        this.l = l;
        this.w = w;
    }
    @Override
    public int compareTo(Node1233 o) {//按照从大到小排序
        if(this.l!=o.l){
            return o.l-this.l;
        }else{
            return o.w-this.w;
        }
    }
}

 

在SAP系统中,`2LIS_03_UM` 是一个标准的数据源(DataSource),属于物流信息系统(LIS)的一部分,专门用于收集和传输物料移动相关的数据[^1]。该数据源通常用于将物料移动信息从SAP R/3系统传输到SAP BW(Business Warehouse)环境中,以便进行进一步的分析和报表生成。 ### 数据来源与生成机制 1. **业务交易触发** `2LIS_03_UM` 数据源的生成与物料管理(MM)模块中的事务密切相关,特别是与物料移动相关的事务,例如货物收货(GR)、货物发运(GI)、库存转移等。每当这些事务在系统中执行时,SAP会自动生成相应的物料移动记录,并将这些数据写入底层的数据库表中。 2. **数据结构** 该数据源的结构与SAP标准结构 `MCMSEG` 相似,包含了物料移动的详细信息,如物料编号、移动类型、移动日期、数量、金额、库存地点、工厂等字段。这些信息是通过SAP预定义的提取结构(Extraction Structure)定义的。 3. **数据提取机制** 数据从R/3系统提取并传输到BW系统的过程依赖于以下几个关键步骤: - **维护提取结构**:确保 `2LIS_03_UM` 的提取结构已正确维护,通常基于 `MCMSEG` 结构定义。 - **初始化传输**:首次使用该数据源时,需要执行一次全量初始化操作,以获取历史物料移动数据。 - **增量更新**:在初始化完成后,系统每天通过增量抽取(Delta Extraction)机制获取新增的物料移动数据。增量数据通常基于V3更新进程或时间戳机制进行捕获[^2]。 4. **数据传输流程** 在SAP BW环境中,`2LIS_03_UM` 数据源通常被复制并激活为一个信息源(InfoSource),然后映射到目标数据目标(如DataStore对象或InfoCube)。数据传输流程包括: - 维护数据源与目标之间的转换规则(Transformation Rules)。 - 创建并执行数据传输流程(Data Transfer Process, DTP)。 - 使用InfoPackage进行初始化或增量加载。 ### 示例代码:查询与2LIS_03_UM相关的数据源配置 以下是一个ABAP代码示例,用于查询与 `2LIS_03_UM` 相关的提取结构和数据源配置: ```abap SELECT * FROM RSADMINA WHERE SRCNAME = '2LIS_03_UM'. ``` 此查询将返回有关该数据源的提取方式、更新方式等信息。 ### 数据处理流程总结 - 数据源 `2LIS_03_UM` 的生成依赖于物料移动事务的执行。 - 提取结构决定了数据的字段组成。 - 初始化和增量抽取机制确保了BW系统中的数据同步。 - 数据传输流程需在BW中进行配置,包括复制数据源、维护转换规则、创建数据传输流程等步骤[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值