zoukankan      html  css  js  c++  java
  • bzoj1006

    貌似是最大势     见cdq论文《弦图与区间图》

    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <queue>
    #include <vector>
    using namespace std;
    const int maxn=10000+10;
    const int maxm=2000000+10;
    struct hh
    {
      int v,next;
    }e[maxm];
    int n,m,point,ans;
    int del[maxn],head[maxn],pt[maxn],kd[maxn];
    template <class T> void read(T&x)
    {
      x=0;char c=getchar();int f=0;
      while(c<'0'||c>'9'){f|=(c=='-');c=getchar();}
      while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^=48),c=getchar();
      x=f?-x:x;
    }
    void add(int u,int v)
    {
      e[++point].v=v;e[point].next=head[u];head[u]=point;
      e[++point].v=u;e[point].next=head[v];head[v]=point;
    }
    int main()
    {
      memset(head,-1,sizeof(head));
      read(n);read(m);
      int u,v;
      for(register int i=1;i<=m;i++)
      {
        read(u);read(v);
        add(u,v);
      }
      for(register int i=n;i;i--)
      {
        int k=0;
        for(int j=1;j<=n;j++)if(pt[j]>=pt[k]&&!del[j])k=j;
        del[k]=1;
        for(int j=head[k];j!=-1;j=e[j].next)if(!del[e[j].v])pt[e[j].v]++;
      }
      for(int i=n;i>0;i--)if(!kd[pt[i]]){ans++;kd[pt[i]]=1;}
      printf("%d",ans);
      return 0;
    } 
    View Code
    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <queue>
    #include <vector>
    using namespace std;
    const int maxn=10000+10;
    const int maxm=2000000+10;
    struct hh
    {
      int v,next;
    }e[maxm];
    int n,m,point,ans;
    int del[maxn],head[maxn],pt[maxn],kd[maxn];
    template <class T> void read(T&x)
    {
      x=0;char c=getchar();int f=0;
      while(c<'0'||c>'9'){f|=(c=='-');c=getchar();}
      while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^=48),c=getchar();
      x=f?-x:x;
    }
    void add(int u,int v)
    {
      e[++point].v=v;e[point].next=head[u];head[u]=point;
      e[++point].v=u;e[point].next=head[v];head[v]=point;
    }
    int main()
    {
      memset(head,-1,sizeof(head));
      read(n);read(m);
      int u,v;
      for(register int i=1;i<=m;i++)
      {
        read(u);read(v);
        add(u,v);
      }
      for(register int i=n;i;i--)
      {
        int k=0;
        for(int j=1;j<=n;j++)if(pt[j]>=pt[k]&&!del[j])k=j;
        del[k]=1;
        for(int j=head[k];j!=-1;j=e[j].next)if(!del[e[j].v])pt[e[j].v]++;
      }
      for(int i=n;i>0;i--)if(!kd[pt[i]]){ans++;kd[pt[i]]=1;}
      printf("%d",ans);
      return 0;
    } 
    View Code
  • 相关阅读:
    ES6(二)
    ES6
    bootstrap
    数组对象
    bootstrap
    html5(二)
    css3转换、动画、布局
    整理的一些兼容写法
    css渐变、背景、过渡、分页
    css3(一)
  • 原文地址:https://www.cnblogs.com/new-hand/p/7745462.html
Copyright © 2011-2022 走看看