codeforces 699B Bomb

http://www.codeforces.com/contest/699/problem/B

 

在n*m的矩阵中有若干个特殊点,问能否找到一个点,使所有特殊点都和其在同一行或同一列。m,n<=1000

很简单的题目,不过我当时就大意了,以为很简单没有想清楚就开始敲。敲完了一看,诶?不对!然后就gg了。

看了看room里的写法,加上我的不外乎三种。

第一种最gg的写法就是一堆if else。先看看是不是一个点都没有或者只有一个点;如果有多于一个点的话,先找一个点,然后对所有其他点,

如果既不在同一行也不再同一列就不行,如果在同一行的话,在用其他点确定列 balabala。。

这种写法普遍是最长的而且pass的人都花了很长时间,我也很佩服这种写法需要的严谨逻辑思维。不过显然是最倒霉的写法。

第二种最标准的写法就是依次判断每一个点能否是目标点。判断方法又有两种。

最简单的就是此列和此行的点数等于总点数。只要记录每一行吗,每一列的点数,在对这个点容斥一下就ok了。最短最快而且最不容易出错。

另一种就是我的奇葩写法,只要除了这一行这一列别的地方没有点就行了。然后就用了前缀和和容斥查区间和。。比较麻烦。

 

另外这一场我最后lock B题的选择没有错,有很多fst的。不过我一个都没有hack成。hack别人需要很严谨的思路,是很不错的锻炼方法。

posted @ 2016-07-20 10:27  lyxxx  阅读(364)  评论(0编辑  收藏  举报