#G. 挤牛奶

博客围绕算法题目展开,介绍了解题思路,包含深度优先搜索(DFS)的写法以及动态规划(DP)的写法,体现了不同算法在解题中的应用。

题目


思路

1.dfs写法:

int allsum; // 所有物品总和
// 目标:选出 n / 2 头奶牛,希望总产量不超过 allsum / 2 的情况下,最大是多少

int vis[110][110][1100];
// 现在选到第 now 头奶牛,已经选了 cnt 头,已选的奶牛总产量为 sum
void dfs(int now, int cnt, int sum){
    // 出口
    if (cnt == n / 2){
        ans = max(ans, sum);
        return;    
    }
    if (now > n){
        return;    
    }
    if (vis[now][cnt][sum]){
        return;    
    }
    vis[now][cnt][sum] = 1;
    // 能做的事情
    // 选或者不选
    if (sum + a[now] <= allsum / 2){
        dfs(now + 1, cnt + 1, sum + a[now]);
    }
    dfs(now + 1, cnt, sum);
}

    • dp写法

### 详解 在 **Allegro PCB Designer** 中进行布线是完成电路板设计的关键步骤,主要包括交互式布线、差分对布线、等长布线和自动布线等功能。以下是标准操作流程与技巧: --- #### 1. 布线前准备 - ✅ 完成元件布局(Placement) - ✅ 设置好 **Layer Stackup**(层堆叠) - ✅ 配置 **Design Rules**(电气与物理规则,如线宽、间距、差分布线等) - ✅ 检查网络连接性(Connectivity)是否完整 路径:`Setup > Constraints > Physical / Spacing` --- #### 2. 启动交互式布线 使用命令: ``` Route > Connect ``` 或快捷键 `X` 进入布线模式。 点击一个焊盘(Pin),软件会高亮显示飞线(Ratsnest),提示需连接的下一个目标点。 --- #### 3. 实时布线控制 - 📏 **动态长度显示**:布线时显示当前走线长度,便于控制等长。 - ⚙️ **Hug & Push**:智能避让已有走线与过孔,支持推挤布线。 - 🔁 **Smooth 功能**:自动优化走线拐角平滑度。 可通过右侧选项面板设置: - `Routing Style`:选择预设线宽与过孔组合 - `Rounding`:设置拐角角度(建议 $45^\circ$ 或圆弧) --- #### 4. 添加过孔(Via) - 在布线过程中按 `V` 可手动插入过孔切换层; - 确保 **Via Type** 已定义并在规则中允许使用; - 若提示 “No available via”,请检查层堆叠与规则限制。 --- #### 5. 差分对布线(Differential Pairs) 启用命令: ``` Route > Differential Pairs ``` - 需提前在约束管理器中定义差分网络; - 使用专用规则控制差分阻抗、线距(Gap)、耦合方式; - 支持 $90^\circ$ 弯曲补偿(Mitered Corner)。 --- #### 6. 等长布线(Length Tuning) 使用: ``` Route > Delay Tuning ``` - 调整走线长度以满足时序要求(如DDR信号); - 目标长度可在约束管理器中设定; - 支持蛇形走线(Meander)自动生成。 --- #### 7. 自动布线(Auto Router) 可外接 **Allegro Auto Router** 或导入第三方工具(如 SPECCTRA): - 设置好约束后运行全局布线; - 推荐仅用于非关键信号; - 关键信号仍建议手动布线。 --- #### 8. 布线完成后的检查 - 运行 **DRC(Design Rule Check)** - 执行 **Unconnected Pin Check** 确保无悬空网络 - 查看 **Electrical Rules Report** --- ### 知识点 - **交互式布线机制**:通过实时反馈引导用户完成精确走线,支持推挤、绕行与自动避让功能。 - **约束驱动布线(Constraint-Driven Routing)**:布线行为受预先设定的物理与电气规则控制,确保信号完整性。 - **差分对与时延匹配**:用于高速信号传输,需保持等长、等距与恒定阻抗,防止信号失真。
10-25
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值