zoukankan      html  css  js  c++  java
  • A. Coffee Break(思维题,类似于邻接表的head数组用法)

    题:https://codeforces.com/gym/101911/problem/A

    题意:每天工作m分钟,每次喝coffee得间隔d分钟,然后给出n个数,每个数表示想在一天中的a[i]的时刻喝coffe,问最少喝完的天数

    分析:先对数组升序排,若满足间隔的d就向前一个建立联系;

    #include<bits/stdc++.h>
    using namespace std;
    const int M=2e5+5;
    int ans[M],head[M];
    pair<int,int >a[M];
    int main(){
        int n,m,d;
        scanf("%d%d%d",&n,&m,&d);
        for(int i=0,x;i<n;i++)
            scanf("%d",&x),a[i].first=x,a[i].second=i;
        sort(a,a+n);
        int j=0;
        head[0]=-1;
        for(int i=1;i<n;i++){
            if(a[i].first-a[j].first>d)
                head[i]=j,j++;
            else
                head[i]=j-1;
        }
        int tot=0;
     
        for(int i=n-1;i>=0;i--){
            if(!ans[a[i].second]){
                tot++;
                for(j=head[i];~j;j=head[j])
                    ans[a[j].second]=tot;
                ans[a[i].second]=tot;
            }
        }
        printf("%d
    ",tot);
        for(int i=0;i<n;i++)
            printf("%d ",ans[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    获取父类参数类型工具类
    date工具类
    Ascii工具类
    AES加解密工具类
    请求ip获取工具类
    对象和map互相转换工具类
    HTTP中get、post请求工具类
    时间日期各种工具类
    算法练习题——两数相除
    ETag
  • 原文地址:https://www.cnblogs.com/starve/p/11656566.html
Copyright © 2011-2022 走看看