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
  • 相关阅读:
    [HAOI 2007]上升序列
    转载:分布式与集群的区别究竟是什么?
    转载:5个顶级异步Python框架 https://geekflare.com/?s=python
    代码走读 airflow
    走读中学到的技巧 airflow
    sqlalchemy 相关
    pandas 筛选
    pandas IO
    服务端高并发分布式架构演进之路 转载,原文地址:https://segmentfault.com/a/1190000018626163
    pandas 6 时间
  • 原文地址:https://www.cnblogs.com/new-hand/p/7745462.html
Copyright © 2011-2022 走看看