第一届NjtechCCSCPC题解
1.1/2序列
Tip: 1.答案显然只与2出现的位置有关
2.记录每一个2出现的位置与2的总数sum,若2的总数为奇数输出-1否则输出第sum/2个2的位置,
3.记得初始化第0个2出现的位置或者进行特判.
4.考察点:指针
参考代码:
2.默契测试
Tip: 1.每有一个相同的数字默契值乘2
2.每轮游戏的默契值不重置
3.当超过上限时应当停止计算
4.若使用暴力搜索,时间复杂度将可能达到O*10^8导致TLE,使用平衡二叉树记录每轮的数字将时间复杂度优化至最大O*10^6,或使用空间换时间的方式,开一张10^6大小的表,每轮重置一次时间复杂度最大O*10^5*2
5.考察点 二叉搜索,时空优化
参考代码:
3.A+B?
Tip: 1.高精度计算
2.做不出来要想想是不是平时代码写少了
参考代码:
4.南京工业大学之旅
Tip: 1.从这题开始上难度了
2.显然是求最短哈密顿路径的有向图版本
3.求最短哈密顿路径没有高效算法,所以题目给的n只有18
4.你可以尝试剪枝dfs和状压dp两种思路,剪枝能不能剪到不TLE就看你的本事了
5.初始化所有位为不可能达到的大值,状压dp第一维记录到达的点,第二位记录最后到达的点,dp[1][1]=0,dp数组中保存的是当前到达这些点的最短路劲长度,不包括回初始点的路径长。dp公式为dp[i][j]=min(dp[i][j],dp[pre][k]+path[k][j])pre为i的第j位置零后的值。完成dp后找出dp[(1<<n)-1][i]+a[i][1]的最小值,输出答案即可。
6.考察点:状压dp,剪枝dfs,图论
参考代码:
5.开学考试
Tip: 1.纯粹的数论题,巨大的数据以及模数是质数是告诉你要用快速幂和乘法逆元了
2.考察点:递推公式转通项,矩阵快速幂,乘法逆元
参考代码:
感谢AlexZhang提供的第四题源代码