20190806

今天的比赛题制作了A题和B题。。。
A题读完题我就想到用分治去解决。序列分治题的关键就在于合并。只要得出一个简单结论:一段序列的or前缀和只有log2(ai)钟不同的取值。但我老感觉是这是一道数据结构题。。。因为之前做过NOI风格的序列题大都是数据结构题,不会简单地只考分治,一般在这题题意的基础上还要有m个修改和查询操作,可以用线段树平衡树之类的解决。一开始我总想用一个简单的二叉搜索树来维护集合,后来才反应过来不需要这么麻烦,只需要一个106大小的vis数组就完事了,因为ai的取值范围不超过106。我没能1A是因为忽略了ai or和的范围是220而不是106,到自己写对拍数据生成器的时候才反应过来。浪费了一些时间。
B题图论题,没什么思维含量,也不需要什么图论算法,只不过是搜索。结果我一遍写完的代码有2个小bug,我比赛结束前没能A掉这道题,比赛结束4分钟后A了。我要吐槽的是这个题的数据挺弱的,我比赛结束后试着提交了一个O(n2)的代码结果竟然A了。。。和我已经写的O((n+m)*(h+t))的程序用时竟然一样。。。直接枚举一个点所有相邻点的所有相邻点这是O(n2)的,在极端数据下会被卡掉,我可以hack我自己的那份暴力代码。不过实话说图论题很多时候时间复杂度都是玄学,出题人造数据挺麻烦的,很多出题人图省事直接随机图,刻意制造的极端数据也只能卡掉一部分复杂度不对的算法,毕竟不同的人建图连边的顺序或者遍历图的顺序都是不一样的。所以有时候可以指望“暴力出奇迹”。
写题的过程中发现自己的问题:
运算符优先级忘了,多亏有-wall提醒。
指针+结构体 实现的数据结构忘了怎么写了。这些天写的都是数组实现的指针。指针的使用还是需要练练,毕竟有些时候指针更灵活一些。

自己暑假的健身目前还没什么效果,这些天还是应该规律作息,身体健康是第一位的。明天坚决不熬夜了。
目前这些天比赛题里面见到莫比乌斯反演的那道数论题和蜘蛛的那道数据结构优化建模的图论题还没有实现一下。我还是先把之前学过的算法都过一遍吧。

猜你喜欢

转载自blog.csdn.net/AWESOME_CDX/article/details/98672469
今日推荐