• poj.2419.Forests (枚举 + set用法)


    Forests
    Time Limit: 1000MS   Memory Limit: 65536K
    Total Submissions: 5782   Accepted: 2218

    Description

    If a tree falls in the forest, and there's nobody there to hear, does it make a sound? This classic conundrum was coined by George Berkeley (1685-1753), the Bishop and influential Irish philosopher whose primary philosophical achievement is the advancement of what has come to be called subjective idealism. He wrote a number of works, of which the most widely-read are Treatise Concerning the Principles of Human Knowledge (1710) and Three Dialogues between Hylas and Philonous (1713) (Philonous, the "lover of the mind," representing Berkeley himself).

    Input

    A forest contains T trees numbered from 1 to T and P people numbered from 1 to P. Standard input consists of a line containing P and T followed by several lines, containing a pair of integers i and j, indicating that person i has heard tree j fall.

    Output

    People may have different opinions as to which trees, according to Berkeley, have made a sound. Output how many different opinions are represented in the input? Two people hold the same opinion only if they hear exactly the same set of trees. You may assume that P < 100 and T < 100.

    Sample Input

    3 4
    1 2
    3 3
    1 3
    2 2
    3 2
    2 4
    

    Sample Output

    2
    

    Source

     1 #include<stdio.h>
     2 #include<set>
     3 #include<string.h>
     4 using namespace std;
     5 
     6 set <int> a[110] ;
     7 bool flag [110] ;
     8 int t , p ;
     9 //set <int> :: iterator it  ;迭代器
    10 
    11 int main ()
    12 {
    13     //freopen ("a.txt" , "r" , stdin ) ;
    14     memset (flag , 0 , sizeof(flag) ) ;
    15     scanf ("%d%d" , &t , &p ) ;
    16     int i , j ;
    17     int cnt = 0 ;
    18     while (~ scanf ("%d%d" , &i , &j) ) {
    19         a[i].insert (j) ;
    20     }
    21     for (int i = 1 ; i < p ; i++) {
    22         if (flag[i] == 0) {
    23             flag[i] = 1 ;
    24             for (int j = i + 1 ; j <= p ; j++) {
    25                 if (a[i] == a[j]) {
    26                     flag [j] = 1 ;
    27                 }
    28             }
    29             cnt ++ ;
    30         }
    31     }
    32     printf ("%d
    " , cnt ) ;
    33     return 0 ;
    34 }
    View Code

    从师兄们那学来的orz ,首先知道了如何把set中的元素输出:

    set <int> ::iterator it ;

    for (it = a.begin () ; it <= a.end () ; i++ )

      printf ("%d " , *it ) ;

    ----------接下来是如何判断两个set集合相等----------

    简单粗暴orz:

    set <int> a , b ;

    if (a == b) {

      puts ("Yes") ;

    }

    else {
      puts ("No") ;

    }

  • 相关阅读:
    DQL2.3.开始使用Dgraph基本类型和操作
    DQL2.7.开始使用Dgraph模糊搜索
    启动时查看配置文件application.yml
    从源码角度,带你研究什么是三级缓存
    Spring Boot 在启动时进行配置文件加解密
    论Redis分布式锁的正确使用姿势
    SpringBoot中整合Redis、Ehcache使用配置切换 并且整合到Shiro中
    在项目中,如何保证幂等性
    给你的SpringBoot做埋点监控JVM应用度量框架Micrometer
    从源码层面带你实现一个自动注入注解
  • 原文地址:https://www.cnblogs.com/get-an-AC-everyday/p/4363794.html
Copyright © 2020-2023  润新知