USACO Section 2.3 Controlling Companies - Xavier's Blog



USACO Section 2.3 Controlling Companies - Xavier's Blog

明明是一道难度不大的题,我却做了N天才做出来,惭愧惭愧!看到题的第一想法就是如果A控制了B,就把B所占有的股份传给A以及A的母公司,并且这样递归下去。可自己编程会发生股份重复计算的情况,解决方法是当将B的股份更新到A上时(通过母公司的关系找到A),如果之前A已经直接或间接控制了B,那么如果再加就算是重复计算了。但在判断A是否直接或间接控制B时,又要判断是否有环。

后来在网上找到了一种解法:当发现A控制B时,将B的股份传给A,如果发现增加股份之后,A中的股份[A][i] > 50 并且A还没有控制i,则将(A, i)加入队列。一直循环操作,直至队列为空为止。

官方的解题报告中,其实就是我一开始想的递归的方法,他在更新(A, B)时:

  1. 如果A已经控制B,退出

  2. 若没有,control[A][B] = 1

  3. 将B的股份传给A

  4. 枚举已控制了A的i,递归更新(i, B)

  5. 枚举A的股份[A][k],如果大于50,递归更新(A, k)


Read full article from USACO Section 2.3 Controlling Companies - Xavier's Blog


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