zoukankan      html  css  js  c++  java
  • hdu 2454 Degree Sequence of Graph G(可简单图化判定)

    传送门

    Havel-Hakimi定理:

    给定一个非负整数序列{d1,d2,...dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化。

    进一步,若图为简单图,则称此序列可简单图化。

    定理描述:

    由非负整数组成的有限非递增序列,S={d1,d2,d3...dn},当且仅当S1={d2-1,d3-1...d(d1+1),d(d1+2)......dn}也是可图的,

    也就是说,序列S1也是由非负整数组成的有限非递增序列,S1是由S的删除第一个元素d1之后的前d1个元素分别减一后得到的序列。

    实例:

    判断   4   4  3  3  2 是否可图化

    首先按非升序排列 4   4  3  3  2

    删除4,然后把前4大的数-1 变为:3 2 2 1

    然后删除3,把前3大的数-1 变为:1 1 0

    删除1,把前1大的数删除 变为:1 0

    删除1,把前1大的数删除 变为: 0

    所以是可图化的

    判断  5 4 5 2 3 1 是否可图化

    首先按非升序排列 5 5 4 3 2 1

    删除5,然后把前5大的数-1 变为:4 3 2 1 0

    然后删除4,把前4大的数-1 变为:   2 1 0 -1

    出现了负数,不可图化

    判断  9 4 5 2 3 1 是否可图化

    首先按非升序排列 9 5 4 3 2 1

    删除9,然后把前9大的数-1 ,但数不够前9大,

    也就是会出现负数

    不可图化

    •代码 

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 ll a[2005];
     5 int n;
     6 bool Slove()
     7 {
     8     for(int i=0;i<n;++i)
     9     {
    10         sort(a+i,a+n,greater<int>());//非增序排列
    11         if(a[i]==0)
    12             return true;
    13         if(i+a[i]>=n)               //不存在前a[i]大个数
    14             return false;
    15         for(int j=i+1;j<=i+a[i];++j)//前a[i]的数大-1
    16         {
    17             a[j]--;
    18             if(a[j] < 0)
    19                 return false;
    20         }
    21     }
    22 }
    23  
    24  
    25 int main()
    26 {
    27     int t;
    28     scanf("%d",&t);
    29     while(t--)
    30     {
    31         scanf("%d",&n);
    32         ll sum=0;
    33         for(int i=0;i<n;i++)
    34         {
    35             scanf("%lld",a+i);
    36             sum+=a[i];
    37         }
    38  
    39         if(sum%2)
    40         {
    41             puts("no");
    42             continue;
    43         }
    44  
    45         if(Slove())
    46             puts("yes");
    47         else
    48             puts("no");
    49     }
    50 }
    View Code
  • 相关阅读:
    【BZOJ】1045: [HAOI2008]糖果传递(中位数)
    【BZOJ】1011: [HNOI2008]遥远的行星(近似)
    【BZOJ】1034: [ZJOI2008]泡泡堂BNB(贪心)
    【BZOJ】1029: [JSOI2007]建筑抢修(贪心)
    【BZOJ】1022: [SHOI2008]小约翰的游戏John(博弈论)
    【BZOJ】1010: [HNOI2008]玩具装箱toy(dp+斜率优化)
    noip2014滚粗记
    【NOIP模拟题】Permutation(dp+高精度)
    MySQL 关于自定义函数的操作
    MySQL 关于存储过程的操作
  • 原文地址:https://www.cnblogs.com/MMMinoz/p/11311804.html
Copyright © 2011-2022 走看看