通用版2.Q

When playing DotA with god-like rivals and pig-like team members, you have to face an embarrassing situation: All your teammates are killed, and you have to fight 1vN. 

There are two key attributes for the heroes in the game, health point (HP) and damage per shot (DPS). Your hero has almost infinite HP, but only 1 DPS. 

To simplify the problem, we assume the game is turn-based, but not real-time. In each round, you can choose one enemy hero to attack, and his HP will decrease by 1. While at the same time, all the lived enemy heroes will attack you, and your HP will decrease by the sum of their DPS. If one hero's HP fall equal to (or below) zero, he will die after this round, and cannot attack you in the following rounds. 

Although your hero is undefeated, you want to choose best strategy to kill all the enemy heroes with minimum HP loss.
InputThe first line of each test case contains the number of enemy heroes N (1 <= N <= 20). Then N lines followed, each contains two integers DPSi and HPi, which are the DPS and HP for each hero. (1 <= DPSi, HPi <= 1000)OutputOutput one line for each test, indicates the minimum HP loss.Sample Input
1
10 2
2
100 1
1 100
Sample Output
20
201
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct node
{
    double dps,hp;
}s[30];
bool cmp(node a,node b)
{
    if((a.dps)/(a.hp)>(b.dps)/(b.hp))return true;
    return false;
}
int main()
{
    int n,i,att,ans;
    while(~scanf("%d",&n)){
        att=0;
        for(i=0;i<=n-1;i++){
            scanf("%lf%lf",&(s[i].dps),&s[i].hp);
            att+=s[i].dps;
        }
        sort(s,s+n,cmp);
        ans=0;
        for(i=0;i<=n-1;i++){
            ans+=att*(s[i].hp);
            att-=s[i].dps;
        }
        printf("%d\n",ans);
    }
    return 0;
}

先攻击dps/hp高的

