海事东北赛&&全国邀请赛总结

来源:互联网 发布:阿里云 公网流量费用 编辑:程序博客网 时间:2024/04/28 01:25

总结:
1.B题卡时间过长,没有注意到数据的全面性:数据的输入顺序可能会影响到结果!
2.F题最后没有做出来。原因是平常训练没有加强时间观念的训练!导致一些能够想出来但是有些复杂的DP没有时间去写完。赛场上没有时间一步步演算推导得到dp公式后再去写代码。要养成随敲随想的习惯。
3.至少有两个人非常清楚思路的时候再开始敲题,这样才能在卡题的时候不慌张,至少保证思路的正确性!
A.题意:已知起始点和终点坐标,两者间距离为曼哈顿距离。现在要从起点出发,走到终点附近,采用n种武器中的一种对终点进行攻击。每种武器有自己的攻击范围和攻击力(每次攻击掉的血量),终点有自身的血量。行走1个单位或攻击一次算作一个回合,问至少多少个回合能攻下终点。
解法:枚举每种武器的攻击代价,取最小值即可
B.题意:求两个1-n序列全排列序的差。比如1,2,3排列序为1;1,3,2排列序为2,以此类推。
解法:求每个序列的全排列序。设第序列为a[1,2…n],则该全排列序为rank[a[i]]Anini,rank[a[i]]是a[i]在a[i],a[i+1]…a[n]中的排序。即求a[i]后面比a[i]小的数的个数。从后往前扫描,将元素依次放入set中,依次查找每个数在set中的排序即为该点的rank值。复杂度:O(n*logn)。
G.题意:已知一个序列a[1,2…n],给定若干组询问x,y,z。求yi=xa[i]xorz
思路:想到先求x到y的a数组和。当z的二进制某位是1时,求和会变化。只要统计a[x…y]中该位是1的数目即可得到变化值
解法:
1.求sum[i][j]:前i个数中二进制第j位是1的个数。
这个扫描每个数的位数即可。复杂度O(n*logN)。
2.求sum2[i]:前i个数的和
3.扫描z二进制的每一位。如果第j位是1,那么前y项和变化为(ysum[y][j])(1<<j)sum[y][j](1<<j)
前x-1项和变化将y变成x-1即可得到。相减即可得到总变化值,再加上sum2[y]-sum2[x-1]即可得到答案。
H.模拟。略去
L.求1-n每个数的因子和f(i)。
用后项递推可以得到,复杂度:O(n*logn)

0 0
原创粉丝点击