【PAT】1006 Sign In and Sign Out (25 分)——比较大小

这篇博客探讨了两种解决找出最小和最大时间的方法。第一种方法是按顺序逐个比较小时、分钟和秒,而第二种方法则是将时间转换为秒数进行比较。两者的实现分别展示了不同的思路,对于效率和简洁性的权衡。
//我的解法:非常直接,按顺序比较时,分,秒

#include <iostream>
#include <string>
using namespace std;


int main(){
  int M;
  scanf("%d",&M);

  string name;
  int a,b,c;
  string min_name,max_name;
  int min_a=24,min_b=61,min_c=61;
  int max_a=-1,max_b=-1,max_c=-1;
  for(int i=0;i<M;i++){
    cin>>name;

    scanf("%d:%d:%d",&a,&b,&c);
    if(a<min_a){
      min_a=a;min_b=b;min_c=c;
      min_name=name;
    }else if(a==min_a){
      if(b<min_b){
        min_b=b;min_c=c;
        min_name=name;
      }else if(b==min_b){
        if(c<min_c){
          min_c=c;
          min_name=name;
        }
      }
    }
    
    scanf("%d:%d:%d",&a,&b,&c);
    if(a>max_a){
      max_a=a;max_b=b;max_c=c;
      max_name=name;
    }else if(a==max_a){
      if(b>max_b){
        max_b=b;max_c=c;
        max_name=name;
      }else if(b==max_b){
        if(c>max_c){
          max_c=c;
          max_name=name;
        }
      }
    }
  }

  cout<<min_name<<" "<<max_name;

  return 0;
}
//柳姐解法:时间都转换成秒数
#include <iostream>
#include <climits>
using namespace std;
int main() {
  int n, minn = INT_MAX, maxn = INT_MIN;
  scanf("%d", &n);
  string unlocked, locked;
  for(int i = 0; i < n; i++) {
    string t;
    cin >> t;
    int h1, m1, s1, h2, m2, s2;
    scanf("%d:%d:%d %d:%d:%d", &h1, &m1, &s1, &h2, &m2, &s2);
    int tempIn = h1 * 3600 + m1 * 60 + s1;
    int tempOut = h2 * 3600 + m2 * 60 + s2;
    if (tempIn < minn) {
      minn = tempIn;
      unlocked = t;
    }
    if (tempOut > maxn) {
      maxn = tempOut;
      locked = t;
    }
  }
  cout << unlocked << " " << locked;
  return 0;
}

【顶级EI完整复现】【DRCC】考虑N-1准则的布鲁棒机会约束低碳经济调度(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI完整复现】【DRCC】考虑N-1准则的布鲁棒机会约束低碳经济调度(Matlab代码实现)》的技术资源,聚焦于电力系统中低碳经济调度问题,结合N-1安全准则与布鲁棒机会约束(DRCC)方法,提升调度模型在不确定性环境下的鲁棒性和可行性。该资源提供了完整的Matlab代码实现,涵盖建模、优化求解及仿真析全过程,适用于复杂电力系统调度场景的科研复现与算法验证。文中还列举了大量相关领域的研究主题与代码资源,涉及智能优化算法、机器学习、电力系统管理、路径规划等多个方向,展示了广泛的科研应用支持能力。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事能源调度、智能电网相关工作的工程师。; 使用场景及目标:①复现高水平期刊(如EI/SCI)关于低碳经济调度的研究成果;②深入理解N-1安全约束与布鲁棒优化在电力调度中的建模方法;③开展含新能源接入的电力系统不确定性优化研究;④为科研项目、论文撰写或工程应用提供可运行的算法原型和技术支撑。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码与案例数据,按照目录顺序逐步学习,并重点理解DRCC建模思想与Matlab/YALMIP/CPLEX等工具的集成使用方式,同时可参考文中列出的同类研究方向拓展研究思路。
03-24
### 关于PAT 1006的内容解析 #### 题目概述 PAT 1006 是一个典型的编程问题,主要涉及数据处理和统计析。该题目通常会提供一组记录,并要求对这些记录进行特定的操作或计算[^3]。 #### 输入描述 输入文件中的每一组测试用例包含一天内的全部记录。每组测试用例以正整数 \(M\) 开始,表示总共有 \(M\) 条记录。随后的 \(M\) 行中,每行按照指定格式给出一条记录。 #### 解决方案思路 以下是针对此问题的一个通用解决方案: 1. **读取输入并存储数据** 使用标准输入方法接收数据,并将其存入适当的数据结构中以便后续操作。例如,在 C/C++ 中可以使用 `scanf` 或者流对象来完成这一过程;而在 Python 中则可以通过内置函数实现类似的逻辑。 2. **定义辅助功能模块** 创建必要的子程序或者类成员函数用于执行具体的业务逻辑运算,比如类汇总、条件筛选等操作。 3. **遍历所有条目实施算法流程** 对每一个项目逐一应用上述构建好的工具集来进行相应的变换与评估工作直至结束整个集合为止。 4. **输出最终结果** 将得到的结果按要求打印出来即可满足题目需求。 下面展示了一段基于C语言编写的简单示范代码片段供参考学习之用: ```c #include <stdio.h> #define MAX_RECORDS 1000 // 假设最大可能存在的记录数量不超过这个数值 struct Record { int id; char type[5]; }; void processRecords(int count, struct Record records[]) { /* 实现具体加工规则 */ } int main() { int m; scanf("%d", &m); if(m >=1 && m<=MAX_RECORDS){ struct Record recs[m]; for (int i = 0; i < m; ++i) { scanf("%d %s", &(recs[i].id), recs[i].type); } processRecords(m, recs); printf("Processed all records.\n"); }else{ printf("Invalid record count."); } } ``` 以上仅为简化版框架示意,实际开发过程中还需要考虑边界情况以及错误检测等方面因素才能确保提交版本完全符合评判系统的预期标准。 #### 测试案例注意事项 对于某些特殊场景下的表现也需要特别留意,例如当存在重复ID时如何处理?如果字段为空白字符串又该如何应对等问题都需要提前规划好策略再编码实践才行[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值