POJ3687 - Labelling Balls
Labeling Balls 一道拓补排序的题,虽然a了但是是看题解过的......存在的疑问已在注释中标明
Read moreHDU4015 - 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 moreHDU4020 - Ads Proposal(The 36th ACM/ICPC Asia Regional Shanghai Site —— Warmup J题)
Ads Proposal 网上有用树状数组做的,但我对树状数组非常不熟......所以只能用比较暴力的做法,set+前缀和OTZ(其实也写了一个树状数组的,只不过基本就是在抄题解hhhhhhh)
Read moreHDU5926 - Mr. Frog’s Game( 2016CCPC东北地区大学生程序设计竞赛E题)
Mr. Frog’s Game 因为数据量很小,所以直接暴力即可。先检查一下有没有相邻的可以消除,再检查一下同一条边界上可以消除的(根据游戏规则,如果两个方块可以消除且不相邻,只有可能在同一条边界上)
Read moreHDU5924 - Mr. Frog’s Problem( 2016CCPC东北地区大学生程序设计竞赛C题)
打表可知,答案就是输入的那两个数,只要按照题目要求的顺序输出即可。
Read moreHDU5922 - Minimum’s Revenge(2016CCPC东北地区大学生程序设计竞赛A题)
Minimum’s Revenge 因为边权是两个数之间的lcm,而对于所有的数,1和任意数的lcm都是最小的,故只需要求2 + 3 + 4 + 5 + ...... + n即可
Read moreCodeforces Round #544 (Div. 3)
A - Middle of the Contest 这没什么好说的了吧......
Read moreHDU2647 - Reward
Reward 其实就是用拓补排序判一下环,但需要注意两点:一是反向建图。这主要是为了计算奖金时的方便,因为反向建图就可以从奖金最少的那个人出发,遍历整个图,逐步累加得到答案;如果是正向建图,则需要先找到奖金最少的那个人,将他作为起点......二是这道题其实是根据每个点(人)在图中的深度来确定每个点(人)的奖金的。已下图为例: 3和4的深度是一样的,所以两者的奖金也一样。因此,不能简单地认为,如果可以拓补排序了,答案就是888 + (n * (n - 1)) / 2 代码如下: #include <cstdio> #include <iostream> #include <cstring> #include <cmath> #include <a..
Read moreHDU1811 - Rank of Tetris
Rank of Tetris 根据题单的提示,这是一道拓补排序+并查集的题目,然而我并不会拓补排序......所以这里先写一下拓补排序相关的东西吧...... 首先,拓补排序是对一系列有先后顺序的“活动”的排序。何为“有先后顺序的‘活动’”?举个例子,假如现在某人要穿衣服,那他必须要先穿内衣再穿中间的毛衣,最后再穿外套。拓补排序就是使用有向无环图(DAG)来对这些有先后顺序的活动进行排序,得到一个可行的顺序。对于同一系列的活动,可能有多于一种顺序可以使他们满足拓补排序。这跟穿衣服时可以先穿裤子再穿毛衣然后再穿外套,也可以先穿毛衣再穿裤子然后穿外套是一样的。 拓补排序的实现:先找出入度为0的点,然后将这个点以及与这个点相连的边删除,并将与这个点直接相连的点的入度都减一。再找出当前入度为0的点,重..
Read more【C++学习笔记】虚函数(虚方法)
介绍 对于一个派生类以及他的基类,若两者都有一个相同名字的方法,但这两个方法的实际行为并不相同,那应将这个方法声明为虚方法(virtual)。原因在于,如果方法是通过引用或指针调用的,在不声明位虚方法的情况下,程序将根据引用类型或指针类型确定使用的是具体哪个方法。而声明为虚方法,程序将根据引用或指针具体所指向的对象的类型来调用方法 e.g. 使用引用来调用方法 首先是不使用虚函数的情况 #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cctype> using namespace std; class Human{ ..
Read more