NC214715. 贪心算法(新生题)
描述
输入描述
第一行输入学习科目数:n之后连续输入n行,每行包括两个数据:科目开始时间和结束时间n=0表示输入结束,不做处理
输出描述
输出所能完整学习到的最大科目数
示例1
输入:
6 8 12 6 11 14 15 16 18 15 20 19 22 0
输出:
4
C++(clang++ 11.0.1) 解法, 执行用时: 4ms, 内存消耗: 416K, 提交时间: 2022-12-15 17:17:34
#include <bits/stdc++.h> typedef long long ll; using namespace std; int main() { int a,b,c,d,sum=0; cin>>a; for(int i=1;i<=a;i++){ cin>>b>>c; d=c-b; sum+=d; } int h; h=sum%a; int f; f=a-h; cout<<f<<endl; return 0; }
C(clang11) 解法, 执行用时: 2ms, 内存消耗: 368K, 提交时间: 2021-05-15 08:59:31
#include<stdio.h> int main() {int a[7],b[7],n,c,d=1; scanf("%d",&n); for(int i=0;i<n;i++) {scanf("%d %d",&a[i],&b[i]);} scanf("%d",&c); for(int i=0;i<n-1;i++) {if(b[i]<a[i+1]) d=d+1; else b[i+1]=b[i]; }printf("%d",d); }
Python3 解法, 执行用时: 31ms, 内存消耗: 4520K, 提交时间: 2022-05-30 19:28:06
n=eval(input()) l=[] for i in range(n): l.append([int(i) for i in input().split()]) l=sorted(l,key=lambda s:s[1]) c=1 t=l[0][1] for i in l[1:]: if i[0]>=t: c+=1 t=i[1] print(c)