<think>好的,用户之前已经询问了西门子PLC编程中实现闪烁的几种方法,现在他具体问到之前提到的定时器组合法的梯形图示例。用户给出的例子是Network 1中的T1和T2的配置,以及Q0.0的输出。我需要详细解释这个梯形图的具体结构和运行逻辑。 首先,我要确认用户是否理解梯形图的基本符号和元素,比如触点、线圈、定时器等。用户可能有一定的PLC基础,但可能对具体实现细节不太清楚。因此,我需要用简明的方式解释每个部分的作用,并结合时序图说明信号如何变化。 接下来,需要分步骤解析这个梯形图的结构。例如,T1的IN端连接的是NOT T2.Q,这意味着当T2的输出Q为0时,T1开始计时。当T1计时到2秒后,其Q点接通,触发T2开始计时1秒。T2计时结束后,其Q点会断开,导致T1重新开始计时,从而形成循环。Q0.0直接由T1的Q点控制,因此会以2秒开、1秒关的周期闪烁。 需要注意用户可能的疑问点,比如为什么T1的IN端使用NOT T2.Q,以及两个定时器如何交替工作。这时候需要用更通俗的语言解释,可能涉及自锁和互锁的概念,但需要避免过于专业的术语,保持解释的易懂性。 另外,用户可能想知道这个梯形图在不同PLC型号中的适用性,比如S7-200、S7-1200等。虽然示例是通用的,但不同型号的定时器指令可能略有不同,需要指出这一点,并建议用户根据具体型号调整。 还需要考虑用户可能的实际应用场景,比如控制指示灯的闪烁,或者设备的状态显示。可以举例说明在不同占空比需求下如何调整PT值,比如改变亮灭时间比例。 最后,总结这个方法的优缺点,并与其他方法(如时钟存储器)对比,帮助用户根据实际需求选择最合适的方案。如果用户有进一步的问题,比如如何实现更复杂的闪烁模式,可以简要提及其他方法,但主要聚焦在当前的问题上。 整个过程中,要保持回答的结构清晰,分步骤解释,配合示意图或时序图,帮助用户直观理解。同时,语言要口语化,避免过于技术化的表达,确保用户容易理解和应用。</think>以下是针对你提供的 **定时器组合法实现闪烁** 的 **具体梯形图逻辑** 及 **详细解析**,适用于西门子S7系列PLC(如S7-200/S7-1200等): --- ### **梯形图逻辑结构** ```ladder Network 1: |--------|/|-----------|TON|-----| | T2.Q | T1 | | | IN PT=2s | |--------| |----------------| | |----------------( Q0.0 ) // 输出信号 Network 2: |--------| |-----------|TON|-----| | T1.Q | T2 | | | IN PT=1s | |--------| |----------------| ``` --- ### **逐行解释** #### **Network 1**(控制T1定时器与输出Q0.0): 1. **条件输入**:`T2.Q` 的 **常闭触点**(`|/|` 符号) - 当 `T2.Q` 为 `0`(T2未计时完成)时,触点闭合,允许T1开始计时。 - 当 `T2.Q` 为 `1`(T2计时完成)时,触点断开,T1被复位。 2. **定时器T1**(TON指令): - **IN端**:由 `T2.Q` 的常闭触点控制。 - **PT值**:设为 `2秒`(即输出保持“亮”的时间)。 - **输出Q0.0**:直接绑定 `T1.Q`,即T1计时期间Q0.0输出为1(亮)。 #### **Network 2**(控制T2定时器): 1. **条件输入**:`T1.Q` 的 **常开触点**(`| |` 符号) - 当 `T1.Q` 为 `1`(T1计时完成)时,触点闭合,触发T2开始计时。 2. **定时器T2**(TON指令): - **IN端**:由 `T1.Q` 的常开触点控制。 - **PT值**:设为 `1秒`(即输出保持“灭”的时间)。 - **T2.Q作用**:计时完成后,T2.Q=1,通过Network 1的常闭触点复位T1,进入下一循环。 --- ### **运行逻辑时序** 1. **初始状态**: - T1未计时,`T1.Q=0` → Q0.0=0(灭)。 - T2未计时,`T2.Q=0` → T1的IN端导通,T1开始计时。 2. **T1计时阶段**(0~2秒): - T1计时中,`T1.Q=1` → Q0.0=1(亮)。 - T1.Q触发T2开始计时(Network 2)。 3. **T2计时阶段**(2~3秒): - T2计时中,`T2.Q=1` → T1的IN端断开(Network 1),T1被复位,`T1.Q=0` → Q0.0=0(灭)。 - T2计时完成后,`T2.Q=0` → T1重新开始计时,循环继续。 --- ### **时序图** ``` 时间轴 : 0----1----2----3----4----5 Q0.0状态: ___¯¯¯¯¯¯¯¯¯___¯¯¯¯¯¯¯¯¯___ 亮 灭 亮 灭 亮 |--2s--|--1s--|--2s--|--1s--| ``` --- ### **关键点总结** 1. **互锁逻辑**: - T1和T2通过彼此的触点形成互锁,交替启动和复位。 - T1控制“亮”的时间(2秒),T2控制“灭”的时间(1秒)。 2. **占空比调整**: - 修改 `T1.PT` 和 `T2.PT` 可自定义闪烁周期和占空比(例如:T1.PT=1s、T2.PT=1s → 1Hz方波)。 3. **扩展应用**: - 若需启停控制,可串联一个总开关(如M0.0)到Network 1的起始端。 --- ### **实际应用示例(启停控制)** ```ladder Network 1: |--------| |--------|/|-----------|TON|-----| | M0.0 | T2.Q | T1 | | | | IN PT=2s | |--------| |--------| |----------------| | |----------------( Q0.0 ) ``` - **M0.0=1**时启动闪烁,**M0.0=0**时停止。 如果有具体PLC型号或更复杂需求,可以进一步优化代码!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值