首页 > ACM题库 > HDU-杭电 > hdu 3301 False Perceptions待解决[解题报告]C++
2014
03-16

hdu 3301 False Perceptions待解决[解题报告]C++

False Perceptions

问题描述 :

“There is no denying the clues. They are clearly there; you can’t miss them. But are we interpreting the clues correctly? That is where the author tricks us. There are most definitely more than one way to look at a clue and what it signifies, but the way the author has laid them out, (like a breadcrumb trail) we are inclined to believe they lead us to the end conclusion . . ."

You have been reading Harry Potter series for some time. Since the final book will not be out in the store until 2007, and you are curious about what could happen in the final book of the series, you have decided to do some guessing by yourself. After rereading the series for some days, you have divided every piece of information you currently have into three categories:

A.
Extracts. Extracts are taken from the previous published books in the series, and you don’t need to check for their validities;
B.
Assumptions. Assumptions are based on different interpretations of other assumptions / extracts from the books. An assumption is plausible if and only if some of the assumptions (or extracts from the book) this assumption relies on are interpreted in ways that support this assumption. No assumption requires itself to be plausible, whether directly or indirectly.
C.
Theories. Theories are based on extracts and assumptions. If all the extracts and assumptions one theory depends on are believable and interpreted to support this theory, then we say this theory can be argued as believable.

Note that extracts and assumptions may have many different exclusive explanations leading to other theories and/or assumptions.

Because of personal preferences, you want to see some scenes in the next book come true much more than the others, thus you have assigned different values to different theories, each being an exponent of 2, less or equal to 2(number of theories-1) . You want to know what the maximal possible value of theories that can be argued as believable at the same time is; furthermore, since the less guesswork you do, the more reliable your theories are, you are interested in the minimum number of explanations you must make to make all those theories acceptable. Can you accomplish this seemingly impossible task?

输入:

The input consists of several cases, each followed by a blank line.

Each test case starts with three integers N , M and K (1<=N<=1000, 1<=M<=5000, 1<=K<=100) , the number of extracts from the book, the number of assumptions and the number of theories, respectively.

The following part describes extracts and assumptions. Extracts are always described before assumptions. Each description starts with one string S , the name of the extract / assumption, and an integer T in the next line, the number of different explanations you have come up with; T lines follow, on each line there is a string X , the explanation which leads to another assumption / theory.

The next part of test case consists of K descriptions of theories. Each description starts with one string S , the name of the theory, followed by one integer P , the value which you have assigned to this theory.

Two successive descriptions are separated by a line with one single character `-’. It is guaranteed that the total numbers of explanations which extracts and assumptions have does not exceed 50000, and you may assume every string’s length is less or equal to 20, and only consists of letters from alphabet and numbers 0…9 .

N = 0 , M = 0 , K = 0 indicates the end of input file and should not be processed by your program.

输出:

The input consists of several cases, each followed by a blank line.

Each test case starts with three integers N , M and K (1<=N<=1000, 1<=M<=5000, 1<=K<=100) , the number of extracts from the book, the number of assumptions and the number of theories, respectively.

The following part describes extracts and assumptions. Extracts are always described before assumptions. Each description starts with one string S , the name of the extract / assumption, and an integer T in the next line, the number of different explanations you have come up with; T lines follow, on each line there is a string X , the explanation which leads to another assumption / theory.

The next part of test case consists of K descriptions of theories. Each description starts with one string S , the name of the theory, followed by one integer P , the value which you have assigned to this theory.

Two successive descriptions are separated by a line with one single character `-’. It is guaranteed that the total numbers of explanations which extracts and assumptions have does not exceed 50000, and you may assume every string’s length is less or equal to 20, and only consists of letters from alphabet and numbers 0…9 .

N = 0 , M = 0 , K = 0 indicates the end of input file and should not be processed by your program.

样例输入:

2 3 1 
Extract1 
2 
Assumption1 
Assumption2 
-
Extract2 
2 
Assumption2 
Assumption3 
-
Assumption1 
2 
Assumption2 
Theory1 
-
Assumption2 
0 
-
Assumption3 
1 
Theory1 
-
Theory1 
1 

0 0 0

样例输出:

Case 1: 
1 
4 
Theory1


  1. 想想,军委副主席。。。。能收买一个小国的军委副主席也不容易了,也就战乱国家有可能,中国这种。。。。你不拿出半年GDP的成本,不太可能啊

  2. 题本身没错,但是HDOJ放题目的时候,前面有个题目解释了什么是XXX定律。
    这里直接放了这个题目,肯定没几个人明白是干啥