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
后缀数组,求不重叠重复子串的个数
只要会后缀数组的就会这道题了,详情看罗穗骞的《后缀数组》
大水题,求最小公倍数
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
后缀数组,求不重叠重复子串的个数
只要会后缀数组的就会这道题了,详情看罗穗骞的《后缀数组》
相关文章推荐
- ECNU第四届程序设计竞赛解题报告
- 山东省第四届ACM大学生程序设计竞赛解题报告(部分)
- 2014年山东省第五届ACM大学生程序设计竞赛解题报告
- 2017广东工业大学程序设计竞赛决赛【解题报告】[补完√]
- 2015 中国大学生程序设计竞赛解题报告
- 第十一届北京师范大学程序设计竞赛解题报告
- 华侨大学第三届程序设计大赛基础组决赛解题报告
- UESTC-第五届ACM趣味程序设计竞赛第四场(正式赛)--不完全解题报告
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛 解题报告
- 2015 CQU 重庆大学程序设计竞赛 解题报告
- 华东交通大学2013ACM“双基”程序设计竞赛 解题报告
- 浙江省第8届程序设计竞赛解题报告
- UESTC 第五届ACM趣味程序设计竞赛第四场(正式赛) 解题报告
- 华东交通大学2014年ACM“双基”程序设计竞赛解题报告
- 华东交通大学2014年ACM“双基”程序设计竞赛解题报告
- 2013级新生程序设计基础竞赛-正式赛 F 异或最大值 解题报告
- 福州大学第十三届程序设计竞赛_重现解题报告
- 河南省第七届ACM大学生程序设计竞赛 解题报告
- UESTC 第五届ACM趣味程序设计竞赛第一场(热身赛,非原创题) 解题报告
- 2016年第四届湘潭大学新生趣味程序设计竞赛 解题报告(动态规划)