-
【洛谷_T145300】【2020.8.24NOIP模拟赛】这是一棵树吗?
2020-08-24 15:57:10但DD随后发现自己算错了度数序列,QQ说的是对的。DD很奇怪为什么QQ反应得这么快。 现在给出一个图的度数序列,你需要做的就是像QQ一样:判断这是否可能是一棵树的度数序列。 输入格式 输入只有一行,首先给出一个...【2020.8.24NOIP模拟赛】这是一棵树吗?
题目描述
DD和QQ在玩游戏,DD在地上画了一棵树(图论中的树),然后他告诉QQ这棵树的度数序列。QQ马上说这不是一棵树。DD认为自己被QQ鄙视了,他们吵了起来。
但DD随后发现自己算错了度数序列,QQ说的是对的。DD很奇怪为什么QQ反应得这么快。
现在给出一个图的度数序列,你需要做的就是像QQ一样:判断这是否可能是一棵树的度数序列。
输入格式
输入只有一行,首先给出一个整数 N,表示顶点个数,后面跟着 N 个整数,表示这个图的度数序列,每个数不超过 100。
输出格式
如果输入可能是一棵树的度数序列,则输出“Possible”,否则输出“Impossible”。
输入输出样例
输入 #1
1 0
输出 #1
Possible
输入 #2
2 1 1
输出 #2
Possible
输入 #3
3 2 2 2
输出 #3
Impossible
输入 #4
3 1 2 1
输出 #4
Possible
说明/提示
对于 100% 的数据,有 1≤N≤100。解题思路
这道题虽然看起来数据不大,只有 1≤N≤100 的数据,基本上可以用O(n2)乃至O(n3)的算法,然而这道题的正解是O(n)的数学方法,我的O(n2)暴力也才70,WA了3个点
(虽然有可能是我本身的问题)…毒瘤出题人YMW!那么这道题应该怎么做呢?我们先分析题目,题目中所谓的 “度” 很明显是入度+出度。我们想一想如何用度表示点的数量:对于每个点来说,入度只有可能是1,也就是它的父亲(这是一棵树)。那么我们对于每个点的度 -1,累加后 +2 即可。为什么要 +2 呢?一个是根节点没有父亲,另一个是根节点本身也是一个点(PS:为什么要单独说根节点呢?我们这里的度除去入度后剩下的是它的出度,也就是儿子,是不包括它本身的,除了根节点以外的点的值都在计算它的父亲是计算过了)
如果累计后的值正好等于节点数,那么它就有可能。
实际上还有个特判:当n==1时,唯一的度只能为0
代码:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n,a,ans; int main() { cin>>n; if(n==1) { scanf("%d",&a); if(a==0) printf("Possible"); else printf("Impossible"); return 0; } for(int i=1;i<=n;i++) { scanf("%d",&a); if(a==0) { printf("Impossible"); return 0; } a--; ans+=a; } if(ans+2==n) printf("Possible"); else printf("Impossible"); }
-
我们要不要在 JS 使用二进制位运算?
2020-12-09 05:22:44别吐槽这么去测试有什么意义,自己真的写代码的时候基本没人会去使用位移操作。来,打开 Console 看例子: <a href="http://lishengzxc.github.io/bblog/Bitwise-Shift.html">... -
php高级开发教程说明
2008-11-27 11:39:22行是干什么用的,它们在什么条件下执行,它们所要求的设置。即使你缺乏背景知识,遇到了 一个错综复杂的算法,你也能很快看出它所从事的任务,以及它的风格。 举个例子,然后说“照着做”总是很容易的,但我想这一章... -
操作系统期末试卷与答案
2009-12-30 11:02:22当一个进程处于就绪状态等待获得CPU运行时,它的优先数以α的比例变化(如在就绪状态等待时间为t,则它的优先数=原来的优先数+(t*α));当一个进程处于运行状态时,它的优先数以β的比例变化。所有进程进入就绪队列... -
win版apache防ddos mod_dosevasive22
2016-05-19 11:10:54这种方式在单点攻击和分布式多点攻击的状况下都能很好工作,但如同其它的防黑软件一样,只是针对于那些对网络带宽和处理器消耗的攻击,所以这就是为什么我们要推荐你将它与你的防火墙和路由器配合使用,因为这样才能... -
C++程序员面试宝典
2013-04-01 13:36:19许多开发者对C/C++语言及其底层原理掌握不牢固,在面试过程中经常漏洞百出,无法取得好成绩。而招聘单位为了得到高素质的员工往往采用各种形式的面试考察求职者,这让面试难度大大增加。求职者要想成功应聘,不仅... -
JavaScript Table行定位效果
2009-05-20 22:59:13后两个的转换还可以接受,所以在设置frame之前还是判断一下border先。 【获取背景色】 如果td是背景透明的话显然不太美观,最好是找一个合适的颜色来填充。 程序用的方法是,从当前td开始找,如果背景是透明的话... -
语言程序设计课后习题答案
2012-12-27 17:02:37const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。 2-5 请写出C++语句声明一个常量PI,值为3.1416;再声明一个浮点型变量a,把PI的值赋给a。 解: const float PI... -
你必须知道的495个C语言问题
2015-08-22 15:18:111.4 extern 在函数声明中是什么意思? . . . . . . . . . . . . . . . . . 2 1.5 关键字auto 到底有什么用途? . . . . . . . . . . . . . . . . . . . 2 1.6 我似乎不能成功定义一个链表。我试过typedef struct f ... -
你必须知道的495个C语言问题(PDF)
2009-09-15 10:25:471.4 extern 在函数声明中是什么意思? . . . . . . . . . . . . . . . . . 2 1.5 关键字auto 到底有什么用途? . . . . . . . . . . . . . . . . . . . 2 1.6 我似乎不能成功定义一个链表。我试过typedef struct f ... -
flash shiti
2014-03-14 10:32:4118.Flash中TRANSFORM表示什么面板? A. 信息面板 B. 填充面板 C. 描边面板 D. 变形面板 19.Flash插入(Insert)菜单中,Key Frame表示? A. 删除当前帧或选定的帧序列 B. 在时间线上插入一个新的关键帧 C. ... -
JavaScript 中是如何比较两个元素是否 "相同" 的
2021-01-10 01:54:22其实它在 underscore 内部是这样判断的: <pre><code> javascript var a = /a/; var b = new RegExp("a"); var _a = '' + a; // => /a/ var _b = '' ... -
Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好
2011-01-28 17:02:08面再提示缺少什么dll 文件,都像这样解决就可以了。 二、Qt Creator 编写多窗口程序(原创) 实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直 接关闭这个对话框,便不能进入主窗口,整个程序... -
springmybatis
2015-09-05 06:54:283. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 ... -
如何编写批处理文件批处理文件批处理文件
2010-04-14 10:36:10用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,... -
c语言编写单片机技巧
2009-04-19 12:15:17答:在设计高频电路用电路板有许多注意事项,尤其是GHz等级的高频电路,更需要注意各电子组件pad与印刷pattern的长度对电路特性所造成的影响。最近几年高频电路与数位电路共享相同电路板,构成所谓的混载电路系统... -
乐优商城.xmind
2019-03-31 17:26:39它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 select select * from category c where c.pid = #{pid} CollectionUtils.isnotblank 判断集合是否为空 测试 可以利用url直接查询数据库... -
PHP基础教程 是一个比较有价值的PHP新手教程!
2010-04-24 18:52:44之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅相关文档。 PHP的语法与C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言... -
〖程序设计基础〗练习题2及答案
2011-05-30 14:39:3128.现有两个类A、B,以下描述中表示B继承自A的是( )。 A) class A extends B B) class B implements A C) class A implements B D) class B extends A 29. 下列算法中,不能用来排序的算法是( )。 A) 冒泡法 B) 插入... -
深入浅出 Koa 原理
2021-01-08 14:41:42表示Request和Response自身的方法会委托到Context中。 <p>Context中有两部分,一部分是自身属性,主要是应用于框架内部使用,一部分是Request和Response委托的操作方法,主要为提供给用户更... -
枸杞的由来和技术栈
2021-01-02 15:11:32如果你是在一年前对 React Native 浅尝辄止,那我建议不妨今天再去看看。 最遗憾的事情还是由于音乐版权的原因枸杞并不能上架,所以我也没有经验谈谈 React Native bundler 和 codepush 这两个功能。 ...
收藏数
21
精华内容
8