首页 > 代码库 > 【解题报告】2014ACM/ICPC上海赛区现场赛B

【解题报告】2014ACM/ICPC上海赛区现场赛B

唉  谷歌出的神题,差点爆零了。。。三小时终于A掉 B题

 

题目大概是说从左上角的点出发,经过某路线最后回到原点,求每个格子被路线包含的圈数的平方和。

首先可以知道,对于某个格子来说,从该格子的任意一个方向划一条射线,路径穿过该射线的次数就等于该格子被包含的圈数(正穿和反穿抵消)。

然后开一个100w的数组保存每个格子的上面那条线被向右走过的次数。模拟出路径,然后填满数组。求格子的圈数就等于这个格子和它上面所有格子里面填的值的和。然后全部平方加起来就可以了。

有一个点就是可以把高和宽中较短的那一条翻转到上边变成宽,使得模拟路径填数组的时候不会超时。

 

。。感觉写的不太好,不过自己想一想应该没问题吧,不难的题。

【解题报告】2014ACM/ICPC上海赛区现场赛B