zoukankan      html  css  js  c++  java
  • CodeForces 580B(尺取法)

    Kefa and Company

    题意:Kefa这个人要去吃饭,他要邀请一些朋友一起去,他的每个朋友有两个属性金钱和关系度,要求邀请的人里边任意两个人之间的金钱差的绝对值不大于d;求被邀请的所有朋友的关系度的和的最大值。

    思路:将朋友按金钱从小到大排序,然后对关系度用尺取法求得最大值 ,这里要用前缀和来求区间内的关系度的和,不然会TLE。

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <queue>
    #include <vector>
    #include <algorithm>
    #define FRE() freopen("in.txt","r",stdin)
    #define INF 0x3f3f3f3f
    #define inf 1000000000000
    
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> P;
    const int maxn = 1e5+10;
    struct Fi
    {
        ll m,f;
    }fp[maxn];
    ll sum[maxn];
    bool cmd(Fi &a,Fi &b)
    {
        return a.m < b.m;
    }
    
    int main()
    {
        ll n,d;
        memset(sum,0,sizeof(sum));
        scanf("%lld%lld",&n,&d);
        for(int i = 1; i <= n; i++)
            scanf("%lld%lld",&fp[i].m,&fp[i].f);
    
        sort(fp+1, fp+n+1, cmd);
        for(int i = 1; i <= n; i++)
            sum[i] = sum[i-1] + fp[i].f;
    
        int l = 1,r = 1;
        ll ans = -1;
        while(r <= n && l <= n)
        {
            if(fp[r].m - fp[l].m < d)
            {
                ans = max(ans, sum[r] - sum[l-1]);
                r++;
            }
            else
                l++;
        }
        printf("%lld
    ",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    Navicat for SQLite之外键(05)
    UIButton
    多线程中的API
    UIImageView
    IOS中实现单例
    IOS中的多线程【二】— NSOperation和NSOperationQueue
    IOS中的多线程
    OC中新增的数据类型
    【转】c# DBF数据库导入导出实例
    【经验】学习新知识的经验
  • 原文地址:https://www.cnblogs.com/sykline/p/9737776.html
Copyright © 2011-2022 走看看