zoukankan      html  css  js  c++  java
  • BZOJ 1293 生日礼物

    某一年的四川省选。

    枚举每个彩珠,在它前面的所有种类的彩珠中寻找和它距离最大的(这一段距离一定囊括了所有彩珠)然后更新答案。

    为了方便,我们将彩珠排序并另外构成链表形式(也是倒序)。

    然而这么水的题ziliuziliu还是没有很好想出来。。不知道怎么回事。这道题其实蛮简单的啊。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define inf 0x7fffffff
    #define maxn 1000050
    #define maxv 65
    using namespace std;
    int cnt=0,num[maxn],next[maxn],head[maxv];
    int n,k,x,r,a[maxn],ans;
    int find(int x)
    {
    int tmp=0;
    for (int i=1;i<=k;i++)
    {
    while (num[head[i]]>a[x])
    {
    head[i]=next[head[i]];
    if (head[i]==0) return 0;
    }
    if (num[head[i]]<a[x])
    tmp=max(tmp,a[x]-num[head[i]]);
    }
    ans=min(ans,tmp);
    return 1;
    }
    int main()
    {
    ans=inf;
    memset(head,0,sizeof(head));
    memset(next,0,sizeof(next));
    scanf("%d%d",&n,&k);
    for (int i=1;i<=k;i++)
    {
    scanf("%d",&x);
    for (int j=1;j<=x;j++)
    {
    scanf("%d",&r);
    a[++cnt]=r;
    num[cnt]=r;
    next[cnt]=head[i];
    head[i]=cnt;
    }
    }
    sort(a+1,a+cnt+1);
    for (int i=cnt;i>=1;i--)
    {
    if (a[i]!=a[i+1])
    {
    int flag=find(i);
    if (flag==0) break;
    }
    }
    printf("%d ",ans);
    return 0;
    }

  • 相关阅读:
    C# 桥接模式(Bridge)
    C# 中介者模式(Mediator)
    C# 命令模式(Command)
    C# 模板方法(TempleteMethod)
    C# 装饰模式(Decorate)
    C# 策略模式(Strategy)
    C# 职责链模式(Chain of Responsibility)
    C# 外观模式(Facade)
    C# 单例模式(Single)
    C# 原型模式(Prototype)
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5225264.html
Copyright © 2011-2022 走看看