UESTC_握手 CDOJ 913

握手

Time Limit: 2000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

一群人参加了一次聚会,其中有一些人是好朋友。一对朋友见面后握手且仅握一次手,并且每个人不会和自己握手(废话!)。现在告诉你每个人一共握了几次手,请你判断是否存在一种朋友关系满足每个人的握手数。

Input

输入多组数据,第一行一个数T,表述数据组数。每组数据第一行输入一个数n,表示有n个人参加了聚会,下一行有n个数,di到dn ,di表示第i个人的握手数。 (1≤n≤105 ,输入的所有d之和不超过5×105)

Output

存在这种朋友关系输出YES,反之NO

Sample input and output

Sample Input Sample Output
3
3
0 1 1
3
2 2 2
3
1 1 1
YES
YES
NO

Source

2014 UESTC Training for Graph Theory

解题报告:

即判断是否可图利用Havel-Hakimi定理即可,具体可百度...

因为p的和不超过5 * 1e5 ,直接暴力模拟即可

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <set>
#include <vector>
using namespace std;
const int maxn = 1e5 + 50;
int d[maxn];
multiset<int,greater<int> >s;
vector<int>temp;

int main(int argc,char *argv[])
{
  int Case;
  scanf("%d",&Case);
  while(Case--)
   {
         int n;
         scanf("%d",&n);
         s.clear();
         for(int i = 1 ; i <= n ; ++ i)
          {
             int u;
          scanf("%d",&u);
          s.insert(u);
       }
      int ans = 1;
      for(int i = 1 ; i <= n ; ++ i)
       {
            set<int>::iterator it = s.begin();
            if (*it >= s.size() || *it < 0)
             {
                ans = 0;
             break;
          }
         int tot = *it;
         temp.clear();
         s.erase(it);
         while(tot)
          {
               it = s.begin();
               temp.push_back((*it)-1);
               tot--;
               s.erase(it);
          }
         for(int j = 0 ; j < temp.size() ; ++ j)
          s.insert(temp[j]);
       }
      if (ans)
       printf("YES\n");
      else
       printf("NO\n");
   }
  return 0;
}
时间: 2024-08-05 11:14:52

UESTC_握手 CDOJ 913的相关文章

UESTC_棋盘游戏 CDOJ 578

最近昀昀学习到了一种新的棋盘游戏,这是一个在一个N×N的格子棋盘上去搞M个棋子的游戏,游戏的规则有下列几条: 棋盘上有且仅有一个出口 开始时没有哪个棋子在出口,而且所有棋子都不相邻(这里的相邻是指上下左右四个方向) M个棋子分别记为1到M 每个时刻你可以移动一个棋子向它相邻的四个格子移动一步 你需要保证任意时刻棋盘上所有棋子都不相邻 只有当前棋盘上编号最小的棋子移动到出口时才能取走改棋子. 所有棋子都移走的时候游戏结束 对于一个给定的游戏局面,昀昀最少要多少步才能结束这个游戏呢? Input 第

UESTC_冰雪奇缘 CDOJ 843

艾莎女王又开始用冰雪魔法盖宫殿了. 她决定先造一堵墙,于是释放魔法让形为直角梯形的冰砖从天而降,定入冻土之中. 现在你将回答女王的询问:某段冻土上冰砖的面积. 注:多块冰砖之间会互相重叠,重叠部分要多次计算. Input 第一行一个整数n,表示有n个冰砖先后定入了冻土之中. 冻土上刚开始并没有冰砖. 接下来n行,每行6个整数,x1i,h1i,x2i,h2i,li,ri. 表示一次如图所示的冰砖下落,并询问在这之后,落在[li,ri]内冰砖的总面积. 2≤n≤100000,−108≤li<ri≤1

UESTC 913 握手 Havel定理+优先队列

