NeoRuTayE's blog

Tags · ACM

Home

About

Archives

🧸

ACMCC++组合数学

HDU4015 - Mario and Mushrooms( The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup E题)

Mario and Mushrooms 一道数学题,和pzc推了差不多一小时的式子,结果还是错了OTZ,遂看题解 然后发现这题其实就是直接把Raney引理套一套就行了(Raney引理又是什么神仙???) Raney引理: 设整数序列A={Ai,i=1,2,…,N},且部分和为Sk=A1+,…,+Ak,序列中的所有的数字之和为Sn=1;则在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均大于零。 一篇文章: HDOJ4105和raney引理 所以当时为什么不直接打表 代码如下: #include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include ..

Read more
loading..
ACMCC++图论拓补排序反向建图

HDU2647 - Reward

Reward 其实就是用拓补排序判一下环,但需要注意两点:一是反向建图。这主要是为了计算奖金时的方便,因为反向建图就可以从奖金最少的那个人出发,遍历整个图,逐步累加得到答案;如果是正向建图,则需要先找到奖金最少的那个人,将他作为起点......二是这道题其实是根据每个点(人)在图中的深度来确定每个点(人)的奖金的。已下图为例: 3和4的深度是一样的,所以两者的奖金也一样。因此,不能简单地认为,如果可以拓补排序了,答案就是888 + (n * (n - 1)) / 2 代码如下: #include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <a..

Read more
ACMCC++图论并查集拓补排序

HDU1811 - Rank of Tetris

Rank of Tetris   根据题单的提示,这是一道拓补排序+并查集的题目,然而我并不会拓补排序......所以这里先写一下拓补排序相关的东西吧......   首先,拓补排序是对一系列有先后顺序的“活动”的排序。何为“有先后顺序的‘活动’”?举个例子,假如现在某人要穿衣服,那他必须要先穿内衣再穿中间的毛衣,最后再穿外套。拓补排序就是使用有向无环图(DAG)来对这些有先后顺序的活动进行排序,得到一个可行的顺序。对于同一系列的活动,可能有多于一种顺序可以使他们满足拓补排序。这跟穿衣服时可以先穿裤子再穿毛衣然后再穿外套,也可以先穿毛衣再穿裤子然后穿外套是一样的。   拓补排序的实现:先找出入度为0的点,然后将这个点以及与这个点相连的边删除,并将与这个点直接相连的点的入度都减一。再找出当前入度为0的点,重..

Read more
1234569