Luogu传送门(UVA常年上不去)

题意:求一个度序列是否可变换为一个简单图。$\text{序列长度} \leq 10000$


题目看起来很简单,但是还是有一些小细节需要注意
首先一个简单的结论:一张图的所有点的度数之和为偶数,因为每一条边都会对度数和产生$2$的贡献。通过这一个结论可以判断掉很多的非法情况。
当然如果做到这里就天真地交上去了,在若干秒之后就会给你显示一个喜庆的$WA$,因为我们还有一个很重要的因素没有考虑:图是一个简单图。简单图意味着不能有重边和自环,而上面的那个结论不足以判断图中是否必定存在重边和自环。
我们按照如下的思路考虑:因为度数比较大的点最有可能出现重边和自环,所以我们考虑这些点尽可能地向其他的点连边后会不会有度数的剩余。
将给出的序列$a$从大到小排序,设其非$0$元素长度为$p$,考虑一个长度为$i$的前缀,这$i$个点之间连边产生$i \times (i - 1)$的贡献,而这$i$个点与其余$(p-i)$个点连边又产生$i \times(p-i)$的贡献,也就是说如果$\sum \limits _{k=1} ^i a_k > i \times (p-1)$,则这个序列是不可图的
然后又激动地交了上去,然后又$WA$了,然后去$Udebug$上找数据,发现了这样一组数据:

        

事实上这一组数据是非法的,因为对于$6$和$7$来说,至少要连出$11$条边,但是实际上最多只能连出$10$条边(有两个$1$),所以上面的算法有疏漏。疏漏在哪里呢?是$\sum \limits _{k=1} ^i a_k > i \times (p-1)$的右半边多算了(比如说上面数据在$i=2$时的两个$1$的贡献就多算了)

所以我们考虑:维护一个指针,将比当前的$i$小的数全部丢到一边,单独维护它们的和,再加上没有被丢掉的点的个数$\times i$,与$\sum \limits _{k=1} ^i a_k$作比较,如果大了表示当前序列不合法。这种算法就可以$AC$这道题了。
为什么这个题目写了这么长的题解qwq

 #include<bits/stdc++.h>
using namespace std; inline int read(){
int a = ;
char c = getchar();
bool f = ;
while(!isdigit(c)){
if(c == '-')
f = ;
c = getchar();
}
while(isdigit(c)){
a = (a << ) + (a << ) + (c ^ '');
c = getchar();
}
return f ? -a : a;
} int num[]; bool cmp(int a , int b){
return a > b;
} int main(){
#ifndef ONLINE_JUDGE
freopen("10720.in" , "r" , stdin);
freopen("10720.out" , "w" , stdout);
#endif
int N;
while(N = read()){
bool f = ;
for(int i = ; i <= N ; ++i){
num[i] = read();
if(num[i] & )
f ^= ;
}
sort(num + , num + N + , cmp);
int sum = , p = N , lst , add = ;
while(p && !num[p])
--p;
lst = p;
for(int i = ; !f && i <= lst ; ++i){
sum += num[i];
if(sum - i * (i - ) - i * (p - i) - add > )
f = ;
while(p > i && num[p] == i)
add += num[p--];
if(p == i)
add -= num[++p];
}
puts(f ? "Not possible" : "Possible");
}
return ;
}

