UVA 12096(幾種容器的使用)
題意:有幾種操作(如下圖),然後給定一些操作,問最後棧頂的集合中有幾個元素
AC程式碼:
#include<iostream> #include<cstdio> #include<string> #include<set> #include<stack> #include<map> #include<vector> #include<algorithm> #define ALL(x) x.begin(),x.end() #define INS(x) inserter(x,x.begin()) //插入迭代器 using namespace std; typedef set<int> Set; map<Set,int> IDcache; //把集合對映成ID vector<Set> Setcache; //根據ID取集合 stack<int>s; int ID(Set x) //查詢給定集合x的ID。如果沒找到,分配一個新的ID { if(IDcache.count(x)) return IDcache[x]; Setcache.push_back(x); //新增新集合 return IDcache[x]=Setcache.size()-1; } int main() { int T; scanf("%d",&T); while(T--) { int N; scanf("%d",&N); for(int i=0;i<N;i++) { string op; cin>>op; if(op[0]=='P') s.push(ID(Set())); else if(op[0]=='D') s.push(s.top()); else { Set x1=Setcache[s.top()]; s.pop(); Set x2=Setcache[s.top()]; s.pop(); Set x; if(op[0]=='U') set_union(ALL(x1),ALL(x2),INS(x)); else if(op[0]=='I') set_intersection(ALL(x1),ALL(x2),INS(x)); else { x=x2; x.insert(ID(x1)); } s.push(ID(x)); } cout<<Setcache[s.top()].size()<<endl; } cout<<"***"<<endl; } return 0; }
相關推薦
UVA 12096(幾種容器的使用)
題目題意:有幾種操作(如下圖),然後給定一些操作,問最後棧頂的集合中有幾個元素AC程式碼:#include<iostream> #include<cstdio> #include<string> #include<set> #i
總結:c++幾種容器的用法及棧和佇列(適合自學c++的同學)
1.string型別用法 還可以比較大小如a>b,如果a的字典序大於b的返回1,否則返回0 getline(cin,s);讀取一行string型別 string s2(s1)將s2初始化為s1的副本 或m="123";m+="456";cout<<
STL中有哪幾種容器
C++ 之高效使用STL (STL 容器的選擇) : 你知道C++中有很多你可以支配的容器,但是你意識到有多少嗎?要確定你沒有忽略你的選項,這裡有一個快速回顧。 •標準STL序列容器:vector、string、deque和list。 •標準STL關聯容器:set、mult
STL 幾種容器的比較優缺點
1、set和map比較\setmap共同點都是無序的儲存元素,只是通過它提供的藉口對裡面的元素進行訪問,底層都是採用紅黑樹實現不同點集合,用來判斷某一個元素是不是在一個組裡面,使用的比較少對映,相當於字
深入研究Spring-IoC :容器建立的幾種方式
1.前言 本文為對tiny-spring的學習解讀,程式碼參考自tiny-spring。一個手寫的Spring簡易版框架。 前面已經提到了Spring IOC容器的建立大致分為3個步驟。但是這個三個步驟是有一個演進的過程的,Spring容器建立方式前後有6種,從最基本的例項化建立
你必須知道的幾種java容器(集合類)
一、基本概念 Java容器類類庫的用途是“持有物件”,並將其劃分為兩個不同的概念: 1)Collection:一個獨立元素的序列,這些元素都服從一條或者多條規則。 List必須按照插入的順序儲存元素,而set不能有重複的元素。Q
Docker進入容器的幾種方法
進入容器的幾種方法: 1、exec 通過docker ps 檢視需要進入的容器pid 執行 &nb
SpringIOC容器初始化之後,和銷燬之前幾種方法的執行順序
1.搭建一個簡單的Spring環境 2.定義一個介面及其實現類 package com.roger.service; public interface SpringLifeCycleService { void springLifeCycle(); } package co
C++STL幾種常用容器簡要歸納
本文參考李煜東《演算法競賽進階指南》,筆者作歸納總結。 本文將簡要介紹STL中vector,queue,priority_queue,deque,set,multiset,map,bitset八種容器及其操作方法。 vector 使用此容器需在程式前加上標頭檔
Docker容器跨主機通訊的幾種方式
前言:Docker的5種網路模式 Bridge 此時docker引擎會建立一個veth對,一端連線到容器例項並命名為eth0,另一端連線到指定的網橋中(比如docker0),因此同在一個主機的容器例項由於連線在同一個網橋中,它們能夠互相通訊。容器建立時還會自
spring給容器中註冊元件的幾種方式,1.包掃描+元件標註註解[email protected](
給容器中註冊元件; 1)、包掃描+元件標註註解(@Controller/@Service/@Repository/@Component)[
Tomcat容器管理安全的幾種驗證方式
https://my.oschina.net/itblog/blog/678845?fromerr=mnnjJA0O 摘要: 本文介紹如何使用容器(這裡指tomcat)來進行安全管理。 當訪問伺服器中受保護的資源時,容器管理的驗證方法可以控制確認使用者身份的方式。T
Spring容器建立物件的幾種方式及其區別
1. 通過類路徑下的配置檔案獲取ApplicationContext //在建立容器的時候建立物件 特點:佔用記憶體,但效率高 ApplicationContext ac=new ClassPathXmlApplicationContext("cl
Spring容器中定義Bean幾種初始化方法和銷燬方法
Spring 容器中的 Bean 是有生命週期的,Spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前
使用STL vector的幾種清空容器(刪除)辦法
轉載自:http://blog.csdn.net/metalkittie/article/details/3115750 vector <int> vecInt; for (int i=0;i<500;i++) { vecInt.push_bac
Spring容器中的Bean幾種初始化方法和銷燬方法的先後順序
Spring 容器中的 Bean 是有生命週期的,spring 允許 Bean 在初始化完成後以及銷燬前執行特定的操作。下面是常用的三種指定特定操作的方法: 通過實現InitializingBean/DisposableBean 介面來定製初始化之後/銷燬之前的操作方法;
Spring-- Ioc 容器Bean例項化的幾種場景
Bean例項化的幾種場景 1、BeanDefinitionRegistryPostProcessor例項化:標準BeanFactoryPostProcessor的擴充套件,BeanFactoryPostProcessor的作用是用來進一步定義註冊的BeanDefiniti
STL中幾種常用容器比較
list支援快速的插入和刪除,但是查詢費時; vector支援快速的查詢,但是插入費時。 map查詢的時間複雜度是對數的,這幾乎是最快的,hash也是對數的。 如果我自己寫,我也會用二叉檢索樹,它在大部分情況下可以保證對數複雜度,最壞情況是常數複雜度,而std::m
SpringIOC容器建立物件及依賴注入的幾種方式
Spring IOC容器SpringIOC容器:是spring的核心內容作用:建立物件,處理物件的依賴關係IOC容器建立物件幾種方式:1、呼叫無參構造<bean id="user" class="edu.cloud.spring.entity.User"><
幾種常見web 容器比較 (tomcat、 jboss 、resin、 weblogic、 websphere、 glassfish)
tomcat,Jboss,weblogic容器的作用 Apache:全球應用最廣泛的http伺服器,免費,出自apache基金組織 Tomcat:應用也算非常廣泛的web伺服器,支援部分j2ee,免費,出自apache基金組織 JBoss:開源的應用伺服器,比較受人喜愛,免費(文件要收費)