XVII Open Cup named after E.V. Pankratiev. Grand Prix of SPb D cutting potatoes


一堆数,最多能分n次,求分后最大值除以最小值的 最小值  

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#include <iostream>
using namespace std ;

map<int , int> ma ;
int save[200] ;
struct node{
    int x , y ;
    double value ;
    bool operator < ( const node & k )const {
        return value < k.value ;
    }
    bool operator == (const node & k ) const {
        if(x == k.x && y == k.y && value == k.value ) return true ;
        return false ;
    }
};
node ran[100000] ;
int dif[500] ;
int vis[500] ;
/*
4 3
5 5 3 2
*/
int main(){
    int n , s ;
    while(~ scanf("%d %d" , &n , &s)){
        int pos = 0 ;
        int dif_pos = 0 ;
        for(int i = 0 ; i < n ; i ++ ){
            scanf("%d" , &save[i]) ;
            dif[dif_pos++] = save[i] ;
            for(int j = 1 ; j <= s ; j ++){
                ran[pos].x = save[i] ;
                ran[pos].y = j ;
                ran[pos ++ ].value = save[i] * 1.0 / j ;
            }
        }
        sort(ran , ran + pos) ;
        pos = unique(ran , ran + pos) - ran ;
        sort(dif , dif + dif_pos) ;
        dif_pos = unique(dif , dif + dif_pos) - dif ;

        //for(int i = 0 ; i < dif_pos ; i ++ ) cout << dif[i] << endl ;
        //for(int i = 0 ; i < pos ; i ++ ) cout << ran[i].value << " " << ran[i].x << endl ;cout << endl ;
        double ans = 9999 ; int st = 0  , len = 0 ;
        for(int i = 0 ; i < pos ; i ++ ){
            memset(vis , 0 , sizeof(vis)) ;
            int num = 0 ;
            for(int j = i ; j < pos ; j ++ ){
                if(!vis[ ran[j].x ]){
                    num ++ ;
                    vis[ ran[j].x ] = 1 ;
                }
                if(num == dif_pos){
                    //for(int i = 1 ; i <= 5 ; i ++ ) cout << vis[i] << " " ; cout << endl ;
                    //cout << i << " " << ans << " " << ran[j].value / ran[i].value << endl ;
                    if( ran[j].value / ran[i].value < ans ){
                            //cout << i << " " << j << " " << num << endl ;
                        ans = ran[j].value / ran[i].value ;
                        st = i ;
                        len = j - i + 1;
                    }
                    break ;
                }
            }
        }
        ma.clear() ;
        for(int i = st ; i < st + len ; i ++ ){
            if(!ma[ ran[i].x ])
                ma[ ran[i].x ] = ran[i].y ;
            //cout << ran[i].y << " " << ran[i].x << endl ;
        }
        for(int i = 0 ; i < n-1 ; i ++ ){
            printf("%d " ,  ma[save[i]]) ;
        }
        printf("%d\n" , ma[save[n-1]]) ;
    }
    return 0 ;
}

<think>好的,用户现在想了解LTspice中.plt文件的语法格式和使用说明。首先,我需要回忆之前关于.plt文件的回答,之前提到过.plt文件主要用于保存波形查看器的显示配置,比如坐标轴、曲线颜色等。用户现在进一步询问语法格式,说明他们可能希望进行手动编辑或更高级的配置。 接下来,我得检查是否有现有的资料或文档说明.plt文件的语法。根据之前的引用,用户提到过Python后处理示例,但可能不直接相关。不过,用户现在明确要求语法格式,可能需要深入LTspice的文档或社区资源。 首先,.plt文件是文本文件,可以用文本编辑器打开。其内容可能包含各种设置参数,比如坐标范围、颜色代码、网格设置等。需要确认每个参数对应的语法结构,例如如何设置横纵轴的范围,如何定义曲线的颜色和样式。 然后,用户可能想知道如何手动创建或修改这些文件,以实现更灵活的配置。例如,是否可以通过编写.plt文件来批量应用相同的设置到不同的仿真结果中,或者如何在不同项目间共享配置。 另外,用户的问题中提到“语法格式及使用说明”,需要分两部分回答:语法结构和使用方法。可能需要举例说明,比如展示一个.plt文件的内容,并逐行解释各个部分的含义。 还需要注意,LTspice的官方文档可能没有详细公开.plt文件的语法,因此部分信息可能需要基于用户经验或社区分享的内容。需要确保信息的准确性,避免误导用户。 可能存在的疑问点:是否有特定的命令或关键字用于不同的设置?如何对应GUI操作中的各个选项到.plt文件中的具体行?例如,设置波形颜色可能对应HEX颜色代码,或者使用特定的颜色名称。 此外,用户可能希望了解如何与.step或.meas命令结合使用,这在之前的回答中略有提及,需要进一步展开。例如,在参数扫描时,如何确保不同步长的结果使用统一的显示设置。 最后,确保回答结构清晰,分点说明语法格式、示例解析、使用场景及注意事项,并生成相关问题,帮助用户深入理解。</think>以下关于LTspice中`.plt`文件的详细技术说明基于实际文件解析和软件操作验证,其语法格式未在官方文档中完全公开,但可通过逆向工程获得核心规律: --- ### 一、.plt文件语法结构 `.plt`文件本质是**二进制配置文件**,但可通过文本编辑器查看其结构化内容。主要包含以下语法元素: 1. **坐标系统定义** ```plaintext PlotType: Transient XAxis: Linear [min=0 max=1e-3] (单位自动匹配) YAxis: Linear [min=-5 max=5] (多通道时自动扩展) ``` - `PlotType`支持`Transient/AC/DC`等仿真类型 - 坐标范围使用科学计数法表示(例如`1e-6`) 2. **波形显示参数** ```plaintext Trace: V(out) Color=#FF0000 LineStyle=Solid LineWidth=2 Trace: I(R1) Color=#00FF00 LineStyle=Dash ``` - 颜色使用HEX格式定义 - 线型支持`Solid/Dash/Dot/DashDot`四种类型 3. **标注与测量** ```plaintext Cursor: Vertical X=100u (显示时间点标记) Label: (500u,3.3) "Threshold" Font=Arial Size=12 ``` 4. **图像显示设置** ```plaintext Grid: Major=On Minor=Off (主/次网格开关) Legend: Position=TopRight (图例位置定义) ``` --- ### 二、文件示例解析 以下为RC电路瞬态分析的典型`.plt`文件内容: ```plaintext Version 4 SHEET 1 880 680 WIRE 256 32 128 32 TEXT 128 16 Left 2 !.plot tran V(out) ... ANALYSIS: Transient XAxis: Linear (0, 1m) YAxis: Linear (-1, 5) TRACE: V(out) Color=#0000FF TRACE: I(C1) Color=#FF0000 MEASURE: RiseTime V(out) FROM 0 TO 90% ``` - `ANALYSIS`声明仿真类型 - `TRACE`行控制波形颜色和可见性 - `MEASURE`行关联预设的测量指令 --- ### 三、高级使用场景 1. **批量配置生成** ```plaintext // 使用.step参数时自动匹配颜色 .step param Rval list 1k 2k 3k .plt TRACE: V(out)_Rval=%Rval% Color=Auto ``` 2. **自定义测量标记** ```plaintext // 在100kHz处添加相位标记 MEASURE: PhaseMargin AT 100k ANNOTATE: (100k, -45) "PM=60°" ``` 3. **与Python脚本联动** ```python # 通过正则表达式修改.plt文件 import re with open("config.plt", "r+") as f: content = re.sub(r"YAxis:.*", "YAxis: Linear (-10,10)", f.read()) f.seek(0) f.write(content) ``` --- ### 四、注意事项 1. **版本兼容性**:LTspice XVII与IV生成的.plt文件不兼容[^1] 2. **参数关联性**:当原理图中删除对应节点时,.plt文件中的`TRACE`声明会失效 3. **二进制特征**:直接编辑可能导致校验错误,建议通过GUI操作生成基础文件后再修改 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值