zoukankan      html  css  js  c++  java
  • Luogu P3826 [NOI2017]蔬菜

    题意

    好繁琐啊,自己去看。

    题解

    这题好神啊,口胡都没口胡出来,还是看着 yyb 的题解写出来的。

    首先我不会费用流。

    众所周知这个蔬菜变质的问题很烦对吧,我们不如时间倒流一下,求出最后一天能卖多少钱,然后每一天给你进一些蔬菜再推出每一天的答案。

    考虑贪心。假设所有蔬菜不会变质,那么一定是卖那些贵的。所以说对于每一天来说贵的一定不会比便宜的卖的晚。

    有了这个结论之后,我们能从第 (p) 天的答案推到第 (p-1) 天的答案。因为第 (p) 天能卖的蔬菜第 (p-1) 天也能卖,具体来说就是把利润最小的 (m) 个蔬菜扔掉换成别的就好了。

    所以说,关于最后一天的处理,我们可以拿个堆把所有能卖的蔬菜维护一下,然后时间倒流来暴力模拟,每一天会加进来一些蔬菜,然后贪心取一下就好了。

    (p) 天推到 (p-1) 天也是可以用一个堆来维护的,维护方法也是差不太多的,只要注意一下第一次卖有额外的收益就好了。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    typedef int ll;
    typedef long long int li;
    const ll MAXN=2e5+51;
    ll test,n,kk,r,res;
    ll x[MAXN],f[MAXN],mx[MAXN];
    inline ll read()
    {
        register ll num=0,neg=1;
        register char ch=getchar();
        while(!isdigit(ch)&&ch!='-')
        {
            ch=getchar();
        }
        if(ch=='-')
        {
            neg=-1;
            ch=getchar();
        }
        while(isdigit(ch))
        {
            num=(num<<3)+(num<<1)+(ch-'0');
            ch=getchar();
        }
        return num*neg;
    }
    inline void solve()
    {
        n=read(),kk=read();
        for(register int i=1;i<=n;i++)
        {
            x[i]=read();
        }
        for(register int i=1;i<=n;i++)
        {
            read();
        }
        sort(x+1,x+n+1),r=1,res=0,f[n+1]=mx[n+1]=0;
        for(register int i=1;i<=n;i++)
        {
            while(r<n&&x[r+1]-x[i]<=kk)
            {
                r++;
            }
            f[i]=r-i+1;
        }
        for(register int i=n;i;i--)
        {
            mx[i]=max(mx[i+1],f[i]);
        }
        for(register int i=1;i<=n;i++)
        {
            res=max(res,f[i]+mx[i+f[i]]);
        }
        printf("%d
    ",res);
    }
    int main()
    {
        test=read();
        for(register int i=0;i<test;i++)
        {
            solve();
        }
    }
    
  • 相关阅读:
    fms服务器端呼叫客户端
    Linux C取整的方法
    fms客户端呼叫服务器端
    Tree Control DataProviders
    IE7下的css style display的兼容处理
    Maxthon,TheWorld,MyIE等多标签浏览器的Flash缓存问题
    Android深入浅出系列之实例应用—弹出消息Toast对象的使用纯文本方式(一)
    C#温故而知新学习系列之XML编程—Xml读取器XmlReader类(二)
    一步一个脚印学习WCF系列之WCF概要—生成元数据与代理(五)
    Eclipse 常用快捷键(转)
  • 原文地址:https://www.cnblogs.com/Karry5307/p/13736538.html
Copyright © 2011-2022 走看看