第一轮第一题:彩色的树
给定一棵n个节点的树,节点编号为1, 2, …, n。树中有n - 1条边,任意两个节点间恰好有一条路径。这是一棵彩色的树,每个节点恰好可以染一种颜色。初始时,所有节点的颜色都为0。现在需要实现两种操作:
1. 改变节点x的颜色为y;
2. 询问整棵树被划分成了多少棵颜色相同的子树。即每棵子树内的节点颜色都相同,而相邻子树的颜色不同。
输入格式
第一行一个整数T,表示数据组数,以下是T组数据。
每组数据第一行是n,表示树的节点个数。接下来n - 1行每行两个数i和j,表示节点i和j间有一条边。接下来是一个数q,表示操作数。之后q行,每行表示以下两种操作之一:
1. 若为"1",则询问划分的子树个数。
2. 若为"2 x y",则将节点x的颜色改为y。
输出格式
每组数据的第一行为”Case #X:”,X为测试数据编号,从1开始。
接下来的每一行,对于每一个询问,输出一个整数,为划分成的子树个数。
输入样例
2
3
1 2
2 3
3
1
2 2 1
1
5
1 2
2 3
2 4
2 5
4
1
2 2 1
2 3 2
1
输出样例
Case #1:
1
3
Case #2:
1
5
数据范围
1 ≤ T ≤20
0 ≤ y ≤ 100000
小数据
1 ≤ n, q ≤ 5000
大数据
1 ≤ n, q ≤ 100000
解题思路
对于每个节点,记录其直接的子节点的颜色分布。在修改一个节点的颜色同时,修改其父节点的子节点颜色分布。记a和b分别是修改颜色前后,与当前节点同色的邻居节点个数,那么答案增加a - b。
第一轮第二题:建造金字塔
在二次元中,金字塔是一个底边在x轴上的等腰直角三角形。
你是二次元世界的一个建筑承包商。现在有N个建造订单,每个订单有一个收益w,即建造此金字塔可获得w的收益。对每个订单可以选择建造或不建造。
建造一个金字塔的成本是金字塔的面积,如果两个或多个金字塔有重叠面积,则建造这些金字塔时重叠部份仅需建造一次。
建造一组金字塔的总利润是收益总和扣除成本。现给出这些订单,请求出最大利润。
输入格式
输入数据第一行为一个整数T,表示数据组数。
每组数据第一行为一个整数N,表示订单数目。
接下来N行,每行三个整数x, y, w,表示一个订单。(x, y)表示建造出的金字塔的顶点,w表示收益。
输出格式
对于每组数据输出一行”Case #X:Y”,X表示数据编号(从1开始),Y表示最大利润,四舍五入到小数点后两位。
输入样例
3
2
2 2 3
6 2 5
3
1 1 1
2 2 3
3 3 5
3
1 1 1
2 2 3
3 3 6
输出样例
Case #1:1.00
Case #2:0.00
Case #3:1.00
数据范围
1 ≤ T ≤ 20
0 ≤ w ≤ 107
小数据
1 ≤ N ≤ 20
0 ≤ x, y ≤ 20
大数据
1 ≤ N ≤ 1000
0 ≤ x, y ≤ 1000
解题思路
解法一:把建造金字塔看作用一条水平延伸的折线覆盖金字塔顶点的过程,折线段的斜率为1或-1,或者重合与x轴。设f(x, y)为折线右端点在(x, y)时的最大收益,按x递增顺序递推。
解法二:把所有金字塔按右端点横坐标排序。设f(i)为建造1到i - 1中的某些金字塔,并且一定建造i的最大收益;g(i)为建造1到i - 1中的某些金字塔,而不建造i的收益。递推时注意处理完全包含在i中的金字塔。
第一轮第三题:质数相关
两个数a和 b (a<b)被称为质数相关,是指a × p = b,这里p是一个质数。一个集合S被称为质数相关,是指S中存在两个数质数相关的数,否则称S为质数无关。如{2, 8, 17}质数无关,但{2, 8, 16}, {3, 6}质数相关。现在给定一个集合S,问S的所有质数无关子集中,最大的子集的大小。
输入格式
第一行为一个数T,为数据组数。之后每组数据包含两行。
第一行为N,为集合S的大小。第二行为N个整数,表示集合内的数。
输出格式
对于每组数据输出一行,形如”Case #X:Y”。X为数据编号,从1开始,Y为最大的子集的大小。
输入样例
3
5
2 4 8 16 32
5
2 3 4 6 9
3
1 2 3
输出样例
Case #1:3
Case #2:3
Case #3:2
数据范围
1 ≤ T ≤20
集合S内的数两两不同且范围在1到500000之间。
小数据
1 ≤ N ≤15
大数据
1 ≤ N ≤1000
解题思路
所有整数可以按照质因子个数的奇偶性分为两部分,按照质数相关构造二分图,答案为n - 二分图的最小覆盖数。
第二轮第一题:扑克牌
一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若干张,请计算将它们排成一列,相邻的牌面值不同的方案数。
牌的表示方法为XY,其中X为面值,为2、3、4、5、6、7、8、9、T、J、Q、K、A中的一个。Y为花色,为S、H、D、C中的一个。如2S、2H、TD等。
输入格式
第一行为一个整数T,为数据组数。
之后每组数据占一行。这一行首先包含一个整数N,表示给定的牌的张数,接下来N个由空格分隔的字符串,每个字符串长度为2,表示一张牌。每组数据中的扑克牌各不相同。
输出格式
对于每组数据输出一行,形如”Case #X:Y”。X为数据组数,从1开始。Y为可能的方案数,由于答案可能很大,请输出模 264之后的值。
输入样例
5
1 TC
2 TC TS
5 2C ADAC JC JH
4 AC KCQC JC
6 AC ADAS JC JD KD
输出样例
Case #1:1
Case #2:0
Case #3:48
Case #4:24
Case #5:120
数据范围
1 ≤ T ≤20000
小数据
1 ≤ N ≤ 5
大数据
1 ≤ N ≤ 52
解题思路
记一组牌中,有n4个数字出现了4次,n3个数字出现了3次,n2个数字出现了2次,n1个数字出现了1次。设f(n1, n2, n3, n4)为不考虑花色时,相邻牌不同数字的排列总数。f可以利用容斥定理递推求解。
第二轮第二题:攻城略地
A、B两国间发生战争了,B国要在最短时间内对A国发动攻击。已知A国共有n个城市(城市编号1, 2,…, n),城市间有一些道路相连。每座城市的防御力为w,直接攻下该城的代价是w。若该城市的相邻城市(有道路连接)中有一个已被占领,则攻下该城市的代价为0。
除了占领城市,B国还要摧毁A国的交通系统,因而他们需要破坏至少k条道路。由于道路损毁,攻下所有城市的代价相应会增加。假设B国可以任意选择要摧毁的道路,那么攻下所有城市的最小代价是多少?
输入格式
第一行一个整数T,表示数据组数,以下是T组数据。
每组数据第一行包含3个整数n, m, k。
第二行是n个整数,分别表示占领城市1, 2, …, n的代价w。
接下来m行每行两个数i, j,表示城市i与城市j间有一条道路。
输出格式
对于每组数据输出一行,格式为”Case #X:Y”。X表示数据编号(从1开始),Y为答案。
输入样例
2
4 4 2
6 5 3 4
1 2
1 3
2 3
2 4
4 4 4
6 5 3 4
1 2
1 3
2 3
2 4
输出样例
Case #1:7
Case #2:18
数据范围
1 ≤ T ≤30
k ≤ m
0 ≤ w ≤ 108
小数据
1 ≤ n ≤ 1000
0 ≤ m ≤ 5000
大数据
1 ≤ n ≤ 106
0 ≤ m ≤ 106
解题思路
首先,假设图中有c个连通分量,对于每一个联通分量,只需要占领其中代价最小的节点(记为S)。如果在删除k条边后,不能保证所有联通分量仍然联通,那么意味着会增加新的联通分量,只需加上除了S以外代价最小的n + k - m - c个节点。
第二轮第三题:八卦的小冰
小冰是个八卦的人,最近她对一个社交网站很感兴趣。
由于小冰是个机器人,所以当然可以很快地弄清楚这个社交网站中用户的信息啦。
她发现这个社交网站中有N个用户,用户和用户之间可以进行互动。小冰根据用户之间互动的次数和内容判断每对用户之间的亲密度。亲密度非负,若大于零表示这两个用户之间是好友关系。由于这个网站是活跃的,所以小冰会不停地更新用户之间的亲密度。
由于隐私保护,小冰无法知道每个用户的确切性别,但是作为一只很聪明的人工智能,小冰可以通过每个用户的行为来猜测性别。当然这种猜测是不准确的,小冰有可能会改变对一个用户的判断。
小冰想知道这个社交网络的八卦度是多少。八卦度的定义是社交网络中所有异性好友之间的亲密度之和。你能帮助她吗?
输入格式
第一行一个整数T,表示数据组数。接下来是T组数据,每组数据的格式如下:
第一行是三个整数N, M, Q,分别表示用户数、初始的好友对数、操作数。
第二行是N个空格隔开的数,第i个数表示i号用户的性别,用0或1表示。
接下来的M行,每行三个数x, y, z,代表初始状态用户x和用户y之间的亲密度是z。除此之外的用户之间的亲密度初始为0。
接下来是Q行,每行是以下三种操作中的一种:
1. “1 x”:改变用户x的性别
2. “2 x y z”:改变用户x与用户y之间的亲密度为z
3. “3”:询问八卦度
输出格式
对于每组数据首先输出一行”Case #X:”,X为测试数据编号。
接下来对于每一个询问,输出一行包含询问的八卦度。
输入样例
1
3 2 8
0 1 0
1 2 1
1 3 1
3
1 1
1 2
3
2 2 3 2
3
1 2
3
输出样例
Case #1:
1
2
2
3
数据范围
1 ≤ T ≤ 20
1 ≤ x, y ≤ N
0 ≤ z ≤ 100000
小数据
1 ≤ N, M ≤ 100
1 ≤ Q ≤ 1000
大数据
1 ≤ N, M, Q ≤ 100000
参考:http://www.wtoutiao.com/p/ebcvPp.html