比赛链接: 新秀杯 ACM程序设计大赛决赛
比赛还算成功,算上友情参赛,总共有7个题目有人通过,第一名最后成绩为5题,虽然离我想的差一点。不过还是不错~~
A 从头再来
只需要简单的统计单词A中每个字母出现的次数,与B中每个字母出现的次数做比较即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
B 挖掘机技术哪家强
~~连接DF,那么ADF的面积为正方形的一半,也是矩形的一半,正方形的面积就等于矩形的面积。
AE=a*a/b; DE=sqrt(a*a-AE*AE)
1 2 3 4 5 6 7 8 9 |
|
C YogyKwan的iPhone也弯了
假设半径为r,t
为输入的数据那么可以写出如下等式:
r*sin(pi-15/r/2)=t/2
我们可以知道,当r
越大时候,t
就会越小,于是我们可以二分判定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
D 强迫症改变世界
不妨用 f(k)
来表示摆放k
个座位的方案数。我们可以把这些方案分成两类:最后一个座位是坐女生,或者最后一个座位是坐男生。如果是前一种情形,则我们只需要看前k–1
座位有多少摆法就可以了;如果是后一种情形,那么倒数第二个座位必须是女生,因而这种情形下的方案数就取决于前 k–2
个座位的安排方案数。因此我们得到, f(k) = f(k – 1) + f(k – 2)
其中f[1]=2,f[2]=3;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
E 强迫症改变世界2
此题需要先会容斥定理, n
以内a,b
的倍数的个数有, sum=n/a+n/b-n/lcm(a,b)
;
然后我们枚举出所有的只含有4
或者7
的数字(大概1000
个),然后去掉是前面出现过得数的倍数的数(如44
是4
的倍数) 大概还剩下不到600
个,看起来很大,因为容斥定理的复杂度是2^n
次方,但是,此题r
的范围不是小,我们在做lcm
的时候,很快就会超过范围,就不需要继续向下了,然后我们从大往小做,大概只需要递归10
万次左右。
剩下的可以参考代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|
F 不幸的程序员II
矩阵快速幂,如果你还不会这个,那么该先去学习矩阵快速幂。
简单公式推导如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
|
G 你是一个好人
概率DP,我们假设dp[i][j]
表示前i次表白收集了j张不同卡的概率,那么很明显:
i==1,j==1
时 dp[1][1] = 1
;
i<j
, dp[i][j] = 0;
(一共都不到j张,怎么收集)
那么dp[i+1][j] = dp[i][j]*(j/n)+dp[i][j-1]*(n-(j-1))/n
;
第一个表示第i+1
收集的与之前的j
张是一样的,第二个表示第i+1
次收集的与前j-1
个不同,那么就就多收集了一个,变成j
个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
|
H 最萌身高差
此题为树状数组的 YY 题。。。
首先我们考虑若 β
固定的情况,那么根据同模的性质。。如果 a%p == b%p
那么 |a-b| = k * p
这样预处理一下,只要找到模相同的个数,就能知道有多少组了。。此题 β
很小,那么我们维护各个余数的前缀和就可以求个分别余数的区间和了。。。,因为此题要求支持修改,那么我们就使
用树状数组(如果你还不会,那么赶紧学起吧)就可以满足要求了。。、、
关键是怎么去修改更新;修改了一个数,我们需要一增一减,余数为 a% β
的减一, (a + p)% β
的加 1.. 这样就可以很好的查找和维护了。。
β
不一样? 但是β
很小啊,我们再增加一维?这么做会MLE,那么我们离线处理每个β
跑一次就好了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
|
I Missing教大家画矩形
模拟题目,确定一个矩形只需要对角线确定, 所以找出最小,最大的x值和y值就行了 题目虽然简单,但是如果写法不好,也会被坑~ (此题来自于Missing)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
以上题目均为过测试数据的程序,不保证程序完全正确无误. Thanks for reading…