UVA10720 Graph Construction 度序列可图性的更多相关文章

  1. HDU 2454"Degree Sequence of Graph G"(度序列可图性判断)

    传送门 参考资料: [1]:图论-度序列可图性判断(Havel-Hakimi定理) •题意 给你 n 个非负整数列,判断这个序列是否为可简单图化的: •知识支持 握手定理:在任何无向图中,所有顶点的度 ...

  2. poj 1659 Frogs&#39; Neighborhood 度序列可图化 贪心

    题意: 对一个无向图给出一个度序列,问他是否可简单图化. 分析: 依据Havel定理,直接贪心就可以. 代码: //poj 1659 //sep9 #include <iostream> ...

  3. UVA 10720 Graph Construction 贪心+优先队列

    题目链接: 题目 Graph Construction Time limit: 3.000 seconds 问题描述 Graph is a collection of edges E and vert ...

  4. poj 1659 Frogs&#39; Neighborhood (度序列)

    Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 7295   Accepted: 31 ...

  5. 可图性判定--Havel-Hakimi定理

    两个概念 1.度序列 若把图G所有顶点的度数排成一个序列S,则称S为图G的度序列. 2.序列是可图的 一个非负整数组成的序列如果是某个无向图的度序列,则称该序列是可图的. Havel-Hakimi定理 ...

  6. UVa 10720 - Graph Construction(Havel-Hakimi定理)

    题目链接: 传送门 Graph Construction Time Limit: 3000MS     Memory Limit: 65536K Description Graph is a coll ...

  7. windowmasker 标记基因组中的重复序列和低复杂度序列

    下载地址:ftp://ftp.ncbi.nlm.nih.gov/pub/agarwala/windowmasker/ 在这个目录下 其中windowmasker 为linux 平台的可执行文件 win ...

  8. 从零开始学Graph Database:什么是图

    摘要:本文从零开始引导与大家一起学习图知识.希望大家可以通过本教程学习如何使用图数据库与图计算引擎.本篇将以华为云图引擎服务来辅助大家学习如何使用图数据库与图计算引擎. 本文分享自华为云社区<从 ...

  9. UVa 10720 - Graph Construction

    题目大意:给n个整数, 分别代表图中n个顶点的度,判断是否能构成一张图. 看到这个题后,除了所有数之和应该为偶数之外,没有别的想法了,只好在网上搜解题报告了.然后了解了Havel-Hakimi定理.之 ...

随机推荐

  1. 【读书笔记】iOS-设计简单的Frenzic式益智游戏

    如果你决定用UIView动画或Core Animation,一定要编写一些测试用例,模拟游戏可能遇到的要求最高的动画,另外不要忘记播放声音.不要等到最后才增加声音,因为在iPhone上播放音乐和音效确 ...

  2. selenium 之百度搜索,结果列表翻页查询

    selenium之百度搜索,结果列表翻页查询 by:授客 QQ:1033553122 实例:百度搜索,结果列表翻页查询 解决问题:解决selenium driver获取web页面元素时,元素过期问题 ...

  3. Centos7下搭建SVN服务,本地提交代码自动同步到WEB目录

    1.安装SVN服务[root@bogon ~]# yum -y install subversion 2.查看svnserve安装目录[root@bogon ~]# whereis svnserves ...

  4. Yii1.1.16学习记录

    最近工作中用到Yii框架,为此专门在网上找了些相关教程学一下,尽管教程比较老,但学完后至少对Yii框架有了基本了解,特别是widget的使用,感觉Yii真的很强大. 一.框架介绍与安装 框架源码下载 ...

  5. MVC model验证 获取验证错误信息

    public static class ModelStateExtensions { /// <summary> /// 获取model验证错误信息 /// </summary> ...

  6. 关于MySQL checkpoint

    Ⅰ.Checkpoint 1.1 checkpoint的作用 缩短数据库的恢复时间 缓冲池不够用时,将脏页刷到磁盘 重做日志不可用时,刷新脏页 1.2 展开分析 page被缓存在bp中,page在bp ...

  7. Linux MySql 安装与配置

    为什么选择MySQL数据库? 毫无疑问,绝大多数的使用linux操作系统的大中小型互联网网站都在使用MySQL作为其后端的数据库存储,从大型的BAT门户,到电商平台,分类门户等无一例都使用MySQL数 ...

  8. 百度-淘宝-360搜索引擎搜索API

    百度(baidu) Api地址:http://suggestion.baidu.com/su?wd=设计&p=3&cb=window.bdsug.sug window.bdsug.su ...

  9. 通信原理之OSI七层参考模型(一)

    1.什么是计算机网络 谈计算机通信原理当然离不开计算机网络,那么什么是计算机网络.官方定义:计算机网络是由两台或两台以上的计算机通过网络设备连接起来所组成的一个系统,在这个系统中计算机与计算机之间可以 ...

  10. JS操作DOM节点大全

    1.Javascript删除节点 在Javascript中,只提供了一种删除节点的方法:removeChild(). removeChild() 方法用来删除父节点的一个子节点. 语法:parent. ...