给定一个非负整数序列{dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化.进一步,若图为简单图,则称此序列可简单图化. 此题因为是无自环无重边,所以是简单图.用判定简单图可图化的Havel-Hakimi定理. Havel-Hakimi定理: 一个度序列: 是简单图度序列当且仅当: 是简单图的度序列. 简单来讲,算法流程如下: 设度序列为d1,d2,d3....dn 1.如果度序列中元素有负数或者度序列和不为偶数,则肯定不可图. 2.每次取度序列中最大元素,设为M,如果M>

UESTC_方老师的分身 II CDOJ 915

方老师的分身 II Time Limit: 10000/5000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 方老师计算出了走路时间最长的那个分身所用的时间.于是有个特殊的分身(据说是方老师真身!)就不想如此古板的走最短路了!由于这个分身的特殊性,这个分身对于单向边可以当双向边走.但是这个特殊的分身想走最短路的同时,要求至少经过k条边. Input 有多组数据 第一行两个整数n,m(1≤n

UESTC_贪吃蛇 CDOJ 709

相信大家都玩过贪吃蛇游戏吧. 在n×m的迷宫中,有着一条长度不超过9的贪吃蛇,它已经将所有的食物吃光了,现在的目标是移动到出口. 它走的时候不能碰到自己的身体,也不能碰到墙壁.(如果贪吃蛇的长度>3并且下一步要走到自己的尾部,是合法的) 问它能不能走到出口,如果能,最少要移动几步? Input 数据包含多组数据,请读入到文件末尾EOF 每组数据第一行包含两个整数n,m(1≤n,m≤15)代表迷宫的大小. 接下来n行,每行包含一个长度为m的字符串,来表示迷宫. 字符串中仅包含..#.@.1 ~ 9

UESTC_敢说就敢做 CDOJ 631

敢说就敢做 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status beap总是自诩敢说又敢做,又到了情人节,为了体现自己的勇气可嘉,beap决定给自己喜欢的女生买玫瑰花,以此表达自己的爱意.到花店里,他发现一共有K种花,同时他从网上得知,送N朵花的花语是LOVE,所以他决定在所有的花里面选N朵出来送给心爱的女生,但是又为了显示自己买了那么多种花,他决定这K

UESTC_我要长高 CDOJ 594

韩父有N个儿子,分别是韩一,韩二…韩N.由于韩家演技功底深厚,加上他们间的密切配合,演出获得了巨大成功,票房甚至高达2000万.舟子是名很有威望的公知,可是他表面上两袖清风实则内心阴暗,看到韩家红红火火,嫉妒心遂起,便发微薄调侃韩二们站成一列时身高参差不齐.由于舟子的影响力,随口一句便会造成韩家的巨大损失,具体亏损是这样计算的,韩一,韩二…韩N站成一排,损失即为C×(韩i与韩i+1的高度差(1≤i<N))之和,搞不好连女儿都赔了.韩父苦苦思索,决定给韩子们内增高(注意韩子们变矮是不科学的只能增高

UESTC_魔法少女小蟹 CDOJ 710

小蟹是一名魔法少女,能熟练的施放很多魔法. 有一天魔法学院上课的时候出现了这样一道题,给一个6位数,让大家用自己的魔法,把这个6位数变成另一个给定的6位数. 小蟹翻了下魔法书,发现她有以下6种魔法: 将当前魔杖指向的数字与最左端的一个数字调换位置. 将当前魔杖指向的数字与最右端的一个数字调换位置. 将当前魔杖指向的数字+1.(若当前魔杖指向的数字为9则无效) 将当前魔杖指向的数字−1.(若当前魔杖指向的数字为0则无效) 将当前魔杖向右移动一位. 将当前魔杖向左移动一位. 最开始,她的魔杖指向的是

UESTC_方老师分身 I CDOJ 914

方老师分身 I Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 方老师为了开更多讲座,于是他分身了!早上他都在某一个教室分身,然后各个分身分别赶去各个不同的n个教室(当然每个教室都要有且只有一个分身).晚上各个分身都赶回之前分身时的教室,合并成一个人(不需要同时回去).但是教室间的路十分崎岖,而且是单向的.当然即便只是方老师的分身,那也是相当厉害的,