zoukankan      html  css  js  c++  java
  • 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别人需要很严谨的思路,是很不错的锻炼方法。

  • 相关阅读:
    linux shell在while中用read从键盘输入
    ubuntu14.04折腾迅雷xware
    select与epoll分析
    ubuntu 14.04下练习lua
    C++中的重载、覆盖、隐藏
    删除ubuntu旧内核
    fcntl函数加文件锁
    系统中断与SA_RESTART
    linux使用共享内存通信的进程同步退出问题
    leetcode-easy-others-268 Missing Number
  • 原文地址:https://www.cnblogs.com/liuaohan/p/5687363.html
Copyright © 2011-2022 走看看