@2368860385
2020-11-07T03:01:58.000000Z
字数 719
阅读 218
衢州
2018.8.8
预计:100 + 0 + 0
实际:40 + 0 + 0
想了一会儿,先写40分暴力。
记录cnt[x][y]为x与y说了多少句话。
ti[x][y]为x与y最近一次说话的时间。
ans[x]为x的巨轮。
然后在加入信息的时候 与 删除信息时可以O(1)修改cnt与ti数组,然后ans好像改变的最多又有4个,于是可以做到O(n),然后,发现空间开不下,于是直接O(n)更新ans,O(n)计算答案,时间复杂度O(n^2)。
然后继续上面的思路,如果把这些用到的,插入到set里,最多插入k个,空间就可以开下了。
开n个set,自定义比较函数先按说话多少排序,然后按最近的时间排序,每次就可以直接取出set.begin()更新ans。然后如果x又一次和y说了话,那么y已经在x里了,如何找到。于是又定义了一个set,元素一样,按id排序,于是可以二分到这个元素,顺便得到这个元素的说话条数,与说话时间,然后在第一个set里二分找到,然后更新两个set就行了。更新完了然后对可以改变的ans判断一下,有没有增加或者减少Answer(就是这里!情况特别多!)
于是开始写,写到还剩1个半小时,不过大样例,想先去看看后面的,但是又感觉写了很多了,不忍放弃,而且后面的好像也不简单,于是写数据生成器,对拍,找到没想到的情况加上,直到过了大样例。稍微对拍了下,交了。
最后还剩半个小时,想到一个枚举全排列的做法。没时间调出了。
感觉第一个可以,也没时间写了。
总结:
1、应该先写T2,T3的暴力。
2、写T1的时候很混乱,很多情况没想到。
2、T1的情况太多了,太难写:
1、换种思路,换种角度处理。
2、数据生成器,生成各种情况。