您的位置:首页 > 其它

ECNU第三届程序设计竞赛解题报告

2014-05-12 10:05 489 查看
A 找祖先

大水题,求最小公倍数

B 电梯停靠

这次坑了无数人的题,被时限卡得跟什么似的。

设上了x次,下了y次,上去是u层,下来时d层,最后停靠在t层,那么

x+y =n

t=ux-dy

把1式x=n-y代入2式,得t+dn=(u+d)x,所以t是满足dn加某数是(u+d)的倍数的最小的数

即 t = (dn/(u+d) + 1)*(u+dn) –dn

最后注意一下不能呆在0层就好。

C 循环素数

打个表然后判断一下就好

D XML

栈的应用,遇到<a>入栈,</a>出栈,前面的空格数就是栈的深度

E 字符串的公约数

数据超级弱,暴力或者扩展kmp都可以做

F 神奇三角形

设up(n)表示n年后向上的三角形有多少个;down(n)表示n年后向下的三角形有多少个。

两种做法:

1.
暴力

即 up(n) = 3*up(n-1)+down(n-1);

Down(n) =up(n-1) + 3*down(n-1);

会超时!!然后矩阵二分幂加速

|| ;

2.对上面两个式子操作一下

两式相加up(n)+down(n)= 4(up(n-1)+down(n-1)),等比,

即up(n)+down(n) = 4*(up(n-1)+down(n-1)) = 16*(up(n-2)+down(n-2)) =… =4^n

同理,两式想减

up(n)-down(n)= 2^n

再把这两个式子相加减:up(n) = (4^n+2^n)/2;down(n) = (4^n-2^n)/2;

最后注意一下乘法取模(a*b*c)%d = ((a*b)%d*c)%d就好

G 密码器

传说的数学大牛可以秒收这道题,可以直接算到

可惜我不会,tt

下面说计算机怎么搞

设4个状态0红,0蓝,1红,1蓝,分别编号0,1,2,3。可知0-3矛盾,1-2矛盾

设dp
[4]表示到第n个节点每种状态各有多少个

则 dp
[0] = dp[n-1][0]+dp[n-1][1]+dp[n-1][2]

dp
[1] = dp[n-1][0]+dp[n-1][1]+dp[n-1][3]

dp
[2] = dp[n-1][0]+dp[n-1][2]+dp[n-1][3]

dp
[3] = dp[n-1][1]+dp[n-1][2]+dp[n-1][3]

我设初始化状态是dp[1][0] = 1,其余dp[1][1]=dp[1][2]=dp[1][3] = 0;

那么最后的结果便是(dp
[0]+dp
[1]+dp
[2])*4

注意结果很大,需要大数

H平方根

很坑的一道题,lz说二分写超时了,sqe说没考虑进位,我邪恶的笑了…

思路很简单,我把每一位都精确到,那就是说这时候的数的平方刚好不超过N;

可以用9~0试乘

比如35 8,要求精确到小数后8位

首先算整数部分 5

算小数第一位 5.9^2= 34.81 <35,可以确定第一位就是9

算小数第二位 5.99^2= 35.8801 > 35

5.98^2 = 35.7604 > 35

5.97^2 = 35.6409 > 35

……

5.92^2 = 35.0464 > 35

5.91^2 = 34.9281 < 35
确定第二位是1

以此类推:5.91607978

算到第m+1位是3

最后考虑进位的影响

Hint : 9998(1) =99.98进位后100.0

I Alice and Bob’s Game

Dp+博弈

当最后是连通图的时候是P态

状态压缩,设dp
[odd][even][cnt]表示现在有n个连通分量,其中奇数的有odd个,偶数的有even个,连通块内部还可以连多少个,(其实这个z只要关心奇偶性就好

看到这里就很好写了,转移方程就不写了

J Good substrings

后缀数组,求不重叠重复子串的个数

只要会后缀数组的就会这道题了,详情看罗穗骞的《后缀数组》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: