SRM 603

来源:互联网 发布:mac切换繁体中文 编辑:程序博客网 时间:2024/04/29 04:57

250:

给一棵树,两个人玩游戏,轮流切断一条边,然后选择留下一个连通块,最后会剩下一个点,第一个人想最后剩下来的点的点权最大,第二个人想让他最小,问最后剩下的点的点权

智商题啊,,,答案就是最大的叶子。。知道结果后,想想就清楚了。

500

给定n k,求有多少的长度为n的“字符串”对 A B,满足A + C = C + B

各种讨论之后可以得到A B是循环同构的(还是不影响大家的思考的独立性了 = =)

因此直接乱搞之。。

1000

给两个数组(告诉你生成方法,其实可以认为是随机的)

然后任意排列这两个数组,之后

for(int i = 0; i < n; i++) {

   c[i] = a[i] + b[i];

}

.,然后问你C数组里面的众数以及这个数出现的次数,有多个出现次数最多的数时挑数字大的数。

这个题的

有一个很恶搞的方法。

数据随机的话很多数的出现次数不会很多,就假设为10次好了。那么我们可以利用这个进行暴力

具体暴力的方法就是

for(int i =1 ;i <= 10; i++) {

出现次数 >= i的就为 1次,否则为0次

进行卷积

}

这样子卷积之后的结果,对于出现次数为(a,b)的两个数会算到了min(a, b)次,也就是所有的出现次数<=10的数已经不用考虑了,>10的数已经考虑了10次。

接下来的数暴力算就好了。


https://github.com/becauseofyou/Contests/blob/master/Topcoder/srm603/SumOfArrays.cpp

0 0