失恋阵线同盟 - jiyanfeng1的专栏 - 博客频道 - CSDN.NET



失恋阵线同盟 - jiyanfeng1的专栏 - 博客频道 - CSDN.NET

[description] 莉莉安女学园的少女们,今天也带着无垢的笑容,穿过等身高的校门。但是,鲜为人知的是,每个少女都暗恋着另一位同学。而害羞的少女们都没有对对方表白。也许是怕说出以后,得到的回答不是自己希望听到的吧。毕竟,大多数人是单恋,而像A喜欢B,B喜欢C,C喜欢D,。。。,F喜欢G,G又喜欢A这种情况也是很常见的。假设没有人自恋。一些少女自发组成了"失恋阵线同盟",目的为了互相鼓励,得到意中人的认可。组成同盟唯一的条件是,"同盟"中的任意两个人不能有"喜欢"的关系,也就是"互不喜欢"。现在,告诉你每一位少女恋慕的对象,请计算一下,"失恋阵线同盟"的人数,最大有多大? 
  
[input] 输入分两行。第一行是一个自然数N。(2<=N<=1000000)  第二行包含N个自然数a[1],a[2],...,a[N],以空格隔开。(1<=a[i]<=N,a[i]!=i) a[i]=j表示:少女i喜欢少女j。 
  
[output] 输出一个自然数s,s是"同盟"的最大大小。 即:求最大的s,使得:存在相异整数b[1],b[2],...,b[s](都在1..N的范围内),使得:{a[b[1]],a[b[2]],...,a[b[s]]}与{b[1],b[2],...,b[s]}没有交集。 
  
[sample input] 

2 3 4 2 6 5 
  
[sample output] 

  
[hint] 第一位少女没人喜欢,她可以加入;因为2,3,4是一个圈圈,所以她们中间只能选1个人;5,6互相喜欢,所以只能选一个人。一种可能的选法是选{1,3,5}四人组成同盟。 
  
[hint2] 如果存在K使得N>=3K,那么至少可以选出K个人组成同盟。可以证明。 


思路:

本问题等价于求解最大独立集。构建一个图,图的每个节点代表一个学生,如果两个学生之间有喜欢或者被喜欢的关系,那么他们之间连一条边。求最大失恋同盟,等价于求解最大独立集。注意,此题假设女同学们都是同性恋。


Read full article from 失恋阵线同盟 - jiyanfeng1的专栏 - 博客频道 - CSDN.NET


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