zoukankan      html  css  js  c++  java
  • 处女座的期末复习-贪心

    链接:https://ac.nowcoder.com/acm/contest/327/J
    来源:牛客网

    快要期末考试了,处女座现在有n门课程需要考试,每一门课程需要花ai小时进行复习,考试的起始时间为bi,处女座为了考试可以不吃饭不睡觉,处女座想知道他能否复习完所有的科目(即在每一门考试之前复习完该科目)。每一门课的考试时间都为两小时。

    输入描述:

    第一行一个整数n

    第二行n个整数a1,a2,…,an,表示每门课需要复习的时间

    第三行n个整数b1,b2,…,bn,表示每门课考试的时间

    1<=n<=105

    0<=ai<=109
    0<=bi<=109

    输出描述:

    如果处女座能复习完,输出”YES”,否则输出”NO”
    示例1

    输入

    3
    0 1 1
    2 6 4

    输出

    YES
    

    说明

    在0-1小时复习第2门课,
    在1-2小时复习第3门课,
    在2-4小时考第1门课,
    在4-6小时考第3门课,
    在6-8小时考第2门课

    备注:

    考试时不能复习,保证考试时间不会重叠。

    复习可以拆开,只要复习时间够了即可。
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<math.h>
    #include<set>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
     
    /*
    复习完所有科目,
    考试前复习,
    先考的先复习(贪心),
    每次考2小时,
    可以分开复习,
    把空余时间累加,看看考前够不够时间
    */
     
    struct f
    {
        int ft;
        int idx;
    };
    f a[100005];
     
    struct k
    {
        int kt;
        int idx;
    };
    k b[100005];
     
    bool cmp(k x,k y)
    {
        return x.kt<y.kt;
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=0;i<n;i++)
                {scanf("%d",&a[i].ft); a[i].idx=i;}
            for(int i=0;i<n;i++)
                {scanf("%d",&b[i].kt); b[i].idx=i;}
            sort(b,b+n,cmp);
            int i;//先考的科目
            int r=b[0].kt-0;//该科考试前空余的复习时间段
            //从某科考试前空余的时间抽出来复习
            for(i=0;i<n;i++)
            {
                int num=b[i].idx;//考试科目
                if(r<a[num].ft)//该科目复习时间不够,gg
                    {printf("NO
    ");break;}
                else
                    r=r-a[num].ft;//否则扣去空余时间
                if( i != (n-1) )
                r=r+( b[i+1].kt-b[i].kt-2 );//加上两场考试之间的空余时间
            }
            if(i==n)
                printf("YES
    ");
        }
        return 0;
    }
  • 相关阅读:
    在浏览器地址栏输入url的后的过程
    webpack的理解
    Vuex总结
    vue 中引用better-scroller实现横向轮播
    vue中类似于jq中的ele.addClass('class').siblings().removeClass('class')效果
    vue中星级判断函数
    ---redux---
    ---react-redux----
    ----flux----
    React组件
  • 原文地址:https://www.cnblogs.com/shoulinniao/p/10322409.html
Copyright © 2011-2022 走看看