常用技巧精选(1)再三题 POJ3279 POJ3684 POJ2785 - Jecvay Notes



POJ 3279 (开关问题 + 状态压缩)

如果说poj3276是一维的开关问题, 那么这题是二维的开关问题. 在一维问题中, 可以直接由第一个元素往后计算出所有元素的开关状态, 在本题中, 以每一个小个子为一个元素进行计算是不行的, 因为一个格子的状态会影响他周围格子的状态, 更为本质的说, 存在这样的情况使得后面的状态影响了前面的状态, 因此想找出一个拓扑序向下计算是困难的. 《挑战》书中给出了一种降维的思想解决了这个问题. 每行为一个元素, 枚举第一行可能的所有状态, 然后推出其余行的状态.

这里是一种无损降维, 因此使用的编程手段和状态压缩是一样的, 可以使用二进制位来进行计算.

 

POJ 3684 (弹性碰撞)

在discuss里面有一句很搞笑的

这样搞下去,ICPC可以变成International Complex Physic Competition了

挺费脑的地方是要想出他和"Ants"这道题的区别所在. Ants碰撞返回是没有半径的. 这里不仅有半径, 而且每个球下落的时间是不一样的, 所以从下往上每一个球的净碰撞次数都少一次, 因此最后i号球的位置要加上2Ri, 所谓净碰撞, 意思就是往下碰一次往上碰一次就相当于半径为0的碰撞了, 是不用加上2R的. 想通这个真是费劲.

 

POJ 2785 (双向搜索之折半枚举)

这题的思路和平时手算某些东西的时候思路是很相像的, 所以算法也很好理解, 代码也很好写, 就是运行起来要6579MS.

上面代码运行的结果是

0x46d010 0x46d004
3


Read full article from 常用技巧精选(1)再三题 POJ3279 POJ3684 POJ2785 - Jecvay Notes


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts